-1

データベースの「完了」の値を更新しようとしています。これはチェックボックスなので、データベースの変更に応じて値を 1 または 0 に更新したいのですが、これが最もクリーンな方法ではないことはわかっています。 、しかし、それが機能するようになったら、それをクリーンアップします!

ライアン

<?php
include 'core/init.php';

if(isset($_POST['Submit']))
{
$task_name = $_POST['task_name'];
$completed = $_POST['completed'];

mysql_query("UPDATE `tasks` SET `completed` = '$completed' WHERE `task_name` = $task_name");

}


$deets = $_POST['deets'];
$deets = preg_replace('#[^0-9/]#i', '', $deets);

$tasks = '';
$query = mysql_query('SELECT task_name, task_description, completed FROM tasks WHERE "'.$deets.'" BETWEEN `start_date` AND  `end_date` ');
$num_rows = mysql_num_rows($query);
if($num_rows > 0) {
    $tasks .= '<div id="tasksControl"><button onMouseDown="overlay()">Close</button> <b> ' . $deets . '</b> <br /><br /></div>';

    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 method="post">Completed? <input name="completed" type="checkbox" '.
                    ($task_completed == 1?'checked="checked"':'').
                    ' /><input type="submit" name="submit" value="Update"><br /><br />
                    <b>'.$task_name.'</b><br /><br />'.$task_description.'<hr><br />
                    <input type="hidden" value="$task_name" name="TaskName" /></form></div>';
        }
}
echo $tasks;
?>
4

2 に答える 2

0

完成した列が未チェックの場合は 0、チェック済みの場合は 1 を使用すると仮定すると、次の行を変更する必要があります。

$completed = $_POST['completed'];

チェックボックスがオフの場合、$_POST['completed'] は null/空になり、Web ブラウザはそれを送信しません。

$completed = intval($_POST['completed']);

usingintval()は 1 または 0 を強制します。

編集:

また、エスケープする必要があります$task_name

$task_name = mysql_real_escape_string($_POST['task_name']);

そして、私たちはSQLで引用します:

 "UPDATE tasks SET completed = '$completed' WHERE task_name = '$task_name'"
于 2013-04-19T03:37:51.677 に答える