• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPで同じページに似た内容のデータベースを表示)

PHPで同じページに似た内容のデータベースを表示

このQ&Aのポイント
  • PHPを使用して同じページに似た内容のデータベースを表示する方法について質問します。
  • 現在、PHPを使用して同じデータベース(table)から異なる条件でリストを表示させていますが、より簡単でスマートな方法はないか知りたいです。
  • もし簡単な方法がある場合は、それを何と呼べば検索できるのか教えてください。

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

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

配列にいれてforeachで順次処理すればいいんじゃないでしょうかね $arr = array('鈴木', '佐藤'); foreach ($arr as $val) { $sql = "select name, tel from table where name like '%" . $val . "%'"; $rs = mysql_query($sql) or die('abort'); $hd = false; while($row = mysql_fetch_array($rs)) { if (!$hd) { echo "<" . $val . "さん><br />" . PHP_EOL; $hd = true; } echo $row['name'] . " " . $row['tel'] . "<br />" . PHP_EOL; } } 個人的にはlikeをorで繋いで(かつorder by nameにして)、$row['name']でブレークしながらの処理が好みではありますが・・・

rabbit-kimura
質問者

お礼

>>配列にいれてforeachで順次処理 すいません、ド素人で、地道にやって来たもので、 使った事ありませんでしたっ!! ありがとうございます、できました!!

その他の回答 (1)

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

ちょこっと工夫してこんな感じで <?PHP $arr = array('鈴木', '佐藤'); $sql="select case"; foreach($arr as $key=>$val){ $sql.=" when name like '%".$val."%' then ".$key; } $sql.=" end as name_key"; $sql.=",name,tel from person"; $sql.=" where name regexp '".implode($arr,"|")."'"; $sql.=" order by name_key"; $res = mysql_query($sql); //print $sql; $pre=null; while($row = mysql_fetch_array($res,MYSQL_ASSOC)) { if($row["name_key"]!==$pre) print "<".$arr[$row["name_key"]]."さん><br>\n"; print $row["name"]." ".$row["tel"]."<br>\n" ; $pre=$row["name_key"]; } ?>

rabbit-kimura
質問者

お礼

ありがとうございます!! こんな方法もあるんですね!! 助かりました♪

関連するQ&A