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

WBOY
Freigeben: 2016-06-23 14:12:29
Original
965 Leute haben es durchsucht

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;		 }	}} ?>
Nach dem Login kopieren

我想要的结果是$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;
Nach dem Login kopieren

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


回复讨论(解决方案)

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;}
Nach dem Login kopieren

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

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;}
Nach dem Login kopieren
Nach dem Login kopieren

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

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;}
Nach dem Login kopieren
Nach dem Login kopieren
这样每遍历一次数组,他就会重复,这个我试过不行

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';    }  }
Nach dem Login kopieren


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

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

 <?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;	}	} ?>
Nach dem Login kopieren

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

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage