2012-06-02 39 views
0

如果選中,我無法將列更新爲yes。雖然我沒有收到任何錯誤。我究竟做錯了什麼?我已經嘗試了很多方法,包括將數組放入和退出引號。我知道如何通過一個帶有電子郵件地址的表單,而不是複選框。我也知道如何使用複選框從數據庫中刪除行。但不更新......使用複選框更新數據庫列

<?php 
     $id = $_GET['id']; 
     $select = mysql_query("SELECT * FROM volsMain WHERE ID = '$id'"); 
     $data = mysql_fetch_array($select); 
    ?> 

    <?php 
     $query="SELECT * FROM volsMain ORDER BY shift_times, position"; 
     $result = mysql_query($query) or die(mysql_error()); 
     while ($row = mysql_fetch_array($result)){  
    ?> 

    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
    <input type="hidden" name="id" value="<?php echo $id; ?>" /> 
    <input type="checkbox" name="checkinsat" value="yes"<?php 
      if($data['checkinsat'] == 'yes') echo 'checked'; ?>/> 
     <input type="submit" > 
    </form> 

    <?php 
    if ($row['saturday'] === 'A.M.') { 
     echo '<span class="amShift">'; 
    } else if ($row['saturday'] === 'P.M.') { 
     echo '<span class="pmShift">'; 
    } else { 
    echo '<span>'; 
    } 
    echo "SATURDAY:" . $row['saturday'] . '</span><br />'; 

    if ($row['sunday'] === 'A.M.') { 
    echo '<span class="amShift">'; 
    } else if ($row['sunday'] === 'P.M.') { 
    echo '<span class="pmShift">'; 
    } else { 
    echo '<span>'; 
    } 

    echo "SUNDAY:". $row['sunday'] . '</span><br />'; 
    echo "<br />SHIRT SIZE:<h2>" . $row['shirt'] . "</h2>"; 
    echo "<br />VOLUNTEER NAME:<h2>" . $row['agreeName'] . "</h2>"; 
    echo "<p>Assigned as a volunteer for:<br />" . $row['position'] . "</p>"; 
    echo "<p>Shift times are scheduled for:<br />" . $row['shift_times'] . "</p>"; 
    echo "<p>Shifts have been confirmed:<br />" . $row['confirmed'] . "</p>"; 
    echo "<p>Checked in Friday:<br />" . $row['checkinfri'] . "</p>"; 
    echo "<p>Checked in Saturday:<br />" . $row['checkinsat'] . "</p>"; 
    echo "<p>Checked in Sunday:<br />" . $row['checkinsun'] . "</p>"; 
} 
?> 

<?php 
    $checkSAT = isset($_POST['checkinsat']) ? "yes" : "no"; 
    $updateSat = mysql_query("UPDATE volsMain SET checkinsat = '$checkSAT' WHERE ID = '$id'"); 
    $query = mysql_query($updateSat); 
    $result = mysql_query($query); 
    echo "<p>" . print_r($checkSAT) . "</p>"; 
?> 
+0

試試這個 $ checkSAT =($ _POST ['checkinsat'] =='1')? 「是」:「不」;並在查詢中檢查你的變量 $ query = mysql_query(「UPDATE volsMain SET checkinsat ='$ checkSAT'WHERE ID ='$ id'」); –

+0

我已經修復了這個問題,但它仍然沒有將'checkinsat'列更新爲'是' – Commandrea

+0

嘗試打印$ _POST,看看您在'checkinsat'鍵中有什麼價值。 –

回答

0

哥!

  1. 您是否注意到您在循環中放置了表單標籤? 檢查生成的網頁的視圖源,看看有多少HTML表單標籤在那裏顯示? 它是一個錯誤的方法將HTML表單標籤放入循環中。您應該使用表單元素上的循環代替。

  2. 而不是在DB列中保存是/否,我建議保存1 & 0值。

1
$checkSAT = isset($_POST['checkinsat']) ? "yes" : "no"; 
+0

沒有運氣,那個...... – Commandrea

+0

你能顯示那個錯誤 –

+0

我沒有收到錯誤嗎?也許我有錯誤查詢不正確? – Commandrea

0
SET checkinsat = '$checkSAT' ... 

變量是區分大小寫的PHP。

+0

$ query = mysql_query(...); $ result = mysql_query($ query); //我認爲$ query應該是一個字符串,而不是資源。 – luish

0

只是通過快速看着它,那也許是因爲你的代碼:

$updateSat = mysql_query("UPDATE volsMain SET checkinsat = '$checkSAT' WHERE ID = '$id'"); 

...應改爲:

$updateSat = mysql_query('UPDATE volsMain SET checkinsat = ' . $checkSAT . ' WHERE ID = ' . $id . ''); 

同樣應該去:

$select = mysql_query("SELECT * FROM volsMain WHERE ID = '$id'"); 

到:

$select = mysql_query('SELECT * FROM volsMain WHERE ID = ' . $id . ''); 

這裏是什麼,可以肯定的是,雖然簡略:

$updateSat = mysql_query("UPDATE volsMain SET checkinsat = '$checkSAT' WHERE ID = '$id'"); 
$query = mysql_query($updateSat); 
$result = mysql_query($query); 

$ updateSat不是純粹的SQL查詢不應該在「mysql_query」中調用。如果你想它被命名爲$ result,只需要:

 $result = mysql_query("UPDATE volsMain SET checkinsat = '$checkSAT' WHERE ID = '$id'");