Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。3絞込み検索に対応する(設計)絞込み検索に対応する(実装)まとめ絞込み検索に対応する(設計)それでは、次は画面左側の「商品検索」エリアの開発に取り掛かります。「商品名」および「カテゴリ」での絞込み条件を追加しましょう。絞込み検索に対応したSQL文を考えてみてください。「商品名」および「カテゴリ」の組み合わせのバリエーションは、次のようになります。'3'と同じ意味となります。今回はプログラムの記述の効率を考え、INを使った書き方で実装します。それでは、上記の検索方法の全パターンをPHPで実現するためにはどのようにしたらよいか考えてみましょう。実現方法は、例えば次のようになります。条件分岐を使用し、検索エリアの入力状態に応じて適宜、SQLの条件を追記していけば実現できそうです。処理1)「商品名」テキストボックスに、何か文字が入力されているかを判断する。処理2)もし入力されていれば、item_nameカラムで絞り込む条件を付加する。チェックボックスのいずれかに、チェックが入っているかを判断する。処理4)もし1つでもチェックされていれば、SQLの条件にcategoryカラムで絞込む条件を付加する。テキストボックスやチェックボックスの入力値は、$_REQUESTという特殊な変数に格納されていることを思い出してください。絞込み検索に対応する(実装)それでは、PHPプログラムの条件分岐をうまく利用し、上記の全パターンに対応できるように、絞込み検索を実装してみましょう。item_list_ver2.phpを開いてください。絞込み条件には対応していますが、「商品名」での絞込みには対応していない状態です。40行目の「以下、商品名で絞込み検索を行うために、SQL文に条件を追加しましょう。」と書かれている箇所に、商品名での絞込み処理を記述してみてください。※注もし、実行しているSQLの中身を見たい場合は、item_list_ver2.phpの63行目などに変数$sqlの中身を画面に表示するprint文print($sql);と記述して、ファイル名をitem_list.phpに変更後保存し、商品一覧画面で実際に検索してみましょう。図2のように、検索結果の画面右上に変数$sqlの中身が表示されます。item_list_ver2.phpの39行目に、以下のプログラムを追記してください。print($_REQUEST["item_name"])?>"/>の部分を見れば分かるとおり、「item_name」という名前が付いているので、$_REQUEST["item_name"]という変数にその入力値が格納されています。従って、上記のif文は、「もしitem_name(商品名)テキストボックスが未入力でなければ」という意味です。'%<入力値>%'のようなSQLが実行されることになります。C:\xampp\htdocs\ec\item_list.phpに上書き保存し、動作を確認してみましょう。まとめ今回は、商品一覧ページの実装を行いました。解読にかなりの労力を要した方も多いかと思います。今回のような検索機能は、実際のサイトでも頻繁に見かけるので、一度経験しておくと同種のサイトの実装が今後、非常に楽にできるはずです。プログラム内部では、考えるべき例外ケースも意外と多いことに注意しましょう。今回新たに学習した技術要素は以下となります。今回の新たに覚えたことあるカラムにいずれかの値が入っているかを確認するために、SQLのINキーワードを使うことができる。ループで囲まれた部分にHTMLを直接記述することで、そのHTMLをループの回数だけ、画面に表示できる。2ページ目の$itemsを$resに修正しました。スペイン語を専攻していたものの何故かプログラム言語に心が傾き、近所のフリープログラマーに弟子入り修行。年間所属し、現在はフリーエンジニア。プラットフォームチームの意義と実践のポイント1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。プラットフォームチームの意義と実践のポイント1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。プラットフォームチームの意義と実践のポイント1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。NEW新着記事一覧を見るイベント今後の予定を見るCodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。