1

我有一个复选框列表并将选中的值保存在一个数组中。但是,当有人单击“提交”并收到错误消息时,他们所有的复选框都会被遗忘。通常我会让脚本记住带有类似代码的复选框

如果复选框值 = OK { echo checked="checked"}

但是,现在我将它保存在一个数组中,我不知道该怎么做?

<?php

$sql = "SELECT merknaam FROM merken";
$result = mysql_query($sql);

while ($row = mysql_fetch_array($result)) {
    echo "&nbsp;&nbsp;<input type=\"checkbox\" name=\"merken[]\" value='" . $row['merknaam'] . "'>&nbsp;" . $row['merknaam'] . " <Br />  ";
}

?>

这是我用于复选框的代码。接下来,我使用以下代码显示数组:

$merkenstring = implode(",", $_POST['merken']);

echo $merkenstring;

结果:AC Ryan,Adidas,Agu,Cargo

我希望有人能给我一个代码示例!

4

2 回答 2

1

假设您将其发布到同一页面,并且$_POST['merken']在出现错误后仍然可用,请使用以下内容in_array()针对当前设置测试每个复选框的值$_POST

while ($row = mysql_fetch_array($result)) {
    // If the current value is in the $_POST['merken'] array
    // and the array has been initialized...
    if (isset($_POST['merken']) && is_array($_POST['merken']) && in_array($row['merknaam'], $_POST['merken'])) {
      // Set the $checked string
      $checked = "checked='checked'";
    }
    // Otherwise $checked is an empty string
    else $checked = "";
    // And incorporate it into your <input> tag
    echo "&nbsp;&nbsp;<input $checked type=\"checkbox\" name=\"merken[]\" value='" . $row['merknaam'] . "'>&nbsp;" . $row['merknaam'] . " <Br />  ";
    //----------------------^^^^^^^^^^
}

如果这被发布到不同的脚本,您将(与返回到先前脚本的任何发布值一样)需要将数组存储在其中并在您的调用中$_SESSION进行比较。$_SESSION['merken']in_array()

于 2012-07-26T15:50:16.893 回答
0

假设$row['merknaam']是复选框值,并$_POST['merken']保存一个选中复选框值的数组,那么您只需检查该值是否在数组中:

if (in_array($row['merknaam'], $_POST['merken'])) {
   // this checkbox should be checked
}
于 2012-07-26T15:51:45.553 回答