作者catjimmy (cat)
看板PHP
標題Re: [請益] POST接不到值.......(泣)
時間Wed Mar 16 17:03:30 2011
還是解決不了,作了以下測試,希望有高手指點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
1F:推 Jerr:檢查一下 checkbox 的值 $output_list[sec1].electrode_no 03/16 17:11
2F:→ catjimmy:檢查過了,都能output在畫面上Orz 03/16 17:12
3F:→ Jerr:應該說 看實際上 render 出來的 html, checkbox value="??" 03/16 17:12
我有試過
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)
4F:→ Jerr:覺得應該是 {html_checkboxes} 有內鬼 03/16 17:13
5F:→ catjimmy:但直接用html語法也是不行,像剛剛那段就是用html寫的淚 03/16 17:17
6F:推 kuAIpAI:我也是用SMARTY架構的~ 你把印出的資訊完全貼出來一下~ 03/16 20:03
7F:→ kuAIpAI:var_dump($_POST) 所印出得資訊~ 03/16 20:03
這是在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)
8F:→ KC73:試試看 var_dump($_POST['edm_machine_tool_amount']) 03/17 03:58
9F:→ KC73:array 代表它是一個 array,不是它的內容是 'array'。 03/17 03:58
10F:→ KC73:你用 name='foo[]' 時,值會放在 $_POST['foo'] 這個 array 03/17 03:59
11F:→ arrack:可是他用的是VAR_DUMP 造理說應該會探索進去? 03/17 12:12
12F:→ chrisQQ:我也覺得 var_dump 應該也會列出 array 的內容 03/17 13:14
回KC大,我照您的方法去印,還是印出下面這個.....
string 'Array' (length=5)
救命~ 請救救我太太
※ 編輯: catjimmy 來自: 220.133.68.104 (03/17 16:30)
13F:→ Jerr:這一定是form submit之前input的value是String(5) "Array" 03/17 16:40
14F:→ Jerr:用firebug or chrome的檢查元素看實際的畫面 不要鐵齒 03/17 16:42
15F:→ Jerr:smarty {html_checkboxes} 輸出的input type="checkbox"有鬼 03/17 16:43
回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)
16F:推 Jerr:Orz.. 那var_dump($HTTP_RAW_POST_DATA); 出來看看 03/17 17:57
回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)
17F:→ mesak:不客氣,可以拿出來給大家鞭一下 03/20 23:01