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

WBOY
發布: 2016-06-23 14:12:29
原創
966 人瀏覽過

PHP根据条件循环显示

 <?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"/> $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"/> $row[name]</label>EOD;
登入後複製

那他就会重复显示;
希望能各位朋友帮个忙


回复讨论(解决方案)

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/> $row[name]</label>EOD;}
登入後複製

你只让程序显示了相等的情况,没让程序显示不相等的情况

if($row['id']==$value){            echo<<<EOD<label><input name="chk_authority[$row[id]]"  type="checkbox" id="chk_authority" value="$row[id]" checked="checked"/> $row[name]</label>EOD;         }else{echo<< $row[name]EOD;}
登入後複製
登入後複製

你只让程序显示了相等的情况,没让程序显示不相等的情况

if($row['id']==$value){            echo<<<EOD<label><input name="chk_authority[$row[id]]"  type="checkbox" id="chk_authority" value="$row[id]" checked="checked"/> $row[name]</label>EOD;         }else{echo<< $row[name]EOD;}
登入後複製
登入後複製
这样每遍历一次数组,他就会重复,这个我试过不行

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

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

因为有丙次的盾环在那里: foreach 与WHILE 循环

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

foreach($mysqlResult as $row){	$hasValue = false;	foreach($authority as $value){         if($row['id']==$value){           $hasValue = true;         }    }    if($hasValue){    	echo 'yes';    }else{    	echo 'no';    }  }
登入後複製


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

问题解决,解决代码如下,谢谢热心的朋友提醒

 <?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"/> $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]" /> $row[name]</label>EOD;	}	} ?>
登入後複製

版主的这个方法,不但会重复就连那个选择口也不会出来,不过还是谢谢你的热心

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板