iT邦幫忙

0

PHP裡有某個值要用submit送出, 但會傳出最後一個, 是否要用其他方式傳值?

php
afgn 2012-06-07 18:15:389817 瀏覽

我有一個表單, 裡面有很多姓名 + 電話, 然後每一行的最後都有個《修改》的submit按鈕,
只要把 input 裡面的值改一改按《修改》, 就只改到該行的資料, 結果試了好久都失敗, 不論有沒有搭配 <input type='hidden' name=xxx value=id> 的方式, 都不行, 請高手指導指導, 謝謝!!

mm.php

&lt;form method='POST' action='nn.php'>
&lt;input type=text value=111 name=a>&lt;input type='submit'>
&lt;br>
&lt;input type=text value=222 name=a>&lt;input type='submit'>
&lt;/form>

nn.php

&lt;?php
echo $_REQUEST['a'];
?>

以前有看過, 忘記了.... 是否要搭配JavaScript或是其他方法才能正常傳遞?

插個題外話,板大長得有點像一個童星
afgn iT邦新手 5 級 ‧ 2012-06-14 17:10:19 檢舉
您是說我(afgn)還是(wiseguy)?? 請問長的像誰 :-)
carl830 iT邦研究生 5 級 ‧ 2012-06-14 20:08:53 檢舉
郝紹文吧@@
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

10
wiseguy
iT邦超人 1 級 ‧ 2012-06-08 00:39:31
最佳解答

你所有的表單 input 的 name 都是 a,送到 php 那邊之後,就如同你寫了一大堆的
$a = 111;
$a = 222;
:
:
不管你寫再多,$a 一定是最後那個指令給的值,這一點都不奇怪吧?

假如你每行後面的修改submit鍵,是要針對單一的一筆,那你就要寫成

&lt;pre class="c" name="code">&lt;form method='POST' action='nn.php'>
&lt;input type=text value=111 name=a>&lt;input type='submit'>
&lt;/form>
&lt;form method='POST' action='nn.php'>
&lt;input type=text value=222 name=a>&lt;input type='submit'>
&lt;/form>

每一個 input 要獨立給一個 form 包起來。這樣同名 input 才不會互蓋。
假如你想要寫成現在這種形式,那勢必不能把 name 都取一樣,要不然就算 php 可以保留所有的 a,請問,每筆資料都叫 a,你知道是誰要改資料嗎?
你可以把 name 指定每個人的帳號,或名字,或身份證號,讓每個 name 都不一樣,就像一樓所寫的那樣。這樣才能夠修改吧?
另一種情況是你想把所有資料送到 php 變成一個陣列,那就把所有的 name 寫成 name="a[]" 就好了。
這樣 php 就會有
$_POST['a'][0] = 111;
$_POST['a'][1] = 222;
的資料了。

afgn iT邦新手 5 級 ‧ 2012-06-08 10:14:43 檢舉

感恩.....想了一天一夜又翻了很多書都找不到答案, 結果居然是基本HTML語法問題 >"<

wiseguy大大真棒!!

6
何必問
iT邦好手 1 級 ‧ 2012-06-07 22:08:51
&lt;pre class="c" name="code">
&lt;form method='POST' action='nn.php'>  
&lt;input type=text value=111 name=a>  
&lt;br>  
&lt;input type=text value=222 name=b>&lt;input type='submit'>  
&lt;/form>  

一次性修改<form>只需要一對 所以submit不需要那麼多

在nn.php
echo $_REQUEST['a'];
echo $_REQUEST['b'];

我要發表回答

立即登入回答