[英]Updating multiple rows the same table in a webform populated using PHP and SQL
[英]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.