我有一個刪除按鈕的名稱=「行動」是正確去一個開關/案例value="Delete"
,並獲取適當的表值$_POST['fundid']
頂級表value[record #1]
,但忽略它的最後一個表格value[record #2]
。表的代碼:PHP後總是忽略了最後一個表值
while ($row = mssql_fetch_array($fund_info_result)) {
echo "<tr>";
echo "<form action='' method='post'>";
echo "<td>" . $row['coafund'] . "</td>";
echo "<td>" . $row['fundid'] . "</td>";
echo "<input type='hidden' id='fundid' name='fundid' value=" . $row['fundid'] . " />";
echo "<td>" . $row['shortdesc'] . "</td>";
echo "<td>" . $row['longdesc'] . "</td>";
echo "<td><input type='submit' id='delete' name='action' value='Delete' /></td></td>";
echo "</form>";
echo "</tr>";
}
PHP代碼抓住第一記錄的值,但忽略第二[最後]記錄:
if (isset($_POST)) {
case 'Delete':
$fundid_record = $_POST['fundid'];
?>
<script type="text/javascript">
window.alert("<?php echo $fundid_record;?>");
</script>
<?php
break;
}
生成的HTML的樣品看起來像這樣:
<tbody>
<form id='table_data1' action='' method='post'>
<tr>
<td>139</td>
<td>14966</td>
<input type='hidden' id='14966' name='fundid' value=14966 />
<td>Admin</td>
<td>Administration</td>
<td><input type='submit' id='delete' name='action' value='Delete' /></td>
</td>
</tr>
</form>
<form id='table_data1' action='' method='post'>
<tr>
<td>140</td>
<td>14967</td>
<input type='hidden' id='14967' name='fundid' value=14967 />
<td>Services</td>
<td>Services</td>
<td><input type='submit' id='delete' name='action' value='Delete' /></td>
</td>
</tr>
</form>
</tbody>
這裏的另一個用戶票據幫助我至少正確地獲取了值,使用每個記錄的表單標籤和隱藏值,但是爲什麼忽略表格的最後一個記錄,這非常困惑。請幫忙。
'ID ='fundid''是不是一個好主意。每個HTML元素的ID必須是唯一的。既然你是通過一個循環創建它,如果它循環兩次或更多的ID將在最後一頁使用兩次或更多,根據HTML規範使第二個和後續元素無效。 – ADyson
無論如何,不確定你的意思是「忽略最後的記錄」?你的意思是當你在最後一個表格行中單擊「刪除」時,它不會提交正確的值?您是否檢查過瀏覽器的網絡標籤,以查看回發請求中實際提交的內容?它是否將預期值發送到服務器? – ADyson
將其更改爲:id ='「。$ row ['fundid']。」';仍然是同樣的事情:按第二行的刪除,而不是window.alert(值)submit isset只是重新加載頁面。 Chrome瀏覽器網絡標籤顯示我沒有識別的var名稱。瀏覽器日誌[通過chrome:// net-export /] 5867行,並沒有提到'fundid'。在第一行中,當它經過ISSET代碼時,找到「case:」刪除':「,彈出該值,然後重新加載記住之前選擇值的頁面。但在第二個值上刪除,頁面從頭開始重新加載 - 因此它忽略提交該元素。 #scratchinghead – dcparham