スクールの課題としてデータベースについて学習しています。
その中で、Chromeの拡張機能である「ARC(Advanced REST client)」を利用して自身で作成したデータテーブルに値をPOSTするという処理を行うのですが、タイトルの通り値の送信が正常に動作しない(送信失敗してしまう)のです。
実現させたい内容としましては
- スコアを元に降順にソート、ランキング上位5人を表示させる[ranking関数部分]
- 上記のランキングデータをjson形式へ変換[getRanking関数部分]
- 仮のプレイヤー名(name)と仮のスコア(score)を入力し送信[setRanking関数部分]
といった内容です。
最初にranking関数を作り、その後getRankingとsetRankingを追加しました。
getRankingでのjson形式への変換はうまく行えたのですが、setRankingがうまくいかず画像の左下のように「Failed...」と表示されてしまうのです(Success!と表示されれば送信成功)。
setRankingの記述内容に何か誤りがあるのかと思い、何度も見直したのですが原因を突き止められずにいます。
拙い説明で大変恐縮ですが、どこに原因があるのかを教えて頂きたく存じます。
php
1 // ランキング表示(スコア降順) 2 public function ranking() 3 { 4 // [rankingsystem]テーブルからクエリを取得 5 $query = $this->Rankingsystem->find('all'); 6 7 // 現在のクエリの状態をデバッグ表示する 8 // debug($query); 9 10 // カラム['Score']をキーにして降順ソート 11 $query->order(['Score' => 'DESC']); 12 $query->limit(5); 13 14 // クエリを実行してarrayにデータを格納 15 $array = $query->toArray(); 16 17 // 全レコードのScoreを取得 18 for ($i = 1; $i <= count($array); $i++) { 19 $tmpRecord = $array[$i - 1]; 20 $this->set('ranking' . $i, $tmpRecord['Score']); 21 $this->set('name' . $i, $tmpRecord['Name']); 22 } 23 } 24 25 public function getRanking() 26 { 27 // エラーログのエクスポート 28 error_log("getRanking()"); 29 30 // Viewのレンダーを無効化 31 $this->autoRender = false; 32 33 // DBのrankingsystemテーブルからクエリを取得 34 $query = $this->Rankingsystem->find('all'); 35 36 // クエリを利用してデータの並べ替えを行う 37 $query->order(['Score' => 'DESC']); 38 $query->limit(5); 39 40 // クエリを元にjson形式へ変換 41 $json_array = json_encode($query); 42 43 // 内容を出力 44 echo $json_array; 45 } 46 47 public function setRanking() 48 { 49 // エラーログのエクスポート 50 error_log("setRanking()"); 51 52 // Viewのレンダーを無効化 53 $this->autoRender = false; 54 55 // POSTデータの受け取り 56 // name,scoreをPOSTで受け取る 57 $name = $this->request->getData('name'); 58 $score = $this->request->getData('score'); 59 60 // テーブルに追加するレコード情報を作る 61 $data = array('Name' => $name, 'Score' => $score, 'Date' => date('Y/m/d H:i:s')); // timestamp型 62 63 $rankingSystem = $this->Rankingsystem->newEntity(); // レコードの作成 64 $rankingSystem = $this->Rankingsystem->patchEntity($rankingSystem, $data); // レコードの更新 65 66 // テーブルへレコードの追加 67 if ($this->Rankingsystem->save($rankingSystem)) { 68 // 追加成功 69 echo "Success!"; 70 } else { 71 // 追加失敗 72 echo "Failed..."; 73 } 74 }
回答1件
あなたの回答
tips
プレビュー