【PHP&MySQL】検索フォーム作成

BootStrap

 今日は今挑戦している会員制サイト構築の中で、投稿された記事のリストの表示と検索フォームを作りました。できあがりはこんな感じ。

 初めて作ったので、まずはうまく動けばいいやという感じで。セレクトボックス(校種と教科)で選んだ値をGETで渡し、PHPで処理してMySQLから引っ張ってきて、該当した記事のリストを下に表示するという流れです。

 まずやってみたのはBootstrapのPagination(ページネーション)という機能。記事リストの下にあるページを移るためのボタンです。試しにリストに表示する件数を2件にしたので、それを超える分が2ページ目、3ページ目…というふうになっていくわけです。「<<」や数字それぞれがaタグになっているので、ページ番号をGETで渡して、ページが変化するようにしました。こんな感じで組み立てました。

1 記事の全件数を調べる。
2 ページネーションのリンクの数=「全件数÷1ページあたりに表示するリストの数(今回は2)」の繰り上げ
3 現在表示しているページまでの分をOFFSETとしてSQLに組み込む。(3ページ目なら2×3=6件)
4 LIMIT句で2件分抽出して、リストに表示する。

 結果うまくいきました。よかったー。

 次にフォーム部分を作りました。すでに記事投稿フォームを作っていて、それと同じセレクトボックスにしなければいけないので、セレクトボックス部分の記述を別のphpファイルとして保存して、requireで呼び出しました。記事投稿フォームでは「何も選択しない」ということがないんですが、検索となると選択するとは限らないので、「未選択」という選択肢を作って対応することにしました。お陰で記事投稿フォームのバリデーションを加える必要が出てしまいました。

 とりあえずセレクトボックス部分だけの検索なので、WHERE句の条件式はすぐにできてうまく動きました。問題はキーワード検索で、複数条件で検索するのは難しそうに感じます。ぼちぼち調べながらやってみようと思います。

コメント