我有一個表單, 裡面有很多姓名 + 電話, 然後每一行的最後都有個《修改》的submit按鈕,
只要把 input 裡面的值改一改按《修改》, 就只改到該行的資料, 結果試了好久都失敗, 不論有沒有搭配 <input type='hidden' name=xxx value=id> 的方式, 都不行, 請高手指導指導, 謝謝!!
mm.php
<form method='POST' action='nn.php'>
<input type=text value=111 name=a><input type='submit'>
<br>
<input type=text value=222 name=a><input type='submit'>
</form>
nn.php
<?php
echo $_REQUEST['a'];
?>
以前有看過, 忘記了.... 是否要搭配JavaScript或是其他方法才能正常傳遞?
你所有的表單 input 的 name 都是 a,送到 php 那邊之後,就如同你寫了一大堆的
$a = 111;
$a = 222;
:
:
不管你寫再多,$a 一定是最後那個指令給的值,這一點都不奇怪吧?
假如你每行後面的修改submit鍵,是要針對單一的一筆,那你就要寫成
<pre class="c" name="code"><form method='POST' action='nn.php'>
<input type=text value=111 name=a><input type='submit'>
</form>
<form method='POST' action='nn.php'>
<input type=text value=222 name=a><input type='submit'>
</form>
每一個 input 要獨立給一個 form 包起來。這樣同名 input 才不會互蓋。
假如你想要寫成現在這種形式,那勢必不能把 name 都取一樣,要不然就算 php 可以保留所有的 a,請問,每筆資料都叫 a,你知道是誰要改資料嗎?
你可以把 name 指定每個人的帳號,或名字,或身份證號,讓每個 name 都不一樣,就像一樓所寫的那樣。這樣才能夠修改吧?
另一種情況是你想把所有資料送到 php 變成一個陣列,那就把所有的 name 寫成 name="a[]" 就好了。
這樣 php 就會有
$_POST['a'][0] = 111;
$_POST['a'][1] = 222;
的資料了。
<pre class="c" name="code">
<form method='POST' action='nn.php'>
<input type=text value=111 name=a>
<br>
<input type=text value=222 name=b><input type='submit'>
</form>
一次性修改<form>只需要一對 所以submit不需要那麼多
在nn.php
echo $_REQUEST['a'];
echo $_REQUEST['b'];