• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:チェックボックス + フリーワード検索 PHP&MYSQL)

チェックボックス + フリーワード検索 PHP&MYSQL

このQ&Aのポイント
  • 現在検索画面の作成をしているのですが、分からないことがありましたので質問をさせて頂きました。
  • 検索画面ですが、簡単な2ページ構成になっております。
  • 仕様としてはkensaku.phpにチェックボックス(複数選択可)とフリーワードがあり、一つの検索ボタンで検索し結果をresult.phpに表示させようと思っております。

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

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

たとえばこんな感じ <?php //$sejyutu = $_POST["sejyutu"]; //$sejyutu_else = $_POST["sejyutu_else"]; $sejyutu = Array("aaa","bbb","ccc"); $sejyutu_else = "hoge"; $whereStr=""; if(is_array($sejyutu)){ $str=""; foreach($sejyutu as $val){ $str.=($str==""?"":" OR ")."`sejyutu`='{$val}'"; } $whereStr.=" AND({$str})"; } if($sejyutu_else!=''){ $whereStr.=<<<eof AND `sejyutu_else` LIKE '%{$sejyutu_else}%' eof; } if($whereStr=="") $whereStr="AND 0"; $sql =<<<eof SELECT * FROM `table` WHERE 1 {$whereStr} eof; print $sql; ?> 検索条件が複数あるときは常にANDでつないでいけば混乱がすくなくてすみます。 インジェクション対策は別途実装ください。

noname#130289
質問者

補足

さっそくのご回答ありがとうございます! コードを拝見させて頂きました。ANDでつなげていくということは大変勉強になりました。ただまだ私PHPと申しますかプログラム自体初心者のため コードを全て理解するのが難しく、時間をかけないとだめそうです。。 ただあまり時間がなく、、 今の書いていたのがあるのですが あまりうまく動きません。 仕様がめちゃくちゃになっております。、 もしなにかご指摘など頂けるようでしたらお伺い出来ませんでしょうか? 申し訳ございません。 <?php if (!$int_connect = @mysql_connect('localhost','aaa','aaa')) { die("can't connect mysql server."); } //データベースに接続 if (!@mysql_select_db("database", $int_connect)) { die("can't use selected database."); } if(!isset($_POST['sejyutu'])and isset($_POST['sejyutu_else'])){ $sql = "select * from table where sejyutu_else like '%$sejyutu_else%'"; } else if(isset($_POST['sejyutu'])and !isset($_POST['sejyutu_else'])){ foreach($_POST['sejyutu'] as $value){ $sql = "select * from table where sejyutu like '%$value%'"; } }else if(isset($_POST['sejyutu'])and isset($_POST['sejyutu_else'])){ $sql = "select * from table where sejyutu and sejyutu_else like '%$value%', '%$sejyutu_else%'"; }else{ echo "検索キーワードを入力して下さい。"; } $result=mysql_query($sql,$int_connect); $rows=mysql_num_rows($result); ?> <table width="430" cellpadding="5" cellspacing="0" class="font12"> <?php while($row = mysql_fetch_array($result)){ ?> <tr> <td colspan="2"><p class="salon_name"><?php echo mb_convert_encoding(trim($row["name"]),"sjis","euc-jp") ?></p></td> </tr> <tr> <td valign="top"><p class="salon_item">最寄り駅:</p></td> <td class="salon_detail"><?php echo mb_convert_encoding(trim($row["station"]),"sjis","euc-jp") ?></td> </tr> <tr> <td valign="top"><p class="salon_item">住所:</p></td> <td class="salon_detail"><?php echo mb_convert_encoding(trim($row["address"]),"sjis","euc-jp") ?></td> </tr> <tr> <td valign="top"><p class="salon_item">施術名</p></td> <td class="salon_detail"><?php echo mb_convert_encoding(trim($row["sejyutu"]),"sjis","euc-jp") ?></td> </tr> <?php } ?> </table> </body> </html>