<?php
 $sql = "SELECT `id` , `name`
FROM `interior_authority`";
$row['authorityid']= "a,b,c,d,e";//这个是值是为了方便查看加上去,原本这个值是从数据库里读取出来的。
$authority = explode(",",$row['authorityid']);
//$row数组$row[id]值分别为"a,b,c,d,e,f,c",这值也是为了方便查看加上去的,原值是从数据库读取出来的。
$sql = mysql_query($sql,$conn);
 while($row = mysql_fetch_array($sql)){
 foreach($authority as $value){
 if($row['id']==$value){
echo<<<EOD
<label><input name="chk_authority[$row[id]]"  type="checkbox" id="chk_authority" value="$row[id]" checked="checked"/>&nbsp;$row[name]</label>
EOD;
 }
}
}
 ?>我想要的结果是$row['id']==$value 复选框就打上"√",其它不相等的就直接显示出来!
现在的问题是复选框能上"√",但那些没打上"√"的不会显出来,如果在whiel循环里多加一条echo<<<EOD
<label><input name="chk_authority[$row[id]]"  type="checkbox" id="chk_authority" value="$row[id]" checked="checked"/>&nbsp;$row[name]</label>
EOD;那他就会重复显示;
希望能各位朋友帮个忙PHP根据条件循环显示

解决方案 »

  1.   

    foreach($authority as $value){
      $checked = $row['id']==$value ? 'checked' : '';
      echo<<<EOD
    <label><input name="chk_authority[$row[id]]"  type="checkbox" id="chk_authority" value="$row[id]" $checked/>&nbsp;$row[name]</label>
    EOD;
    }
      

  2.   

    你只让程序显示了相等的情况,没让程序显示不相等的情况
    if($row['id']==$value){
                echo<<<EOD
    <label><input name="chk_authority[$row[id]]"  type="checkbox" id="chk_authority" value="$row[id]" checked="checked"/>&nbsp;$row[name]</label>
    EOD;
             }else{
    echo<<<EOD
    <label><input name="chk_authority[$row[id]]"  type="checkbox" id="chk_authority" value="$row[id]" />&nbsp;$row[name]</label>
    EOD;
    }
      

  3.   

    if($id==$value){}else{}
    这怎么会重复的。。
    就一个条件,要么是要么否。。
      

  4.   


    因为有丙次的盾环在那里:  foreach 与WHILE 循环while 循环一次, foreach 要循环4次因为$authority数组有4个值,在这4个值里面只有一个值是跟$id配置的,如果你在IF里加入ELSE 那他就会同一记录出现重3次IF ELSE里的值
      

  5.   

    foreach($mysqlResult as $row){
    $hasValue = false;
    foreach($authority as $value){
             if($row['id']==$value){
               $hasValue = true;
             }
        }
        if($hasValue){
         echo 'yes';
        }else{
         echo 'no';
        }
      }暂时只想到这个办法,不知有没有改进版的
      

  6.   

    问题解决,解决代码如下,谢谢热心的朋友提醒 <?php
     $sql = "SELECT `id` , `name`
    FROM `interior_authority`";
    $authority = explode(",",$row['authorityid']);
    $sql = mysql_query($sql,$conn); while($row = mysql_fetch_array($sql)){
     $cc="";
    foreach($authority as $value){
     if($row['id']==$value){
     $pd = "true";
    $cc = <<<EOD
    <label><input name="chk_authority[$row[id]]"  type="checkbox" id="chk_authority" value="$row[id]" checked="checked"/>&nbsp;$row[name]</label>
    EOD;
    break;
     }else{
     $pd = "false";
     }//if end
     $cc=$cc.$cc; }//foreach end
    if($pd == "true"){
    echo $cc; }else{
    echo <<<EOD
    <label><input name="chk_authority[$row[id]]"  type="checkbox" id="chk_authority" value="$row[id]" />&nbsp;$row[name]</label>
    EOD;
    }

    }
     ?>