簡體   English   中英

PHP PDO - 如何使用已包含當前數據庫值的單選按鈕值更新數據庫?

[英]PHP PDO - How do I update the Database with Radio button values which already contain the current database value?

更新為更相關。

我對 PHP 相當陌生,如下所示。 但是我目前正在生成數據庫並將值存儲在單選按鈕中,然后我希望更改為發送新值並更新數據庫,但是我正在努力尋找有關使用 PHP 進行更新的任何材料。 代碼還有更多內容,因為這只是相關位的一個片段。 所有開括號也有相應的閉括號。

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $stmt = $conn->prepare("Select SID, ClassID,StudentName, Week_1, Week_2, Week_3, Week_4, Week_5, Week_6, Week_7, Week_8, Week_9, Week_10 FROM weekbyweek");

$stmt->bindColumn('SID', $SID);
$stmt->bindColumn('ClassID', $ClassID);
$stmt->bindColumn('StudentName', $StudentName);    
$stmt->bindColumn('Week_1', $week_1);
$stmt->bindColumn('Week_2', $week_2);
$stmt->bindColumn('Week_3', $week_3);
$stmt->bindColumn('Week_4', $week_4); 
$stmt->bindColumn('Week_5', $week_5);
$stmt->bindColumn('Week_6', $week_6);
$stmt->bindColumn('Week_7', $week_7);
$stmt->bindColumn('Week_8', $week_8);
$stmt->bindColumn('Week_9', $week_9);
$stmt->bindColumn('Week_10', $week_10);

   $stmt->execute();

 print ("<form action='Table/Update2.php' method='post'><tr>");

            //print a cell
            print ("<td> $SID </td>");
            print ("<td> $ClassID </td>");
            print ("<td> $StudentName </td>");
    // print the radio buttons
            print ("<td> $week_1 <input type='radio' value='1' name=" . $name1 ." " . (($week_1 == '1')? 'checked=\"checked\"' :"") .  "><input type='radio' value='0' name=" . $name1 ." " . (($week_1 == '0')? 'checked=\"checked\"' :"") .  "></td> ");
            print ("<td> $week_2 <input type='radio' name=" . $name2 ." " . (($week_2 == '1')? 'checked=\"checked\"' :"") .  "><input type='radio' name=" . $name2 ." " . (($week_2 == '0')? 'checked=\"checked\"' :"") .  "></td> ");
            print ("<td> $week_3 <input type='radio' name=" . $name3 ." " . (($week_3 == '1')? 'checked=\"checked\"' :"") .  "><input type='radio' name=" . $name3 ." " . (($week_3 == '0')? 'checked=\"checked\"' :"") .  "></td> ");
            print ("<td> $week_4 <input type='radio' name=" . $name4 ." " . (($week_4 == '1')? 'checked=\"checked\"' :"") .  "><input type='radio' name=" . $name4 ." " . (($week_4 == '0')? 'checked=\"checked\"' :"") .  "></td> ");
            print ("<td> $week_5 <input type='radio' name=" . $name5 ." " . (($week_5 == '1')? 'checked=\"checked\"' :"") .  "><input type='radio' name=" . $name5 ." " . (($week_5 == '0')? 'checked=\"checked\"' :"") .  "></td> ");
            print ("<td> $week_6 <input type='radio' name=" . $name6 ." " . (($week_6 == '1')? 'checked=\"checked\"' :"") .  "><input type='radio' name=" . $name6 ." " . (($week_6 == '0')? 'checked=\"checked\"' :"") .  "></td> ");
            print ("<td> $week_7 <input type='radio' name=" . $name7 ." " . (($week_7 == '1')? 'checked=\"checked\"' :"") .  "><input type='radio' name=" . $name7 ." " . (($week_7 == '0')? 'checked=\"checked\"' :"") .  "></td> ");
            print ("<td> $week_8 <input type='radio' name=" . $name8 ." " . (($week_8 == '1')? 'checked=\"checked\"' :"") .  "><input type='radio' name=" . $name8 ." " . (($week_8 == '0')? 'checked=\"checked\"' :"") .  "></td> ");
            print ("<td> $week_9 <input type='radio' name=" . $name9 ." " . (($week_9 == '1')? 'checked=\"checked\"' :"") .  "><input type='radio' name=" . $name9 ." " . (($week_9 == '0')? 'checked=\"checked\"' :"") .  "></td> ");
            print ("<td> $week_10 <input type='radio' name=" . $name10 ." " . (($week_10 == '1')? 'checked=\"checked\"' :"") .  "><input type='radio' name=" . $name10 ." " . (($week_10 == '0')? 'checked=\"checked\"' :"") .  "></td> ");

            //close row
            print ("</tr>");
            $ind++;  print ("</table>");
        print ("<input type='submit' name='submit' value='update' onclick='updateDB'/></form>");

以上成功將數據庫值打印為 1 和 0。 但是,我正在努力將新值更新到數據庫中,如下所示。

function updateDB ($db) {

$week1 = ( isset($_POST['Week_1']) ? '1':'0' );
$week2 = ( isset ($_POST [ '". $name2 . "']) ? '1' : '0');
$week3 = ( isset ($_POST [ '". $name3 . "']) ? '1' : '0');
$week4 = ( isset ($_POST [ '". $name4 . "']) ? '1' : '0');
$week5 = ( isset ($_POST [ '". $name5 . "']) ? '1' : '0');
$week6 = ( isset ($_POST [ '". $name6 . "']) ? '1' : '0');
$week7 = ( isset ($_POST [ '". $name7 . "']) ? '1' : '0');
$week8 = ( isset ($_POST [ '". $name8 . "']) ? '1' : '0');
$week9 = ( isset ($_POST [ '". $name9 . "']) ? '1' : '0');
$week10 = ( isset ($_POST [ '". $name10 . "']) ? '1' : '0');

try { 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sqlQuery = "Update weekbyweek SET  Week_1=?, Week_2=?, Week_3=?, Week_4=?, Week_5=?, Week_6=?, Week_7=?, Week_8=?, Week_9=?, Week_10=?";
$statement->prepare($sqlQuery)->execute(['?','?','?', $name1, $name2, $name3,$name4,$name5,$name6, $name7, $name8,$name9,$name10]);



$statement = $conn->prepare($sqlQuery);
$statement->execute();
}
  }
        UpdateDB();

我不知道如何 100% 更新值,但是我設法做到了這一點……關於更新多個值的閱讀似乎有限,因此任何幫助或建議都是最重要的。

任何幫助將不勝感激。 謝謝,奧利

您可以使用

伊塞特

檢查單選按鈕是否被選中/取消選中,因為它未被選中,表單不會發送特定名稱的任何表單數據。

例如獲取單選按鈕的值:-

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

暫無
暫無

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

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