2013-04-17 53 views
0

我有一個用複選框生成信息的while循環,我想用新的「completed」值更新數據庫。我如何選擇生成的特定複選框。請幫助我向我展示如何獲取複選框和task_name的特定值。從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; 
+0

你想做什麼,就請進一步解釋。 – ncm

回答

0

您需要命名的東西唯一的行,如TASK_NAME,或更好,數據庫記錄ID輸入。

然後,當用戶提交表單時,您將使用$ _POST [「YourTaskNameOrIDHere」]來檢查值。

你目前調用的所有複選框都是一樣的。


編輯:對不起,你正在孤立所有這些在他們自己的形式,我只是意識到這一點。 你可以添加的是一個<input type="hidden" value="$task_name" name="TaskName" />的窗體,所以你可以看看複選框是相對應的。然後,當用戶提交表單時,使用$ _POST [「TaskName」]找出任務的名稱。

+0

我在哪裏以及如何做到這一點? @Barrakoda – Ryan

+0

@Ryan請看我修改的編輯。起初,我誤解你在做什麼。 – K0D4

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_* 
}