0

チェックボックスを使用して情報を生成するwhileループがあり、新しい「完了」値でデータベースを更新したいと思います。生成された特定のチェックボックスを選択するにはどうすればよいですか。チェックボックスと task_name の特定の値を取得する方法を教えてください。

ありがとう、ライアン

    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 に答える