- ベストアンサー
PHPで同じページに似た内容のデータベースを表示
- PHPを使用して同じページに似た内容のデータベースを表示する方法について質問します。
- 現在、PHPを使用して同じデータベース(table)から異なる条件でリストを表示させていますが、より簡単でスマートな方法はないか知りたいです。
- もし簡単な方法がある場合は、それを何と呼べば検索できるのか教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
配列にいれて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']でブレークしながらの処理が好みではありますが・・・
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
ちょこっと工夫してこんな感じで <?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"]; } ?>
お礼
ありがとうございます!! こんな方法もあるんですね!! 助かりました♪
お礼
>>配列にいれてforeachで順次処理 すいません、ド素人で、地道にやって来たもので、 使った事ありませんでしたっ!! ありがとうございます、できました!!