我正在使用此代码从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);
效果很好。 我的问题出现在编辑记录页面上。我正在像以前一样生成列表,但这次我需要选中复选框,如果该复选框项已输入数据库中。
如何更改第一个代码块来执行此操作?
答案 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" />';
但是你没有为自己做起来容易,而是将复选框存储在数据库中......为什么你甚至做到了,这没有道理?