10日目(やっと完成)一昨日の続き。昨日はブログを書く時間が無かったので2日分まとめて書く。9日目(昨日)計算式ごとの回答タイム平均値をテーブルから取得する処理をコーディング。「ユーザーIDがログインユーザーのIDで、パターンが足し算(add)のレコードの、計算式と回答タイム平均値をタイムが大きい順に最大100件取得」という処理をモデルのfind()メソッドで書いたら以下のようになった。関数を使った場合の格納形式についてはCakePHPマニュアルに書かれている。(日本語版マニュアルには、現在この記述は無い)10日目(今日)計算式ごとの回答タイム平均値を表示する画面をコーディング。テーブル追加」で妥協した。これで一応完成したので、コントローラー、モデル、ビューとJavaScript(修正箇所のみ)の全分岐を通すテストを行った。小さなバグが3つぐらいあった。10日間CakePHPプログラミングを行って、CakePHPは結構理解できたと思う。CakePHPの機能で十分で、PHPの関数はあまり使わなかったので、PHPの理解は怪しい。昨日の続きだが、状況確認も兼ねて今作ろうとしているものを改めて書いておく。先日作った簡単な計算の特訓ページに、次の機能を追加する。・データベースに登録された回答タイムを表示やりたいことは「計算式ごとの回答タイム平均値を表示」なのだが、そのためには回答タイムを登録する必要があり、誰のデータかを識別するためにユーザー登録やログインが必要になる。今日はユーザー登録機能とログアウト機能を作った。式ごとの回答タイムをデータベースに登録する際の入力チェック部分を作った。いう形で式とタイムが格納されており、以下のように正規表現を使ってチェックした。タイムを配列へ格納}}この前正規表現について色々と調べたので、正規表現を書くのはそれほど苦労しなかった。5.3.0から非推奨」とマニュアルに書かれていたので、preg_match()を使用した。現在の状況だが、「データベースに登録された回答タイムを表示」以外の機能は完成。完成した機能の入力チェック処理、エラー処理に漏れが無いか見直す必要あり。テストが不十分なのでせめて分岐を全部通すぐらいのテストはしたい。明日で完成すればいいと思うが、テストとデバッグだけで丸一日かかりそうな気がする。CakePHPのプログラミングは3日ぶりだ。キリのいいところまで作ったらHTML5の勉強に入りたいのだが、用事があったり体調が良くなかったりで、なかなかPHPプログラミングが終わらない。今日はログイン絡みの入力データチェック部分をコーディングした。・クッキーに格納されているユーザIDがusersテーブルに存在するか。・ログイン画面から入力されたデータを、モデルのvalidates()メソッドでチェック。・ログイン画面から入力されたユーザーIDはusersテーブルに存在するか、パスワードはusersテーブルのデータと一致するか。output/display.と書かれていた。勝手にSQLインジェクション対策をしてくれる。自分が作っているログイン機能の仕様上、HTMLサニタイズは不要なので、結局サニタイズのコーディングは無し。今日は1時間半しかプログラミングできなかった。明日はもっと時間を取りたい。配列データを一旦格納し、イベント発生時にAjaxで送信するこの前、「後でブログに書きたい」と書いてたことを今更まとめる。JavaScriptで配列データを作成し、そのデータをすぐに送信するのではなく、送信ボタンを押したときにAjaxで送信するようなケースを考える。この場合、作成した配列データをどこかに格納しなければいけない。配列をグローバル変数にして格納してもいいのだが、jQueryのdataメソッドが便利なのでそれを使用する。引数に設定してサーバーへ送信となる。