作者susaku (小草)
看板PHP
標題[請益] 接收動態表單陣列的值
時間Sat Nov 5 16:35:32 2011
我在A.php寫一個動態新增欄位 在B.php接收陣列寫進資料庫
不過不知道是JS寫法有問題還是php陣列有問題 我只能接收第一個值= ="
可以請各位前輩幫我看看哪邊有問題嗎?
<A.php html部分>
<table border="0" cellspacing="1" width="100%" id="tb_2">
<tr><td align="left"><font size="4" face="標楷體" >計畫目標(條列式)
</font></td></tr>
<tr><td><input type="text" name="text_2[]" id="2_1" /></td></tr>
</table>
<input type="button" name="button_+" id="2" value="+"
onClick="act_text(this)" />
<input type="button" name="button_-" id="2" value="-"
onClick="act_text(this)" />
<A.php JS部分>
<script language="JavaScript">
var i=2;
function act_text(obj) {
var num = document.getElementById("tb_"+obj.id).rows.length;
switch(obj.value){
case "+":
var Tr = document.getElementById("tb_"+obj.id).insertRow(num);
Td = Tr.insertCell(Tr.cells.length);
Td.innerHTML='<input type="text" name="text_"+obj.id+"[]"
id=obj.id+"_"+i />';
i++;
break;
case "-":
if(num >2) {
document.getElementById("tb_"+obj.id).deleteRow(-1);
}
i--;
break;
}
}
</script>
<B.php接收部分>
foreach($_POST['text_2'] as $i){
$text_2Value .= $i.',';
}
補充:因為A.php有很多要用到同樣的動態表單,所以我JS根據按哪個Button (obj)來決定
新增的欄位是屬於哪個table (tb_?)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.21.235.234
1F:→ tkdmaf:是「Java Script」不是「Java Server Pages」 11/05 17:51
Sorry~
※ 編輯: susaku 來自: 163.21.235.234 (11/05 21:26)
2F:→ averywu:ID不可重覆 11/05 23:47
後來搞了一下發現是下面這行的問題
<input type="text" name="text_"+obj.id+"[]" id=obj.id+"_"+i />
name只能接收確切的文字...就是我改寫成
<input type="text" name="text_2[]" />
就可以完整接收到
(id我直接刪掉了...似乎沒有差別)
不過這樣太限定name的名字就沒辦法讓其它元件也使用這個function了.. >_<"
※ 編輯: susaku 來自: 163.21.235.234 (11/06 00:19)
呃....更新這麼多次真不好意思
最後改成
Td.innerHTML=
'<input type="text" name="text_
' +obj.id+
'[]" />
';
這樣就可以了
※ 編輯: susaku 來自: 163.21.235.234 (11/06 00:31)
3F:→ MOONRAKER:我看了很久還是看不懂那個[]是什麼?我看來是一個框 11/06 17:28
4F:→ cokellen:name[] => array 11/06 18:49
5F:→ MOONRAKER:喔!對不起我問了一個蠢問題 XD 11/06 19:22
6F:→ MOONRAKER:以前碰到這種寧願每一個想辦法取序號名字也不要用陣列 11/06 19:23
7F:→ MOONRAKER:所以看到的時候完全狀況外 11/06 19:23
8F:→ cokellen:剛開始會用這種命名方式,後來配合JS就不用這種方式了 11/06 20:46