モーニング娘。在籍日数等一覧 機能追加 ソースと解説

2013年の11月に在籍日数順の一覧表を作ったのですが、その後思いつくままに生年月日順、誕生日順の一覧表を追加してきました。つい最近になって、本来あるべき加入日順の一覧表が無いという事に気付きました。そもそも、メンバーの在籍日数の変化、それにともなって卒業した先輩メンバーを追い越す様子を眺めるためのものだったので、そんなことは当初は考えてもみなかったのです。

しかし、せっかくデータベースを使っているのですから、そこから引き出せる情報は工夫しだいでいくらでも可能です。そこで、今回は、機能としては、加入日順の一覧と選択した期のみの一覧の表示、そして画面の左側にナビゲーションを配置して切り替えが簡単にできるようにしてみました。

2018年9月19日(水) なんと大変なバグを見つけました。えっ今更?と思われるでしょうが、なぜこれまで気付かなかったのか自分でも不思議です。

たとえば、1期のみを表示しようとすると、なぜか、1期の他に10期、11期、12期、13期、14期も表示されるのです。2期を指定すると、2期と12期が表示されます。3期を指定すると3期と13期が、そして4期を指定すると4期と14期が表示されるという現象が起きていました。

これは、データベースからレコードを抽出する際に、入力した数字のみならず、その数字が入っている期の数字も選択してしまうという現象です。

これは、model内の関数でwhreと書くべき所をlikeと書いてしまった間違いでした。気が付いてすぐに修正しました。

phpソース

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

MVCfile name概要
Controllermusume.phpプログラムの本体
今回はfunction kanyubijun()とfunction kinomi()を追加
Modelmusume_model.phpデータベース関連関数の定義
今回はfunction get_member_list_kanyubijun()とfunction get_member_list_ki($ki)を追加
View musume_main.php在籍日数順一覧表示のhtmlを作る部分
musume_birthjun.php生年月日順一覧表示のhtmlを作る部分
musume_tanjobijun.php誕生日順一覧表示のhtmlを作る部分
musume_kanyubijun.php加入日順一覧表示のhtmlを作る部分(今回追加)
musume_kinomi.php期のみの一覧表示のhtmlを作る部分(今回追加)
musume_sidemenu.php左側のナビゲーション画面(今回追加)
musume_tmpl.phpWebブラウザに送るhtmlを構成する枠組
header.phpAvocadoMix共通ヘッダー
footer.phpAvocadoMix共通フッター

controllers/musume.php (関数を二個追加)

今回追加したのは、function kanyubijun()とfunction kinomi()です。

function kanyubijun()の方は特に特徴も無く、データベースからkanyubi項目の昇順に読み出したレコードを連想配列に読み込んで、表示用のthmlを作るという流れです。

function kinomi()の方は、ブラウザ上でユーザーが選択した期のデータをPOST方式で受け取り、これが無い場合はまさかエラー表示するのも面倒ですからデフォルトとして在籍日数順一覧を表示します。データがある場合はこれを$kiという変数に格納します。それをパラメータとしてモデル内のget_member_list_ki($ki)にパラメータ(期)を渡して、そのリストを受け取り、これを表示用の連想配列に格納します。さらに何期の一覧なのかがわかるように見出しに表示する為に、期の数字部分を連想配列に入れて起きます。

views/musume_model.php (関数を二個追加)

今回追加したのは、function get_member_list_kanyubijun()とfunction get_member_list_ki($ki)です。

function get_member_list_kanyubijun()では、レコードを読み込む順を、加入日順の生年月日順としています。同じ期でも年長者の方が先になります。

function get_member_list_ki($ki)では、データベース内の項目kiの内容が渡されたパラメータ$kiと一致するレコードを選択します。レコードを読み出す順序は、期順の生年月日順としています。

views/musume_submenu.php (新規作成)

左側に表示するナビゲーションです。これはコントローラでは使用しないで、この下に掲載するテンプレートから直接読み込むようにしてあります。

views/musume_kinomi.php (新規作成)

二行目、見出し(h2ヘッダー)内にコントローラから渡された連想配列内の$kiを表示します。

views/musume_tmpl.php (一部変更)

最終的にWebブラウザに送るhtmlを構成します。おなじみのhtmlの書き出しの呪文から始まっています。html+cssでxhtmlを構成しています。

今回の主な変更点は、左サイドのナビゲーション(musume_submenu.php)を直接読み込むようにしたことで、それに伴いCSSをAvocadoMix標準のものにしたことです。

2017年8月13日 記