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