- ベストアンサー
検索条件で絞込みの方法を教えて下さい。
いつもお世話になります。 1千件ほどのデータからいろいろな条件でデータの絞込みをしたいの ですが、初歩的な質問で分かりにくいかもしれませんが、御指導 お願いします。 全国の求人情報サイトのように、 市町村テーブル 企業テーブル 条件テーブル 時給 中京区 花屋 毎日 800円以上 下京区 八百屋 週末だけ 900円以上 上京区 魚屋 平日昼間 1,000円以上 左京区 文房具店 夜専門 右京区 旅館 こんな感じでSQLでテーブルを作っています。 これを検索で絞込みたいのですが、 市町村→企業→条件→時給と全部を絞り込んだり、1つだけの条件 で絞込み方法はわかるのですが、 ある場合は二つだけ、例えば企業と時給で検索をかけたり ある場合は、市町村と条件と時給で検索をかけたりして 絞込み結果を出したいのですが、 値のない項目があるとその項目の該当条件がないために 検索結果がなしになります。 同じページにリンクを貼って、GETで値を渡して、絞込みを したいと思っているのですが、よいお知恵をお願いします。 一番基礎的なところからご指導を頂けるとうれしいです。 こんな感じのHPが理想です。 http://www.jobengine.jp/search.html?p=lsk26
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
WHERE条件で likeを使う手もあるかと思います。 #時給条件、なしの場合 if($jikyu == ""){ $other = ""; } #時給条件、ありの場合 else { $other = "and jikyu >= '$jikyu'" } WHERE shicho like '%$shicho%' and kigyo like '%$kigyo%' and joken like '%$joken%' $plus 市町村、企業、条件はlike '% %' でも大丈夫じゃないでしょうか。時給は~円以上を使う場合if分で条件式を変えてあげればいいと思います。
その他の回答 (2)
- taaaaaaa
- ベストアンサー率38% (31/80)
like '% %' なら もし 中央区なら like '%中央区%' となり 指定なしでも like '%%' となり 全てを検索してくれます。 $plusは、間違えました。 $plusじゃなくて$otherです。 『時給条件を加える』という意味です。
補足
ありがとうございます。 よく理解できました。 何とかうまく動いてくれました。 感謝します。
- amountainblast
- ベストアンサー率33% (63/186)
こんにちは。 GETで値を取得するのですから、後はその値を見て検索条件があれば、Where句に追加していけばいいだけです。 GETで取得するパラメータ 市町村,企業,条件,時給 と検索条件変数 $jouken="";(検索条件には初期でnullを代入) あとはパラメータの値を見て、 if(isset(市町村) and 市町村 != ""){ if($jouken == ""){ $jouken = "WHERE 市町村テーブル = 市町村"; }else{ $jouken .= " AND 市町村テーブル = 市町村"; } } ってな感じですべてのパラメータに対して同じ処理をすればOKです。 処理のイメージは 1、パラメータ市町村の値があれば、検索条件に加える。 2、$joukenがnull 検索条件が何もなければ、 新しく条件の追加、 すでに条件があれば、 andで条件の追加 をしています。 簡単ですみませんが、大体の考え方がわかるかと思いますので、後はがんばってください。
お礼
そうそうに御指導を頂き、ありがとうございます。 なぜか、シンクタンクエラー'{'となってしまいます。 原因を考えたりしていて返信が遅くなりました。 ただ発想の仕方はなんとなく理解できたので、 ただ今チャレンジ中です。 ありがとうございます。
お礼
ありがとうございます。 現在チャレンジ中です。 like '% %'でも大丈夫ということなのですが、 この内容がイマイチ理解できないのと 最後の$plusというのも何かを意味しているのでしょうか? 変数として追加するものがあればというような ことなのか、このような記述が必要なのか シンクタンクエラーとなってしまいうまく行って くれないので、現在奮闘中です。