簡體   English   中英

復選框勾選時數據庫不更新

[英]database not updating when checkbox ticked

編輯:抱歉取消是在數據庫中鍵入tinyint我有一個帶有1個復選框的表單 - 我希望它在檢查時更新我的​​數據庫以顯示課程被取消。 默認情況下,我的數據庫中的值為0,但是當我嘗試更新課程以取消它時,值永遠不會更改為1.請幫忙!

這是我的editForm代碼片段:

  <p><label class="field" for "Credits">Credits:</label>                      <input type="text" name="cred" size="40" value="<?php echo "$row[Credits]"?>" class="rep"></p>
             <p><label class="field" for "Cancelled">Cancelled:</label>      (Tick to cancel)   <input type="checkbox" name="canc" size="40" value="Yes" class="rep"></p>
            <input type="submit" name="submit_value" value="Update"></p>

這是我的updateCourse php頁面:

$id = $_POST["id"];

$title = $_POST["title"];
$cat = $_POST["cat"];
$loc = $_POST["loc"];
$county = $_POST["county"];
$time = $_POST["time"];
$date = $_POST["date"];
$cred = $_POST["cred"];
$fac = $_POST["fac"];

$canc = $_POST["canc"];

if(isset($_POST['submit_value'])) {

if(isset($_POST['canc'])) {
    $canc = isset($_POST['canc']) ? '1' : '0';
    $query1 = "UPDATE Course 
        SET Title = '$title',
            Category = '$cat',
            Location = '$loc',
            County = '$county',
            Course_Time = '$time',
            Course_Date = '$date',
            Credits = '$cred',
            Facilitator = '$fac'
            Cancelled = '$canc'
            WHERE CourseID = '$id' ";
    $result = $mysqli_db->query($query1);

}   else {      

    $query2 = "UPDATE Course 
        SET Title = '$title',
            Category = '$cat',
            Location = '$loc',
            County = '$county',
            Course_Time = '$time',
            Course_Date = '$date',
            Credits = '$cred',
            Facilitator = '$fac'

        WHERE CourseID = '$id' ";

$query_result = $mysqli_db->query($query2);

我的query2正在運行但query1從不更改我的數據庫中的已取消值

您在此行中的字段之間缺少一些逗號:

Facilitator = '$fac'

之后應該有一個逗號:

$query1 = "UPDATE Course 
    SET Title = '$title',
        Category = '$cat',
        Location = '$loc',
        County = '$county',
        Course_Time = '$time',
        Course_Date = '$date',
        Credits = '$cred',
        Facilitator = '$fac',
        Cancelled = '$canc'
         WHERE CourseID = '$id' ";

這會引發MySQL錯誤。 您可以使用mysql_error()來調試這些問題。 回顯或打印查詢通常也有助於發現錯誤。

http://php.net/manual/en/function.mysql-error.php

首先,太多簡單的代碼行。 你正在復制$canc的啟動。 如果你用0和1分配變量,為什么heck 2會查詢? 1更簡單,更易讀。 此外,您可以更輕松地進行調試。 其次,您需要了解PDO語句或過濾,因為您的腳本非常容易受到攻擊。 例如,您的腳本可以縮短為:

$canc = isset($_POST['canc']) ? '1' : '0';

if(isset($_POST['submit_value'])) {
    $query = "
        UPDATE Course 
        SET Title = '$title',
            Category = '$cat',
            Location = '$loc',
            County = '$county',
            Course_Time = '$time',
            Course_Date = '$date',
            Credits = '$cred',
            Facilitator = '$fac',
            Cancelled = '$canc'
        WHERE CourseID = '$id'";
    $query_result = $mysqli_db->query($query);      
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM