我有一个动态创建的表单,所以我有一一个输入数组!
已解决:具有相同ID的每个复选框的<input type="hidden" name="smoker_patient[ID]" value="off" />
隐藏字段#
行看起来像:
<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
我不确定您在命名输入部分时的语法。你似乎知道自己做得很好,我认为你不会意识到,如果你name=""
它们都一样,那么你的$_POST
或$_GET
输入只会一遍又一遍地看到相同的一个。我相信你已经想到了这一点,name="smoker_patient[]"
一定只是一个伪占位符。
话虽如此,如果这不是代码的问题,那么你可以这样处理它。
您需要使用PHP来确保$_POST值已设置在某个位置。例如,当选中或选中复选框并且通过$_POST发送表单时,信息不会像其他HTML对象那样发送。相反,它在$_POST响应处理PHP页面中作为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=
计数设置为3。