在php中动态创建和检查复选框

时间:2011-04-17 23:11:12

标签: php sql-server dynamic checkbox

我正在尝试动态创建链接到MSSQL-Database的php复选框。我们的想法是通过复选框列出表中的每个项目。从那里,用户将能够检查复选框并单击“提交”以将数据库的1字段中的值更改为“A”。我有数据库链接到PHP,它输出复选框和表值,但我不知道如何动态检查复选框,看看它们是否被检查,或从那里使用它。

1 个答案:

答案 0 :(得分:1)

这大致是您想要动态创建复选框的方法。当然有更好的方法来实现这一点(即Smarty模板)。

<html>
...
<form method="post" action="submit.php">
<?php
// connect to DB here

$result = mysql_query("SELECT l.id, l.name, u.checked FROM List l LEFT JOIN UserAnswers u ON l.id = u.list_id WHERE u.user_id = 5");
while ($row = mysql_fetch_assoc($result))
{
    echo '<input type="checkbox" name="cb_' . $row['id'] . '" ' .
        'id="cb_' . $row['id'] . '" ';
    if($row['checked'])
        echo 'checked';
    echo " />\n"
    echo '<label for="cb_' . $row['id'] . '">' . $row['name'] . "</label><br />\n";
}
?>

<input type="submit" value="Submit" />
</form>
...
</html>

submit.php有点棘手。选中复选框后,它将设置一个帖子项。但是,如果未经检查,您将无法获得任何回复,因此您需要检查数据库中是否有您期望的所有项目。

<?php

// connect to DB here
$result = mysql_query("SELECT id, name, checked FROM things");
$answers = Array();
while ($row = mysql_fetch_assoc($result))
{
    $checked = isset($_POST['cb_' + $row['id']]);
    $answers[$row['id']] = $checked;
}

// update your database here using $answers
foreach ($answers as $id => $checked)
{
    $query = "REPLACE INTO UserAnswers SET user_id=5, list_id=" . $id . ", checked=";
    if($checked)
        $query .= "1";
    else
        $query .= "0";
    mysql_query($query);
}

这一切都是我的头脑,有更好的方法来完成大部分工作。这只是一个大方向。我不保证这些。哦,它看起来很容易受到SQL注入,请注意这一点。