2013-11-14 27 views
0

我已經有過這個問題多次,所以我不知道其他人是否也有這個問題,或者任何人都知道它的一個很好的解決方案。php在一個while循環中提交表單隱藏的輸入值

$i = 1; 
<form method="POST" action="submit.php"> 
while($i < 10) { 
<p> info </p> 
<input type="hidden" value="$i" name="number" /> 
<input type="submit" value="accept" /> 
<input type="submit" value="decline" /> 
$i++; 
} 
</form> 

我遇到的問題是它始終提交最高的值。在這個例子中,我將有10個提交和拒絕按鈕,並且想要確定他們是否點擊第4個接受按鈕,服務器端語言會將其識別爲第4個提交按鈕。 我已經添加了一個變量到輸入隱藏的名稱=數字$我,它的工作原理,但有時我有一個50-100的循環,它似乎有一個更好的方法來收集數據與不同的變量名稱的數據爲許多選項。

任何幫助將是偉大的。謝謝。

回答

3

我遇到的問題是它始終提交最高的值。

沒有。 全部提供值 - 但PHP會覆蓋具有相同名稱的參數。

您可以使用像number[]這樣的名稱 - 方括號將使PHP生成一個提交值的數組,而不是覆蓋它們。

但是這不會對你有所幫助,因爲你的提交按鈕仍然會提交整個表單 - 所以無論按下什麼提交按鈕,你都會得到所有的值。

您可以爲每個項目使用單獨的表單,或者您必須通過提交按鈕本身傳遞信息。當然,你不想把這些信息放入數值中,因爲這是按鈕文本 - 但你可以把它放在名稱中,形式爲accept[37] - 然後你將得到一個數組,其中 37,所以你只需要看看在接收的數組中使用哪個鍵。

但是,如果您不想一次又一次地爲每個單個項目提交表單 - 那麼也許您應該使用單選按鈕進行接受/拒絕選擇,然後一次提交它們。

+0

謝謝你的這些。我會嘗試這兩個選項。謝謝謝謝。 – Ricky

+0

並且服務器端代碼是$ accept = $ _POST ['accept'];然後echo $ accept; – Ricky

+0

不需要。只要您不確定所接收數據的結構,請使用'var_dump($ _ POST)'來檢查它。 – CBroe