料理コーナー 生徒名検索機能追加 ソースと解説
料理コーナーのレコード件数が2019年8月28日現在で90件となりました。少ないうちは検索機能があってもほとんど役に立ちませんが、そろそろあってもいい頃合いですね。そこで、まずは生徒名で検索する機能を作ってみました。
毎回、実習生は2名から3名です。これを検索する為の文字列を手入力するのはめんどうですから、画面から選択する方式にします。それには生徒名を登録しておくテーブルが必要ですね。
そこで、テキスト・エディタに画面からコピペして生徒名を入力し、一人一人に分解してから、OpenOfficeのCalcに貼り付けて、ソートして連番を付けました。(左の図)
さらにこれをCSV形式でとりだして、テキスト・エディタで文字コードをWindowsのShiftJISからUTF-8に変換し、MySQLデータベースに新たに作ったテーブルに入れ込みました。
新たに作ったテーブルは以下のように単純な構造です。
テーブル名 | gno_ryori_seito |
フィールド名 | 型・長さ |
---|---|
id | 数値型 |
seito_name | 文字型・30バイト |
phpソース
実際の文字コードはUTF-8ですが、ここではShift-JISにして表示します。
MVC | file name | 概要 |
---|---|---|
Controller | gno_ryori.php | プログラムの本体 今回はfunction kensaku_seito($seito='')を追加 |
Model | gno_ryori_model.php | データベース関連関数の定義 今回はfunction get_seito_list()とfunction get_seito_ryori($seito)を追加 |
View | gno_ryori_list.php | 料理の一覧を表示(検索結果を表示する場合の検索文字列表示を追加) |
gno_ryori_main.php | 料理映像を表示(変更なし) | |
gno_ryorisubmenu.php | 左側の検索枠(新規作成) | |
gno_ryori_tmpl.php | Webブラウザに送るhtmlを構成する枠組(デフォルトCSSにしてレイアウトを変更) | |
header.php | AvocadoMix共通ヘッダー(変更なし) | |
footer.php | AvocadoMix共通フッター(変更なし) |
controllers/gno_ryori.php (関数を1個追加など)
今回追加したのは、function kensaku_seito($seito='')ですが、最初に表示するときに検索用生徒名一覧を表示する為にindex()内で生徒名テーブルから生徒名一覧データを読み出す処理を追加しています。
生徒名の検索をして結果を表示するのが、function kensaku_seito($seito='')です。前の画面でクリックして渡された生徒名(URLの最後に表示される)、これをパラメータとして受け取り、モデル内の関数から結果を受け取り、一覧を表示します。そのときに検索文字列(生徒名)を連想配列のmsg変数に格納して、画面に引き渡しています。
views/gno_ryori_model.php (関数を2個追加)
function get_seito_list()では、生徒名全レコードを返します。
function get_seito_ryori($seito)では、受け取ったパラメータ文字列(生徒名)がseitoフィールドに含まれるレコードを検索して返します。
views/gno_ryori_submenu.php (新規作成)
この部分が一番苦心したところです。単に動作させるだけなら簡単なのですが、デザイン的には他のコーナーと同じにそろえたいので、あれこれと試行錯誤をくりかえしてやっとできました。そのまま書くとカギ括弧がネストしてしまうので、Aタグ部分をまるごと$s_urlという変数に格納してしまうという方式にしました。
表示例
生徒を選択したときの実行例です。
検索された一覧から、さらに「視聴」ボタンを押すと動画が再生されます。
実際の動作はこちらから確認してください。
2019年8月29日 記