簡體   English   中英

使用PHP生成的Webform和MySQL更新表中的多行

[英]Using a PHP generated webform and mySQL to update multiple rows in a table

我創建了一個數據庫來存儲比賽結果以及php生成的網頁,該網頁列出了所有參賽者,然后是一個文本框,用於記錄他們的得分。

當我按下提交按鈕時,我希望它更新表中的所有行

我是php和mySQL的新手,我可以一次為其中之一進行操作,但我不希望他們必須按下30多個單獨的提交按鈕來處理每一行。

以下代碼生成表單:

  <?php

   $field_event_id = $sports_day_id = "";
   if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' )


    $field_event_id = $_POST["field_event"];
    $sports_day_id = $_POST["sportsday"];

    $query = "SELECT * FROM student JOIN participants ON student.student_ID = participants.student_ID WHERE `Field_Event_ID`= $field_event_id";


    $result = mysqli_query( $dbc, $query ) ; 


     echo '<body>';
if ( mysqli_num_rows( $result ) > 0 )
{
    echo'<header> <h1> Please enter the results below </h1> </header>';
      echo '<table align="center" border="1" cellpadding="10px" bgcolor="#DCF8FE">
        <tr>
            <th>Forename</th>
            <th>Surname</th>
            <th>Year Group</th>
            <th>Score</th>
        </tr>

<tr>';
     while ( $row = mysqli_fetch_array( $result, MYSQLI_ASSOC ))
    {
        echo '<form action="Add_Scores_Field_Event_Register.php" method="post">
            <td> <strong>' . $row['Forename'] .'</strong><br> </td>
            <td> <strong>' . $row['Surname'] .'</strong><br> </td>
            <td> <strong>' . $row['Year_Group'] .'</strong><br> </td>
            <td> <strong>   <input type="text" name="notes_input"> </strong><br> </td>           
            </tr>
            </form>';
     }
     echo '</table>';
         echo '<p><input type="submit" value="Enter scores" ></p>';

}
else 
{ 
    echo '<p>There are currently no students in this event.</p>' ; 
}

{

     # Close database connection.
     mysqli_close( $dbc ) ; 
}


# close body section.
echo '</body>';
# close HTML section.
echo '</html>';

mysqli_close($dbc);

?>

根據這篇文章,您可以將元素的名稱屬性設置為數組。

<input type="text" name="inputs[]" value="bob">
<input type="text" name="inputs[]" value="jim">

如果您通過表格提交。 您應該能夠訪問以下值:

$_POST["inputs"][0]; // bob
$_POST["inputs"][1]; // jim

因此,如果您在表格內輸出信息並正確設置分數的名稱屬性。 提交表單時,您應該能夠獲取所有分數(無論是否已編輯)並使用值更新數據庫。 您將必須跟蹤數據庫中要更改的記錄。

我提供的代碼未經測試; 但是,根據鏈接的帖子,它應該起作用。

別忘了學習Alex Howansky所說的准備好的陳述。 這些真的很重要。

如果您嘗試這樣做,則需要移動表單標簽以包裝整個表格。 而不是特定的行。

編輯:盡管我看到2解決方案,還有一點:

將學生ID放在隱藏的標簽中,並使用name屬性將其與其他數據一起發送。

<input type="hidden" name="studentIds[]" value="<place student id here>">

我會將輸入標簽放在您姓氏的td中; 因為它是唯一表示該行的第一個td和一個tds。

要么

使用學生ID作為索引,將分數作為值。

<input type="text" name="notes_input[<place student id here>]">

然后,您可以遍歷notes_input並獲取鍵和值:

foreach ($array as $key => $value) {
    //code
}

請參閱文檔以獲取更多信息。

暫無
暫無

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

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