料理コーナー 料理検索機能追加 ソースと解説

前回のつづきとして今回は料理を検索する機能を作ってみました。

丼、肉、野菜などの単語を入力して検索することができます。

このように、ブラウザ左側の枠に文字を入力できる窓を開けています。ここに単語を入力して、下の料理を検索というボタンを押して検索するという方式です。

前回の生徒名検索では登録されている生徒名で検索するのですから、検索結果がゼロという事はありませんが、今回は任意に文字列で検索するので、見つからない場合が出てきます。このため、ヒット数をカウントして、ゼロ件だった場合は、見つからなかった旨のメッセージを表示します。

phpソース

実際の文字コードはUTF-8ですが、ここではShift-JISにして表示します。

MVCfile name概要
Controllergno_ryori.phpプログラムの本体
今回はfunction kensaku_ryori()を追加
Modelgno_ryori_model.phpデータベース関連関数の定義
今回はfunction get_ryori_search($q)とfunction get_ryori_search($q)を追加
View gno_ryori_list.php料理の一覧を表示(変更無し)
gno_ryori_main.php料理映像を表示(変更なし)
gno_ryorisubmenu.php左側の検索枠(料理検索窓を追加)
gno_ryori_tmpl.phpWebブラウザに送るhtmlを構成する枠組(変更無し)
gno_ryori_no_side_tmpl.phpWebブラウザに送るhtmlを構成する枠組(新規作成:映像表示用)
header.phpAvocadoMix共通ヘッダー(変更なし)
footer.phpAvocadoMix共通フッター(変更なし)

前回、左に枠を表示するためにレイアウトを変更しましたが、映像表示の画面ではタイトル等が右に寄ってしまう不具合が発生したので、それ専用にgno_ryori_no_side_tmpl.phpというテンプレートを追加しました。これは以前のものとまったく同じものです。

controllers/gno_ryori.php (関数を1個追加など)

今回追加したのは、function kensaku_ryori()ですが、これまでいくつかのプログラムで使ったブラウザから入力した文字を使って検索する関数をほとんどそのまま使っています。

views/gno_ryori_model.php (関数を2個追加)

function get_ryori_search($q)では、検索にヒットした全レコードを返します。

function get_count_ryori_search($q)では、ヒットした件数を返します。これは、検索結果として、見つからなかったというメッセージを表示する為です。

views/gno_ryori_submenu.php

検索する文字列をブラウザに入力する窓を開けています。プログラムへの引き渡しはPOST方式です。

実行

下の画像をクリックすると実行されます。

肉、野菜、などの単語を入力して試してください。

検索された一覧から、さらに「視聴」ボタンを押すと動画が再生されます。

2019年9月3日 記