0

我有一个带有复选框的while循环生成信息,我想用新的“完成”值更新数据库。如何选择生成的特定复选框。请帮助向我展示如何获取复选框和任务名称的特定值。

谢谢,瑞安

    while ($row = mysql_fetch_array($query)){
        $task_name = $row['task_name'] ;
        $task_description = $row['task_description'];
        $task_completed = $row['completed'];
        $tasks .= '<div id="tasksBody">
                    <form action="" method="post">Completed? <input name="completed" type="checkbox" '.
                    ($task_completed == 1?'checked="checked"':'').
                    ' /><input type="submit" value="Update"><br /><br />
                    <b>'.$task_name.'</b><br /><br />'.$task_description.'<hr><br /></form></div>';
        }
}
echo $tasks;
4

2 回答 2

0

您需要使用行的唯一名称来命名您的输入,例如 task_name,或者更好的是数据库记录 ID。

然后当用户提交表单时,您将使用 $_POST["YourTaskNameOrIDHere"] 来检查值。

您当前所拥有的所有复选框都称为同一件事。


编辑:对不起,您以自己的形式隔离了所有这些,我刚刚意识到这一点。您可以添加一个<input type="hidden" value="$task_name" name="TaskName" />到表单中,因此您可以查看复选框对应的内容。然后,当用户提交表单时,使用 $_POST["TaskName"] 找出任务的名称。

于 2013-04-17T22:30:10.837 回答
0

向每个包含以下内容的表单添加一个隐藏字段task_id

<form action="" method="post">
    Completed? 
    <input name="completed" type="checkbox" <?=($task_completed == 1?'checked="checked"':'')?> value="1" />
    ...
    <input name="task_id" value="<?=$task_id"?> type="hidden" />**strong text**
</form>

提交后:

if (isset($_POST['task_id']) { // form has been submitted

    $task_id = $_POST['task_id'];
    $completed = $_POST['completed'];

    $sql = "UPDATE task SET task_completed=$completed WHERE task_id=$task_id LIMIT 1";
    // code for updating database
    // better use PDO or mysqli-* instead of old and deprecated mysql_*
}
于 2013-04-17T22:38:50.107 回答