我有一個由此查詢填充的表單。這工作正常,我有適當的文本字段中的值。下面是表單代碼:PHP表單提交,但只更新最後一行..需要更新所有行
print "<form action='update.php' method='post'>";
print "<table width='655' border='1'><tr><th width='40'>Quantity</th><th width='40'>Code</th><th width='175'>Product Description</th><th width='50'>Unit Price</th><th width='50'>Total Price</th><th width='50'>Qty Checked</th><th width='65'>Quantity Passed</th><th width='65'>Failure Type</th>";
$result = mysqli_query($con,"SELECT * FROM b_tasks_po WHERE TASK_ID=$taskid");
while($row = mysqli_fetch_array($result))
{
echo "<td>" . $row['QTY'] . "</td>";
echo "<td><input type='hidden' name='ID[]' value='" . $row['ID'] . "'>" . $row['CODE'] . "</td>";
echo "<td>" . $row['PRODUCT_DESCRIPTION'] . "</td>";
echo "<td>" . $row['UNIT_PRICE'] . "</td>";
echo "<td>" . $row['TOTAL_PRICE'] . "</td>";
echo "<td><input type='text' size='5' name='QTY_CHECKED[]' style='padding:5px;' value='" . $row['QTY_CHECKED'] . "'></td>";
echo "<td><input type='text' size='5' name='QTY_PASSED[]' style='padding:5px;' value='" . $row['QTY_PASSED'] . "'></td>";
echo "<td><select name='FAILURE_TYPE[]'><option value=''></option><option value='Missing'>Missing</option><option value='Option 2'>Option 2</option></select></form></td>";
echo "</tr>";
}
echo "</table>";
print "<p><input type='submit' name='submit' value='Click to Save'></p><p><strong>Comments</strong></p>";
然後,它被傳遞給了我更新,看起來像下面這樣:
if (isset($_POST['submit'])) {
$sql = "UPDATE b_tasks_po SET QTY_CHECKED='".$_POST['QTY_CHECKED']."', QTY_PASSED='".$_POST['QTY_PASSED']."', FAILURE_TYPE='".$_POST['FAILURE_TYPE']."' WHERE ID='".$_POST['ID']."'";
$result=mysql_query($sql)or
die ("Error"); }
它顯示所有適當的數據庫中行返回7行中的第一個查詢。每行都有表格元素。我目前想要更新每行的數字,按提交,然後在數據庫中更新它們。目前的問題是它只更新最後一行。我在閱讀後瞭解到,它識別所有相同的字段名稱,但我已將[]添加到每個名稱的末尾,但仍然沒有快樂。
表中的每一行都有一個ID,並且我有一個隱藏文本字段,用於標識每行中的ID,所以我哪裏出錯了?爲什麼只更新最後一行?
任何幫助,將不勝感激。
這是什麼回聲var_dump($_POST['QTY_CHECKED'])
。返回:
array(7) { [0]=> string(2) "10" [1]=> string(5) "25000" [2]=> string(2) "25" [3]=> string(2) "15" [4]=> string(2) "25" [5]=> string(2) "54" [6]=> string(6) "120000" }
請儘量避免使用'mysql_ *'函數,因爲它們現在已被棄用。相反,看看http://php.net/manual/en/book.pdo.php(PDO)或http://php.net/manual/en/book.mysqli.php(MySQLi) –
好的,謝謝你,我現在就去看看。 – andy
我們可以得到$ _POST的var_dump嗎? – 1owk3y