2013-10-16 50 views
0

這個foreach循環創建大約120個錶行。

在每一行中都有兩個輸入字段,用戶可以更新/更改名字和姓氏。

改變輸入值後,用戶點擊「保存」按鈕發送輸入值$ _POST。

<table> 
    <? foreach ($members as $member) {?> 
    <form name="member" action="" method="POST"> 
    <tr> 
    <td><input name="id" type="hidden" value="<? echo $member['id'] ?>"></td> 
    <td><input name="first_name" type="text" value="<? echo $member['first_name'] ?>"></td> 
    <td><input name="last_name" type="hidden" value="<? echo $member['last_name'] ?>"></td> 
    <td><input type="submit" value="Save"></td> 
    </tr> 
    </form> 
<? } ?> 

我看這個問題,有與name="id"name="first_name"name="last_name" 120個輸入字段。

Normaly我想借此submited值這樣和,但它到一個變量:

$first_name = $_POST['first_name']; 

請問form只提交<form>標籤都有效,其中提交按鈕位於或裏面的值有另一種解決方案爲了防止這些值混在其他表單之間?

回答

3

由於您的表單標籤位於您的foreach循環中,因此是的:每個提交按鈕只會提交first_namelast_name與單擊提交按鈕相同表單的值。

但是,您的html無效。有效的html會指示你在表格單元格內創建每個表單(td標籤),或者找到一種將保存按鈕與特定字段(使用一些javascript或不同標記)關聯的不同方法。看到這個答案:https://stackoverflow.com/a/1249715/2061789

+0

謝謝!當表單位於foreach循環之外時會有什麼解決方案?任何教程?謝謝! – Mike

+0

如果表單標籤在每個循環外部,則表單將包含具有重複名稱的''元素:'first_name','last_name'。首先,使用重複的''name''屬性顯然是錯誤的,其次,表單會不合適:它不會爲輸入提交正確的值。 –

+0

@SasankaPanguluri謝謝 - 但是當表單不在'form'-tag之外時,如何處理這個問題呢? – Mike

0

您將需要爲每個表單使用不同的表格。但是,您可以根據計數器通過保留不同的名稱來區分這些字段。像這樣:

<? 
$i = 0; 
foreach ($members as $member) { 
?> 
<table> 
<form name="member" action="" method="POST"> 
<tr> 
<td><input name="<?php echo 'id_'.$i;?>" type="hidden" value="<? echo $member['id'] ?>"></td> 
<td><input name="<?php echo 'first_name_'.$i;?>" type="text" value="<? echo $member['first_name'] ?>"></td> 
<td><input name="<?php echo 'last_name_'.$i;?>" type="hidden" value="<? echo $member['last_name'] ?>"></td> 
<td><input type="submit" value="Save"></td> 
</tr> 
</form> 
</table> 
<?php 
$i++; 
} ?> 
+0

td在每個表格內。您將從輸入名稱讀取變量。 – Aris

+0

抱歉,我的意思是'th':當表格結構包含第一行'th'標籤時,表格結構如何?因爲這行不應該在'foreach'循環中 – Mike

+0

我在代碼中看不到th – Aris