ホームページ > バックエンド開発 > PHPチュートリアル > 条件に基づいてチェックボックスをループする方法を教えてください。

条件に基づいてチェックボックスをループする方法を教えてください。

WBOY
リリース: 2016-06-23 14:12:29
オリジナル
997 人が閲覧しました

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 です。チェックボックスに「√」をマークするだけで、他の等しくない項目が直接表示されます
問題は次のとおりです。チェックボックスは「√」でマークできますが、「√」でマークされていないものは表示されません。whel ループに追加の
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{}

どうすればよいですかこれは繰り返されるでしょうか? 。
条件は 1 つだけ、「はい」または「いいえ」のいずれかです。 。

if($id==$value){}else{}

これをどのように繰り返すことができますか。 。
条件は 1 つだけ、「はい」または「いいえ」のいずれかです。 。

そこには C 回のシールドリングがあるため: foreach ループと WHILE ループ

1 回ループする間、foreach は 4 回ループする必要があります。これは、$authority 配列には 4 つの値があり、これら 4 つの値のうち 1 つの値だけが $ で構成されているためです。 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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート