Re: [請益] POST接不到值.......(泣)

看板PHP作者 (cat)時間14年前 (2011/03/16 17:03), 編輯推噓3(3014)
留言17則, 7人參與, 最新討論串2/2 (看更多)
還是解決不了,作了以下測試,希望有高手指點Orz 這是我的樣板html部分 http://pastie.org/1677786 PHP部分 http://pastie.org/1677795 PHP中所使用的class http://pastie.org/1677801 在html的部分,我使用section逐筆抓取從資料庫來的資料 在迴圈中用if else判斷顯示甚麼資料 並在第47行中使用Smarty的html_checkboxes來產生一個核選方塊 表單Submit後將值傳給自己本身的php處理 PHP的部分可以看到在第24行我將所有POST抓到的值列印出來 發現我命名edm_machine_tool_amount理應是一個陣列的checkbox 傳回來卻變成一個字串 "Array" 因為想不通,因此我把原先使用html_checkboxes的部分改寫成一般HTML寫法如下 <input type="checkbox" name="edm_machine_tool_amount[]" value=""....(略) 但這樣也是傳回一樣的結果,一個叫做"Array"的字串... 後來我將name="edm_machine_tool_amount[]"的"[]"拿掉變成每個都一樣名字 我發現他就可以抓到值了,輸出edm_machine_tool_amount=我所選的id 我真的想不透為什麼,我想問題應該是出在Smarty上面 但我真的找不出來,請高手指點迷津了.....謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.68.104

03/16 17:11, , 1F
檢查一下 checkbox 的值 $output_list[sec1].electrode_no
03/16 17:11, 1F

03/16 17:12, , 2F
檢查過了,都能output在畫面上Orz
03/16 17:12, 2F

03/16 17:12, , 3F
應該說 看實際上 render 出來的 html, checkbox value="??"
03/16 17:12, 3F
我有試過 name=edm_machine_tool_amount_{$output_list[sec1].electrode_no} 這樣是OK的,我勾選的傳過去會印出edm_machine_tool_amout_值 ="值" 想不透orz ※ 編輯: catjimmy 來自: 220.133.68.104 (03/16 17:16)

03/16 17:13, , 4F
覺得應該是 {html_checkboxes} 有內鬼
03/16 17:13, 4F

03/16 17:17, , 5F
但直接用html語法也是不行,像剛剛那段就是用html寫的淚
03/16 17:17, 5F

03/16 20:03, , 6F
我也是用SMARTY架構的~ 你把印出的資訊完全貼出來一下~
03/16 20:03, 6F

03/16 20:03, , 7F
var_dump($_POST) 所印出得資訊~
03/16 20:03, 7F
這是在htm使用 <input type ="checkbox" name='edm_machine_tool_amount[]' value=..(略) 印出 array 'edm_machine_tool_amount' => string 'Array' (length=5) 'Submit' => string '輸出' (length=6) 'postback' => string 'true' (length=4) 使用 <input type ="checkbox" name='edm_machine_tool_amount' value=..(略) 印出 array 'edm_machine_tool_amount' => string '11' (length=2) 'Submit' => string '輸出' (length=6) 'postback' => string 'true' (length=4) 使用smarty {html_checkboxes name='edm_machine_tool_amount' values=...(略) 印出 array 'edm_machine_tool_amount' => string 'Array' (length=5) 'Submit' => string '輸出' (length=6) 'postback' => string 'true' (length=4) HELP~~~ ※ 編輯: catjimmy 來自: 122.147.18.185 (03/16 21:19)

03/17 03:58, , 8F
試試看 var_dump($_POST['edm_machine_tool_amount'])
03/17 03:58, 8F

03/17 03:58, , 9F
array 代表它是一個 array,不是它的內容是 'array'。
03/17 03:58, 9F

03/17 03:59, , 10F
你用 name='foo[]' 時,值會放在 $_POST['foo'] 這個 array
03/17 03:59, 10F

03/17 12:12, , 11F
可是他用的是VAR_DUMP 造理說應該會探索進去?
03/17 12:12, 11F

03/17 13:14, , 12F
我也覺得 var_dump 應該也會列出 array 的內容
03/17 13:14, 12F
回KC大,我照您的方法去印,還是印出下面這個..... string 'Array' (length=5) 救命~ 請救救我太太 ※ 編輯: catjimmy 來自: 220.133.68.104 (03/17 16:30)

03/17 16:40, , 13F
這一定是form submit之前input的value是String(5) "Array"
03/17 16:40, 13F

03/17 16:42, , 14F
用firebug or chrome的檢查元素看實際的畫面 不要鐵齒
03/17 16:42, 14F

03/17 16:43, , 15F
smarty {html_checkboxes} 輸出的input type="checkbox"有鬼
03/17 16:43, 15F
回Jerr大大 我也曾放棄使用smarty來輸出..就直接把那行改成一般的html產生方式如下 <input type ="checkbox" name='edm_machine_tool_amount[]' value=..(略) 但是印出變數跟使用smarty情況一樣,變成一個字串而不是array 我剛剛使用firebug去看頁面,確定在輸出前html頁面應該是沒有錯的 因為他確實顯示name="edm_machine_tool_amount[]" 請參考圖 http://imm.io/4oYZ 但是傳給自己用POST去接怎麼會變成這樣咧!!!! btw..我還寫了一個最基本的勾選傳值的php是可以用的 所以我的勾勾應該是沒壞吧.....救命!! ※ 編輯: catjimmy 來自: 220.133.68.104 (03/17 17:22)

03/17 17:57, , 16F
Orz.. 那var_dump($HTTP_RAW_POST_DATA); 出來看看
03/17 17:57, 16F
回Jerr大 印出來是.......null ※ 編輯: catjimmy 來自: 122.147.18.185 (03/17 22:09) 最後終於解決了,感謝協助我解決問題的mesak大大 最後發現問題是在我php程式一開始import的main.php中 有一個我用來處理編碼的函式會將所有$_POST的值先使用array_map()來處理 而這只能處理一維陣列而已,因此改寫這支函式就好了 非常感謝幫助我的mesak大大! ※ 編輯: catjimmy 來自: 111.241.249.170 (03/20 14:39) ※ 編輯: catjimmy 來自: 111.241.249.170 (03/20 14:40)

03/20 23:01, , 17F
不客氣,可以拿出來給大家鞭一下
03/20 23:01, 17F
文章代碼(AID): #1DW7pbkb (PHP)
文章代碼(AID): #1DW7pbkb (PHP)