[請益] form控制項陣列傳值結果?

看板PHP作者 (魔物を討つ者)時間14年前 (2011/10/06 05:27), 編輯推噓1(1030)
留言31則, 7人參與, 最新討論串1/2 (看更多)
看到別人寫的 雖然別人是用cgi 不過基本原理應該是一樣吧 現在在一個form內 有五個checkbox 其中name都叫做attr 所以是一個陣列 但是value都不同 接著按下送出給php之後 php內寫上echo $_POST[attr] 不知道為什麼都只能顯示該陣列最後一個有勾的value 那麼請問那個cgi是怎樣處理多選的問題呢? 要用其他方法知道attr有哪些資料嗎? 請問該怎麼做 -- 「杏、どうしたんだ?」 「どっ、どうもしてないわよ。あんたこそ、椋とデートじゃなかったの?」 「ずぶ濡れじゃねぇかよ、ふっふっ」 「来ないで!!!!!!!!!!!!!!……                      来ないで…お願いだから…」       京都アニメ クラナド~AfterStory~第25話 「もうひとつの世界─杏編」 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.210.139

10/06 05:37, , 1F
它當然只會顯示有勾的值阿
10/06 05:37, 1F

10/06 05:57, , 2F
但是複選呢?出來的值只有最後一個
10/06 05:57, 2F

10/06 05:57, , 3F
假設我勾135只會出現5
10/06 05:57, 3F

10/06 07:46, , 4F
你要取成attr[]
10/06 07:46, 4F

10/06 07:54, , 5F
不好意思可以說仔細一點嗎?
10/06 07:54, 5F

10/06 07:54, , 6F
<input type="checkbox" name="attr" 有複數行
10/06 07:54, 6F

10/06 07:55, , 7F
請問接收時要打怎樣?
10/06 07:55, 7F

10/06 07:55, , 8F
$_POST[?]
10/06 07:55, 8F

10/06 08:30, , 9F
<input type="checkbox" name="attr[1]"
10/06 08:30, 9F

10/06 08:30, , 10F
$_POST[attr][1]
10/06 08:30, 10F

10/06 09:30, , 11F
name="attr[]" 所有checkbox都這樣取
10/06 09:30, 11F

10/06 09:31, , 12F
$_POST['attr'][0] -> 第一個打勾的
10/06 09:31, 12F

10/06 09:32, , 13F
$_POST['attr'][1] -> 第二個打勾的 以此類推
10/06 09:32, 13F

10/06 10:34, , 14F
不好意思補充問一下,為什麼原先網站沒有這樣取就可以
10/06 10:34, 14F

10/06 10:34, , 15F
這是php跟cgi在功能上的限制差異嗎?
10/06 10:34, 15F

10/06 11:07, , 16F
PHP 同名的參數,只會取一個,所以要自行加上[]
10/06 11:07, 16F

10/06 11:18, , 17F
不好意思接下來又有另外的延續問題
10/06 11:18, 17F

10/06 11:18, , 18F
剛剛依照tnstiger大的方法,php已經取得正確
10/06 11:18, 18F

10/06 11:18, , 19F
attr出來的結果是完美的Array,不過這次出在js
10/06 11:18, 19F

10/06 11:19, , 20F
原先的html因為關聯性的關係,checkbox有呼叫js
10/06 11:19, 20F

10/06 11:20, , 21F
第一個checkbox是皆否,呼叫的是取消後面所有checkbox
10/06 11:20, 21F

10/06 11:20, , 22F
document.form.attr[i].checked = false
10/06 11:20, 22F

10/06 11:20, , 23F
其他呼叫的是取消第一個皆否checkbox
10/06 11:20, 23F

10/06 11:20, , 24F
document.form.attr[0].checked
10/06 11:20, 24F

10/06 11:20, , 25F
這下變成js失效了,因為名稱變成attr[]
10/06 11:20, 25F

10/06 11:21, , 26F
而用attr[][i]跟attr[][0]取代也失敗,請問該怎麼辦
10/06 11:21, 26F

10/06 15:49, , 27F
每個input另外取ID,用document.getElementById(id)
10/06 15:49, 27F

10/06 15:49, , 28F
參考到各個input,global objects已經是過時寫法
10/06 15:49, 28F

10/06 15:50, , 29F
不要再用。嫌太長可以寫個函數包起來,例如 function
10/06 15:50, 29F

10/06 15:51, , 30F
g(id) { return document.getElementById(id); } 這樣
10/06 15:51, 30F

10/06 15:51, , 31F
以後每次只要寫 g("input1").value=... 就好
10/06 15:51, 31F
文章代碼(AID): #1EZClRMt (PHP)
文章代碼(AID): #1EZClRMt (PHP)