更改复选框以使用mysql和php进行检查

时间:2012-08-02 16:36:16

标签: php mysql checkbox

我的上一个问题不太好,所以我很抱歉“打开”新的。

导入数据:

表1

  • ID:1
  • ID:2
  • ID:3

表2

  • ID:1
  • ID:3

查询1(内容结果)

  • 1,2,3

查询2(内容结果):

  • 1,3

所以,我有一个复选框需要更改为“已检查”,如果我每次获取这两个表(正确查询c)并且table1上存在一些来自table2的id。

我这样做:

<?php
while($row = mysql_fetch_array($Query1))
{
while($row2 = mysql_fetch_array($Query2))
{
$checkit = '';
if($row['id'] == $row2['id'] )
$checkit = 'checked="checked"';
}
?>
<input type="checkbox" name = "checkbox-1" class="checkbox" value ="" <?php echo $checkit ?> />
<?php
}
}
?>

问题:当1 = 1时,我可以“检查”第一个结果。

虽然只获取一次。我需要的结果应该像这样(id):11-13 | 21-23 | 31-33和选中复选框应仅在11和33

时出现

我希望你明白这一点..

3 个答案:

答案 0 :(得分:1)

你有使用

$checkit = 'checked="yes"';

应该是

 $checkit = 'checked="checked"';

试试这个: -

<?php

    $arr_one = '';
    while($row = mysql_fetch_array($Query1))
    {

        $arr_one[]= $row['id'];

    }


    while($row2 = mysql_fetch_array($Query2))
    {
            $checkit = '';

            $id = $row2['id'];
            if (in_array($id,$arr_one))
            {
                $checkit = 'checked="checked"';
            }



    ?>
            <input type="checkbox" name= "checkbox-1" class="checkbox" value ="" <?php echo $checkit ?> />
    <?php
        }

    ?>

答案 1 :(得分:1)

您需要在内部while块后重置内部结果指针。

    while($row = mysql_fetch_array($Query1))
    {
        while($row2 = mysql_fetch_array($Query2))
        {
              // Your code
        }
        mysql_data_seek($Query2,0);
    }

答案 2 :(得分:1)

我愿意:

$t2data = array();
while($row2 = mysql_fetch_assoc($Query2)) {
  $t2data[] = $row2[0];
}

while($row1 = mysql_fetch_assoc($Query1)) {
  if(in_array($row1[0], $t2data)) { 
    $checked = 'checked';
  }
}

话虽这么说,如果两个表都在同一个数据库中,最好通过OUTER JOIN查询来解决:

select t1.id, (t2.t1_id IS NOT NULL) as checked
  from t1 
  left join t2 on (t1.id = t2.t1_id)

然后遍历结果并仅检查查询中checked = true的框。