用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

嗨,我想在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] ."',
 `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];
}