🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

1203閲覧

Chrome ARCで値送信が正常に動作しない

4CDAxx

総合スコア1

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2021/03/06 07:21

編集2021/03/06 08:45

スクールの課題としてデータベースについて学習しています。
その中で、Chromeの拡張機能である「ARC(Advanced REST client)」を利用して自身で作成したデータテーブルに値をPOSTするという処理を行うのですが、タイトルの通り値の送信が正常に動作しない(送信失敗してしまう)のです。

実現させたい内容としましては

  1. スコアを元に降順にソート、ランキング上位5人を表示させる[ranking関数部分]
  2. 上記のランキングデータをjson形式へ変換[getRanking関数部分]
  3. 仮のプレイヤー名(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 }

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/03/06 07:41

>phpMyAdminのデータテーブルに 細かいですが、phpMyAdminはMySQLを操作するツールであってデータベースそのままではないです。
4CDAxx

2021/03/06 08:43

ご指摘ありがとうございます。 修正致します。
guest

回答1

0

自己解決

記述内容を誤りを見つけて解決した

投稿2021/03/09 06:52

4CDAxx

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問