从while循环中抓取特定变量以进行表单提交

时间:2013-04-17 22:26:26

标签: php mysql

我有一个带有复选框的while循环生成信息,我想用新的“completed”值更新数据库。如何选择生成的特定复选框。请帮我们告诉我如何获取复选框和task_name的具体值。

谢谢,Ryan

    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;

2 个答案:

答案 0 :(得分:0)

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

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

您目前所有的复选框都调用相同的内容。


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

答案 1 :(得分: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_*
}