【发布时间】:2014-03-23 18:35:30
【问题描述】:
我创建了一个从数据库中获取值的大型复选框。问题是,我需要找到一种方法来让浏览器记住某些复选框已被选中。提交表单后,它发布值,另一个函数将发布值用于另一个函数。
这就是我创建复选框表单的方式:
$query .= "SELECT id, ediens FROM menu_edieni_otrie";
$query1 .= "SELECT id, ediens FROM menu_edieni_zupas";
echo "<body>\n";
echo "<form name='otrie_edieni' action='' method='post'>\n";
echo "<table border='1px'>\n";
echo "<tr>\n";
echo "<td>\n";
/* execute multi query */
if ($mysqli->multi_query($query)) {
if ($result = $mysqli->store_result()) {
while ($row = $result->fetch_row()) {
echo "<input type='checkbox' name='ediens2[]' value='";
printf ("%s", $row[1]);
echo "' ";
echo "/>";
printf ("%s </br>\n ", $row[1]);
}
$result->free();
}
}
echo "</td>\n";
echo "<td>\n";
if ($mysqli->multi_query($query1)) {
if ($result = $mysqli->store_result()) {
while ($row = $result->fetch_row()) {
echo "<input type='checkbox' name='zupas2[]' value='";
printf ("%s", $row[1]);
echo "'/>";
printf ("%s </br>\n ", $row[1]);
}
$result->free();
}
}
echo "</td>\n";
echo "</tr>\n";
echo "</table>";
echo "<input type='submit' name='formSubmit' value='Submit' />";
echo "</form>\n";
echo "</body>";
如何检查在按下提交按钮后选中的复选框并在之后保持选中状态 - 刷新后?
_POST 被这个函数接收:
$ediens2 = $_POST['ediens2'];
$zupas2 = $_POST['zupas2'];
if(empty($ediens2) && empty($zupas2))
{
echo("Nav ievadīta neviena vērtība");
}
else
{
$N = count($ediens2);
$M = count($zupas2);
$mysqli = @new mysqli('*', '*', '*', '*');
$mysqli->query("SET NAMES 'utf8'", $connection);
if ($mysqli->connect_errno) {
die('Connect Error: ' . $mysqli->connect_errno);
}
for($i=0; $i < $N; $i++){
$query3 = "UPDATE tmp_cirks SET name='$ediens2[$i]' WHERE id='$i'";
$mysqli->multi_query($query3);
}
/* close connection */
$mysqli->close();
$date = date('d/m/Y', time());
echo $date;
echo("<br>");
echo("<ul>");
for($i=0; $i < $N; $i++)
{
echo("<li>");
echo("<strong>" . $ediens2[$i] . "</strong>");
echo("</li>");
}
echo("</ul>");
echo("<ul>");
for($i=0; $i < $M; $i++)
{
echo("<li>");
echo("<strong>" . $zupas2[$i] . "</strong>");
echo("</li>");
}
echo("</ul>");
}
到目前为止,我发现,我将从 _POST 接收到的值存储到一个单独的数据库表中 - 使用这个:
for($i=0; $i < $N; $i++){
$query3 = "UPDATE tmp_cirks SET name='$ediens2[$i]' WHERE id='$i'";
$mysqli->multi_query($query3);
}
我在想,然后我可以比较生成的复选框表单是否有任何值存储在这个单独的表中。如果它有 - 那么它会产生“checked='checked'”功能。我在正确的轨道上吗?
数据库表如下所示: id ediens edieni_ru edieni_eng cena cena_puse otr1 Kotletes Котлеты Сutlet 2,00 1,30 otr2 Gulašs Гуляш 炖牛肉 2,20 1,40 otr3 Slinkie tīteņi Ленивые голубцы 切碎的卷心菜配炸肉末 1,70 1,15 otr4 Plovs Плов Pilaff 1,70 1,15
要生成复选框值,我只使用“ediens”列。 我创建的新表如下所示(保存值的表)。
身份证名称 1 科特莱特斯 2 古拉斯 3 卡博纳德
所以我的想法是,像这样: if (name==ediens) echo 'checked=checked'; (当然这只是一个不工作的例子)
有什么建议吗?我什至不知道我是否走在正确的轨道上。
提前感谢您的帮助!
【问题讨论】:
-
当您将它们保存到数据库时,必须有我提交值的主键,您可以将其保存在会话键中,并在页面刷新后检索该值。
-
我是 SQL 编码的新手,现在我想出了一个解决方案,但不知道如何实现它。我所做的是将检查的数据存储在 tmp 数据库表中,如果 tmp 数据库中的值等于任何复选框值,我想在页面加载时进行比较。如果是这样 - 它会生成 checked="checked" 属性。问题是我不确定如何在 php“if”语句中比较两个数据库表。
-
您是否要“记住”用户的最后一次菜单设置以及用户下次访问您的网站时,即使是几个小时后,他们也会看到他们最后的菜单选择?跨度>
-
是的,如果它在再次登录后仍能记住它,那就太好了。我现在按计划进行了一切工作,尽管用户必须保持窗口打开,以免“删除”它以前的选择。我怎样才能设法存储数据?我应该使用临时数据库吗?