質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
POST

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

934閲覧

ボタンを押した時値を送りその時のデータベースの情報をグラフ化

ma_sa_T

総合スコア0

POST

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/05/17 05:02

前提・実現したいこと

私は今HTMLでボタンを押した時にデータベースの値の時間(datetime)と合計(auth)をグラフに表示することをやっています。
表示するだけならできるのですがこの時ボタンを押したらある一定の時間をJavaScriptでPHPに送ってそれをphpで受け取って変数に格納してその変数を交えたSELECT文でデータベースの値を取得してまたJavaScriptに送り返してその時のグラフを表示というのを実現したいのですがエラーが出てグラフが表示されない状態になっています。POSTはできてるのでおそらくPHP側の問題かと思われますがわからないのでぜひ力添えをお願いしたいです。

発生している問題・エラーメッセージ

エラーメッセージ VM621:1 Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0

該当のソースコード

HTML

1ソースコード 2<!DOCTYPE html> 3<html lang="ja"> 4<head> 5 <meta charset="utf-8"> 6 <title>グラフ</title> 7 <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.bundle.js"></script> 8 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> 9 10 11</head> 12<body> 13 14 15 <button type="button" name="april" id="april"> 16 <script src="graph.js"></script> 17 第一周目</button> 18 <canvas id="myLineChart"style="width: 100%;height:500px;"></canvas> 19 20</body> 21</html> 22

PHP

1<?php 2 include 'db_config.php'; 3 $swan_image = array(); 4 5 6 try 7 { 8 // connect 9 $db = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD); 10 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 11 //最新の情報 12 $begin = $_POST["begin"]; 13//$end = $_POST['end']; 14 15 16 17 $stmt = $db->query("SELECT auth,datetime FROM `swan_image` WHERE `auth`!=-1 AND `datetime` BETWEEN $begin AND '2021-4-21' "); 18 $swan_image = $stmt->fetchAll(PDO::FETCH_ASSOC); 19 20 /* $id = $swan_image['id']; 21 $image_path = $swan_image['image_path']; 22 $auth = $swan_image['auth']; 23 $date =$swan_image['datetime'];*/ 24 25 $db = null; 26 } 27 catch(PDOException $e) 28 { 29 echo $e->getMessage(); 30 exit; 31 } 32 33 $swan_image_json=json_encode($swan_image); 34 echo $swan_image_json; 35?> 36

JavaScript

1document.getElementById('april').onclick = function() { 2const url='allsyutoku.php'; 3//let date=({'begin_date':'2021-4-12','end_date':'2021-4-18'}); 4/*const params = new URLSearchParams(date); 5fetch(url+'?'+params.toString()) 6.then(function(response){ 7 console.log(response.headers.get('Content-Type')); //text/html; charset=UTF-8 8 console.log(response.headers.get('Date')); //Wed, 16 Jan 2019 03:08:21 GMT 9 console.log(response.status); //200 10});*/ 11const day = "2021-4-13"; 12console.log({"begin": day}); 13$.ajax({ 14 url: url, 15 type: 'POST', 16 data: {"begin": day} 17 //通信状態に問題がないかどうか 18 }).done((data) => { 19 // console.log(url); 20 console.log(data); 21 console.log("成功"); 22 }); 23 24 25 26 27 /*let param=JSON.parse('</*?php echo $swan_image_json; ?>'); 28 console.log( param ); jsonをデコード*/ 29//const url="allsyutoku.php" 30//APIからJSONデータを取得する 31let response=fetch(url) 32 .then(response => response.json()) 33 .then(date => { 34 console.log(date); 35 36const date_list=date.map(function (value){ 37 return value.datetime; 38 }); 39 40const auth_list=date.map(x => x.auth); 41let ctx = document.getElementById("myLineChart"); 42 let myLineChart = new Chart(ctx, { 43 type: 'line', 44 data: { 45 labels: date_list, 46 datasets: [ 47 { 48 label: '匹数', 49 data: auth_list, 50 borderColor: "rgba(0,0,255,1)", 51 backgroundColor: "rgba(0,0,0,0)" 52 } 53 ], 54 }, 55 options: { 56 title: { 57 display: true, 58 59 } 60 } 61 }); 62 }) 63 64 65}

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

PHP側で何かしらエラー出力されてるのでは。
ひとまずサーバーのエラーログ確認してください。

直接的な原因はおそらくSQLが正しくない、文字列なのにクォートで囲まれてないことが原因だろうとは思いますが、SQLにそのまま変数組み込むとSQLインジェクションが可能なのでパラメータにしてバインドさせたほうが良いです。(参考

投稿2021/05/17 05:12

m.ts10806

総合スコア80875

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問