日期:2014-05-17  浏览次数:20492 次

根据条件循环复框,麻烦各位朋友帮我看一下应该怎样改

 <?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根据条件循环显示

------解决方案--------------------
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;
}

------解决方案--------------------
foreach($mysqlResult as $row){
$hasValue = false;
foreach($authority as $value){
         if($row['id']==$value){
           $hasValue = true;
         }
    }
    if($hasValue){
     echo 'yes';
    }else{
     echo 'no';
    }
  }


暂时只想到这个办法,不知有没有改进版的