我有一个动态创建的表单,所以我有一个输入数组!
<input type="hidden" name="smoker_patient[ID]" value="off" />
每个具有相同ID的复选框的隐藏字段!#行看起来像:
<tr><td>
[stuff]
<input type="checkbox" name="smoker_patient[1]" class="smoker" id="cbx1" checked="checked"/>
[stuff]
</td></tr>
<tr><td>
[stuff]
<input type="checkbox" name="smoker_patient[2]" class="smoker" id="cbx2"/>
[stuff]
</td></tr>
<tr><td>
[stuff]
<input type="checkbox" name="smoker_patient[3]" class="smoker" id="cbx3" checked="checked"/>
[stuff]
</td></tr>
如您所见,cbx1和cbx3被检查。(仅显示错误)但是jQuery发送的数组只包含
smoker_patient[0] = 'on'
smoker_patient[1] = 'on'
但应该是......
smoker_patient[0] = 'on'
smoker_patient[1] = 'off'
smoker_patient[2] = 'on'
所以我在PHP中得到错误:
注意:未定义的偏移量:第XX行的newcoexposition.php中的2
答案 0 :(得分:3)
我不确定输入部分命名的语法。你似乎知道自己做得多好,以至于我不认为如果你name=""
他们都一样,那么你输入的$_POST
或$_GET
只会看到一遍又一遍。我相信你已经想到了这一点,name="smoker_patient[]"
必须只是一个伪占位符。
话虽如此,如果这不是代码的问题,那么你可以像这样接近它。
您需要使用PHP来确保已在某处设置$ _POST值。选中或选中复选框并通过$ _POST发送表单时,信息不会像其他HTML对象一样发送。相反,它会在处理PHP页面的$ _POST响应中作为ON
或OFF
发送。
@mithunsatheesh是正确的唯一方法是使用isset($_POST['checkbox'])
确保已设置或检查...
如果您的部分是动态的,那么您可以使用php和一个简单的计数器来确保所有动态复选框都被赋予唯一的名称和标识符,如此...
我首先会看到我需要多少个盒子然后......
$totalNumOfBoxes = 3;
for($i=0; $i<$totalNumOfBoxes; $i++) {
echo '<tr>
<td>
<input type="checkbox" name="smoker_patient_".$i class="smoker" id="cbx".$i />
</td>
</tr>';
}
然后你会得到一系列每个都有唯一标识符的框,这样当你提交表单时,每个复选框都不能与$_POST
数组中的兄弟复选框混淆。
另一方面,在$_POST
响应处理PHP文件中,您将通过给自己一个$_GET
变量来查找它们,这个变量填充了自测试边界以来有多少个框以查看isset()
和复选框...
我会制作一个表单,其中所有这些框都有method: POST
和action: myHandlerPHPFile.php?boxCount=3
,所以当您到达POST
请求的这一边时,您可以创建$totalNumOfBoxes = $_GET['boxCount']
action: myHandlerPHPFile.php?boxCount=
您可以使用相同的外观将{{1}}计数设置为3,使得框也可以将此计数变量添加到混合中。