从MySQL生成的复选框列表中生成“已选中”复选框的问题

时间:2010-07-30 16:17:50

标签: php mysql html

我正在使用此代码从MySQL数据库生成一组复选框。

$connection=mysql_connect ("localhost", "foo", "bar") or die ("I cannot connect to the database.");
$db=mysql_select_db ("database", $connection) or die (mysql_error());
$query = "SELECT type FROM typelist ORDER BY type ASC";
$sql_result = mysql_query($query, $connection) or die (mysql_error());
i=1;
echo "<table valign="top"><tr><td>";
while ($row = mysql_fetch_array($sql_result)) {
$type = $row["type"];
if ($i > 1 && $i % 26 == 0) 
echo '</td><td>'; 
else if ($i) 
echo ''; 
++$i; 
echo "<input style='font-size:10px;' name='type[]' type='checkbox' value='$type'><span style='color:#000;'>$type</span></input><br/>";}
echo '</td></tr></table>';

我正在解析数组,并将这些值作为逗号分隔文本转储到具有此代码块的数据库中。

$allTypes = $_POST['allTypes'];
  var_dump($allTypes);


  $allStyles = "";


  foreach ($type as $style) {

    $allTypes .= $style . ", ";
  }


  $allTypes = substr($allTypes, 0, -2);

效果很好。 我的问题出现在编辑记录页面上。我正在像以前一样生成列表,但这次我需要选中复选框,如果该复选框项已输入数据库中。

如何更改第一个代码块来执行此操作?

2 个答案:

答案 0 :(得分:0)

你说的代码会生成一个复选框列表......好吧,不生成复选框列表。我没有在您的代码中看到输入标记。我的问题是,你是如何制作这些复选框的?

答案 1 :(得分:0)

你可以用两种方式(或者更多,但是最容易做到的)来做到这一点。

Javascript方法:

如果您已经为复选框分配了ID,那么这是最简单的方法。

    document.getElementById('idOfCheckbox').checked='checked';

PHP方法:

您必须修改字符串 $ row [type] 。在结束标记之前插入 checked =“checked”。这可以通过各种方式完成,但可以使用它(或者只使用下面的代码(虽然它未经测试))。

    $row[type] = substr($row[type], 0, strlen($row[type]) - 2) . 'checked="checked" />';

但是你没有为自己做起来容易,而是将复选框存储在数据库中......为什么你甚至做到了,这没有道理?