• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:mysql_fetch_arrayを何度も使いたい)

mysql_fetch_arrayを効率的に使いたい!phpとmysqlを活用した配列の比較とカウント方法

このQ&Aのポイント
  • phpとmysqlを使用して、配列の値とデータベースのフィールドの値を比較し、一致する場合にチェックボックスを作成します。
  • また、一致した数もカウントして表示します。
  • mysql_fetch_arrayを複数回使用する場合や、より効率的なカウント方法についてもご教示ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

ひとつはデータをシークする http://www.php.net/manual/ja/function.mysql-data-seek.php もうひとつは一度配列にとっておく

taurin1000kg
質問者

お礼

有難うございます。mysql_data_seekを使うとできましたが、件数を取得するのはこのやり方で正しいですか。 <?php $m = mysql_connect('localhost','root',password); $mm = "SELECT * FROM tableA"; mysql_set_charset('utf8'); $mmm = mysql_query($mm,$m); $values=array( "chk1"=>array("a1","a2","a3","a4","a5","a6","a7","a8","a9","a10") ,"chk2"=>array("b1","b2","b3","b4","b5","b6","b7","b8","b9","b10") ,"chk3"=>array("c1","c2","c3","c4","c5","c6","c7","c8","c9","c10") ); foreach($values as $key=>$array){ foreach($array as $val){ $checked=(isset($_REQUEST[$key]) and in_array($val,$_REQUEST[$key]))?" checked":""; $count = 0; while($r = mysql_fetch_array($mmm)){ if($val === $r['d']){$count++;} } if($count>0){ $h = $h.$val.'<input type="checkbox" name="'.$key.'[]" value="'.$val.'"'.$checked.'/>('.$count.')<br />'."\n"; } mysql_data_seek($mmm,0); } print "<br />\n"; } function checkbox($c){ foreach($c as $key => $val){ echo htmlspecialchars($val, ENT_QUOTES, 'UTF-8')."<br />"; } } if(isset($_GET["chk1"])){checkbox($_GET["chk1"]);} if(isset($_GET["chk2"])){checkbox($_GET["chk2"]);} if(isset($_GET["chk3"])){checkbox($_GET["chk3"]);} ?> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> <form method="get" action="checkbox2.php"> <?php if(isset($h)){echo $h;} ?> <input type="submit" value="送信" /> </form> </body> </html>