用php实现复选框的多数组
嗨,我想在php中使用复选框的多数组,我想检查每个数组中的所有值是否选中。我的问题是数组内容仅为选中的值 这是我的密码:-用php实现复选框的多数组,php,html,Php,Html,嗨,我想在php中使用复选框的多数组,我想检查每个数组中的所有值是否选中。我的问题是数组内容仅为选中的值 这是我的密码:- if($_POST['send']){ $co = count($_POST['recomID']); for($i=0; $i<= $co -1 ;$i++) { $result = mysql_query("UPDATE `recom` SET `crit1` = '".$_POST['ch1'][$i
if($_POST['send']){
$co = count($_POST['recomID']);
for($i=0; $i<= $co -1 ;$i++) {
$result = mysql_query("UPDATE `recom` SET
`crit1` = '".$_POST['ch1'][$i] ."',
`crit2` = '".$_POST['ch2'][$i]."',
`crit3` = '".$_POST['ch3'][$i]."',
`crit4` = '".$_POST['ch4'][$i]."', WHERE `id` = '".$_POST['recomID'][$i]."'");
}
}
while($recomObject = mysql_fetch_object($recomResult)){
echo '
<tr>
<td>'.$recomObject->op.'</td>
<td align="center"><input type="checkbox" value="1" name="ch1[]" /></td>
<td align="center"><input type="checkbox" value="1" name="ch2[]" /></td>
<td align="center"><input type="checkbox" value="1" name="ch3[]" /></td>
<td align="center"><input type="checkbox" value="1" name="ch4[]" /></td>
<td><input type="hidden" name="recomID[]" value="'.$recomObject->id.'"/>
</td>
</tr>';}
if($\u POST['send'])){
$co=计数($_POST['recomID']);
对于($i=0;$iop)。”
';}
每个复选框的名称必须相同,但值不同:
<td align="center"><input type="checkbox" value="0" name="ch[]" /></td>
<td align="center"><input type="checkbox" value="1" name="ch[]" /></td>
<td align="center"><input type="checkbox" value="2" name="ch[]" /></td>
<td align="center"><input type="checkbox" value="3" name="ch[]" /></td>
如果你有大量的复选框,你可以通过
$\u POST
和foreach
进行迭代。我以前遇到过这种情况,我通过在同名的复选框之前放置一个隐藏输入来解决。如果选中复选框,那么该值将覆盖隐藏的。这应该是谢谢你
第二个输入总是覆盖第一个。在这种情况下,复选框
如果未选中,则不POST
,这意味着隐藏的输入将POST
值为0
PHP:
输出:
array([0] => "1", [1] => "0")
编辑
if(isset($_POST['ch1'][0])){ //do check anyway
echo $_POST['ch1'][0];
}
$i=0;
而($recomObject=mysql\u fetch\u object($recomResult)){
回声'
“.$recomObject->op.”
';
$i++;
}
此方法将为您提供选中/未选中状态以及4个数组
表格:
检查:
因此,在[0]
索引中始终会有一个值。PHP示例:
请解释对四个数组的需要。可能的重复请参阅添加到问题中的图像。需要更多信息。您需要按行或列查看值吗?那么您需要做什么?我将向问题中添加我的获取数据代码。@Mustafa:为什么需要四个数组?您可以详细解释您的目标吗?请参阅添加到问题中的图像stion。难道你不想让隐藏字段处于第二位,所以你总是只检查第一项中的1或0吗?@unholyRanger让它们处于第二位意味着它们将覆盖检查的值。你总是会得到false或0I的数组值,但当我检查所有结果时,结果都是1,0,1,0。。。etc@Asok您将得到一个数组数组([0]=>“0”)
在未选中的情况下,如果执行第二次隐藏,则选中数组([0]=>“1”,[1]=>“0”)
在未选中的情况下。如果名称中没有[]
,则它们将override@UnholyRanger你是对的,我修正了它,我忘记了在处理数组时我必须声明索引。请参阅上面我编辑的答案。
if (isset($_POST['ch1'])) $ch1=0; else ch1=1;
...
<?php
if (isset($_POST['ch1'])) {
echo '<pre>', print_r($_POST['ch1'], true), '</pre>';
echo '<pre>', print_r($_POST['ch2'], true), '</pre>';
echo '<pre>', print_r($_POST['ch3'], true), '</pre>';
echo '<pre>', print_r($_POST['ch4'], true), '</pre>';
}
?>
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
<!-- Row 1 Checkboxes -->
<input type="hidden" value="0" name="ch1[0]" />
<input type="checkbox" value="1" name="ch1[0]" />
<input type="hidden" value="0" name="ch2[0]" />
<input type="checkbox" value="1" name="ch2[0]" />
<input type="hidden" value="0" name="ch3[0]" />
<input type="checkbox" value="1" name="ch3[0]" />
<input type="hidden" value="0" name="ch4[0]" />
<input type="checkbox" value="1" name="ch4[0]" />
<br />
<!-- Row 2 Checkboxes -->
<input type="hidden" value="0" name="ch1[1]" />
<input type="checkbox" value="1" name="ch1[1]" />
<input type="hidden" value="0" name="ch2[1]" />
<input type="checkbox" value="1" name="ch2[1]" />
<input type="hidden" value="0" name="ch3[1]" />
<input type="checkbox" value="1" name="ch3[1]" />
<input type="hidden" value="0" name="ch4[1]" />
<input type="checkbox" value="1" name="ch4[1]" />
<!-- And so forth... -->
<input type="submit">
</form>
[x] [ ] [x] [ ]
[ ] [x] [ ] [x] [ SUBMIT ]
Array
(
[0] => 1
[1] => 0
)
Array
(
[0] => 0
[1] => 1
)
Array
(
[0] => 1
[1] => 0
)
Array
(
[0] => 0
[1] => 1
)
$i = 0;
while($recomObject = mysql_fetch_object($recomResult)){
echo '
<tr>
<td>'.$recomObject->op.'</td>
<input type="hidden" value="0" name="ch1['.$i.']" />
<input type="hidden" value="0" name="ch2['.$i.']" />
<input type="hidden" value="0" name="ch3['.$i.']" />
<input type="hidden" value="0" name="ch4['.$i.']" />
<td align="center"><input type="checkbox" value="1" name="ch1['.$i.']" /></td>
<td align="center"><input type="checkbox" value="1" name="ch2['.$i.']" /></td>
<td align="center"><input type="checkbox" value="1" name="ch3['.$i.']" /></td>
<td align="center"><input type="checkbox" value="1" name="ch4['.$i.']" /></td>
<td><input type="hidden" name="recomID[]" value="'.$recomObject->id.'"/>
</td>
</tr>';
$i++;
}
html>
<form method="post">
<input type="hidden" name="ch1[]" value="0">
<input type="checkbox" name="ch1[]" value="1">
<input type="hidden" name="ch2[]" value="0">
<input type="checkbox" name="ch2[]" value="1">
<input type="hidden" name="ch3[]" value="0">
<input type="checkbox" name="ch3[]" value="1">
<input type="hidden" name="ch4[]" value="0">
<input type="checkbox" name="ch4[]" value="1">
<input type="submit">
</form>
array([0] => "0")
array([0] => "1", [1] => "0")
if(isset($_POST['ch1'][0])){ //do check anyway
echo $_POST['ch1'][0];
}