Table: テーブル例
id | user_id | math | english | physics |
1 | 1 | 49 | 36 | 56 |
2 | 2 | 45 | 48 | 42 |
3 | 3 | 72 | 80 | 91 |
<?php class User extends AppModel { var $name = 'User'; // var $hasOne = 'Profile'; var $hasOne = 'Exam'; var $hasMany = 'Diary'; } ?>Model に exam.php を追加
<?php class Exam extends AppModel { var $name = 'Exam'; var $belongsTo = 'User'; } ?>Controller にある users_controller.php に以下を追加
function exam($param = null) { if (!$param) { /* デフォルトは math を表示 */ $param = 'math'; $this->set('graph_path', 'exam_graph/' . $param); } else { $this->set('graph_path', '../exam_graph/' . $param); } $this->set('param', $param); } function exam_graph($param = null) { /* JpGraph を使用する */ App::import('Vendor', 'jpgraph/jpgraph'); App::import('Vendor', 'jpgraph/jpgraph_bar'); /* DB から値を取得 */ $users = $this->User->find('all'); $ydata = array(); $a = array(); /* 値を取り込む */ foreach ($users as $user) { array_push($ydata, $user['Exam'][$param]); array_push($a, $user['User']['username']); } /* グラフ作成 */ $graph = new Graph(350, 250, "auto"); $graph->SetScale("textlin"); /* X軸項目追加 */ $graph->xaxis->SetTickLabels($a); /* plot作成 */ $bplot = new BarPlot($ydata); /* グラフ上に描画 */ $graph->Add($bplot); /* グラフ表示 */ $graph->Stroke(); }exam.ctp を作成
<html> <head> <title></title> </head> <body> <h1><?php echo $param; ?></h1> <?php echo '<img src="' . $graph_path . '" />'; ?> <hr> </body> </html>結果
- cake/users/exam にアクセスすると数学の結果が表示される
- cake/users/exam/math にアクセスすると数学の結果が表示される
- cake/users/exam/english にアクセスすると英語の結果が表示される
- cake/users/exam/physics にアクセスすると物理の結果が表示される
0 件のコメント:
コメントを投稿