[PHP][CakePHP][Ajax]プルダウンメニューで表示する内容を変更する

exams テーブルに以下のデータが入っているとする。

iduser_iddatemathenglishphysics
112008-10-01493656
222008-10-01454842
332008-10-01728091
2132008-12-158600
2022008-12-153000
1912008-12-154900
2432009-03-186300
2322009-03-185400
2212009-03-188900

ajax ヘルパーの observeField() メソッドを使用することで user_id のプルダウンメニューを定期的に監視し、変化があった時に exam_table が呼び出される。
exam_table では $this->data を使用してフォームに入力された user_id の値を取得し、該当する user_id のデータのみを返すようにできる。
views/exams/index.ctp に以下を記述

<?php
echo $form->create('user_id');
echo $form->input('user_id', array('options' => array(1, 2, 3)));
echo $form->end();
?>
<div id="result">ここに結果がdiv>
<?php
echo $ajax->observeField('user_id',
array(
'url' => array('action' => 'exam_table'),
'frequency' => 0.2,
'update' => 'result'));
?>

views/exams/exams_table.ctp を追加

<body>
<table border="1">
<tr>
<th>IDth>
<th>user_idth>
<th>Dateth>
<th>mathth>
<th>englishth>
<th>physicsth>
tr>
<?php
foreach ($exams as $exam) {
echo "\n";
echo "" . $exam['Exam']['id']; "\n";
echo "" . $exam['Exam']['user_id']; "\n";
echo "" . $exam['Exam']['date']; "\n";
echo "" . $exam['Exam']['math']; "\n";
echo "" . $exam['Exam']['english']; "\n";
echo "" . $exam['Exam']['physics']; "\n";
echo "\n";
}
?>
table>

body>

controllers/exams_controller.php に以下を追加

function exam_table() {
$conditions = array('user_id' => $this->data['user_id'] + 1);
$order = 'date';
$exams = $this->Exam->find('all',
array('conditions' => $conditions,
'order' => $order));
$this->set('exams', $exams);
}