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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

Q&A

2回答

7760閲覧

phpとmysqlで1週間分のデータの集計方法をお教えください。

mizuoniku

総合スコア10

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

0グッド

1クリップ

投稿2019/07/03 22:07

編集2019/07/04 03:27

個人で子供向けのwebアプリを作成しています。
データベースに入力されたデータの1週間分を計算してグラフを表示するページなのですが、

1週間分のデータを取るところで間違っていると思われます。
どこに問題があるかご教授頂けないでしょうか。
初心者でコードが読みにくくて申し訳ありません。
ご指摘頂きありがとうございました。
MYSQLのヴァージョンはmysql - 5.1.73です。

試したこと追記
WHERE createdate >= DATE(DATE_ADD('2019-07-10', INTERVAL -7 DAY))
where以降の日付の指定が無ければ集計が取れます。where以降を付けるとエラーになります。
#1054 - Unknown column 'createdate' in 'where clause'
mysqliに書き直すとはこれで良いのでしょうか?

php $result = $mysqli->query("SELECT SUM(calorie), SUM(protein), SUM(lipid),SUM(carbohydrate), SUM(calcium), SUM(iron),SUM(zinc), SUM(magnesium), SUM(folic_acid),SUM(vitamin_a), SUM(vitamin_d), SUM(vitamin_e),SUM(vitamin_k), SUM(vitamin_b1), SUM(vitamin_b2),SUM(vitamin_c), SUM(dietary_fiber) FROM gohanmemor2 WHERE createdate >= DATE(DATE_ADD($day, INTERVAL -7 DAY))"; $row = $result->fetch_assoc($sum,$conn); $calorie = $row['SUM(calorie)']; $protein = $row['SUM(protein)']; $lipid = $row['SUM(lipid)']; $carbohydrate = $row['SUM(carbohydrate)']; $calcium = $row['SUM(calcium)']; $iron = $row['SUM(iron)']; $zinc = $row['SUM(zinc)']; $magnesium = $row['SUM(magnesium)']; $folic_acid = $row['SUM(folic_acid)']; $vitamin_a = $row['SUM(vitamin_a)']; $vitamin_d = $row['SUM(vitamin_d)']; $vitamin_e = $row['SUM(vitamin_e)']; $vitamin_k = $row['SUM(vitamin_k)']; $vitamin_b1 = $row['SUM(vitamin_b1)']; $vitamin_b2 = $row['SUM(vitamin_b2)']; $vitamin_c = $row['SUM(vitamin_c)']; $dietary_fiber = $row['SUM(dietary_fiber)']; $sto=$db->prepare($sql); $sto->execute(); $db=null; } catch (PDOException $e) { die("<h2>データベース接続に失敗しました</h2>"); }

mysql

1コード 2 3testテーブル 4create table test(sno int auto_increment,day date,calorie int,protein DOUBLE,lipid DOUBLE,carbohydrate DOUBLE,calcium DOUBLE,iron DOUBLE,zinc DOUBLE,magnesium DOUBLE,folic_acid DOUBLE,vitamin_a DOUBLE,vitamin_d DOUBLE,vitamin_e DOUBLE,vitamin_k DOUBLE,vitamin_b1 DOUBLE,vitamin_b2 DOUBLE,vitamin_c DOUBLE,dietary_fiber DOUBLE,primary key(sno)); 5 6 7INSERT INTO test(day,calorie,protein,lipid,carbohydrate,calcium,iron,zinc,magnesium,folic_acid,vitamin_a,vitamin_d,vitamin_e,vitamin_k,vitamin_b1,vitamin_b2,vitamin_c,dietary_fiber) 8values('2019-07-04',741,38.67,38.42,70.62,99.8,3.11,3.21,58.24,92,246.2,2.47,2.18,18.04,0.79,0.58,79,4.8), 9('2019-07-05',1103,45.2,58.4,92.9,694,1.9,6.4,66.7,42,270,0.5,1.2,13,0.29,0.48,10,0.5), 10('2019-07-06',1376,40.97,83.82,105.22,251.8,3.41,5.11,81.24,161,679.2,2.77,2.78,84.04,0.22,0.89,66,1.9), 11('2019-07-07',1088,58.57,62.52,82.72,833.8,2.21,6.91,117.24,163,373.2,0.97,2.18,20.04,0.89,0.72,59,7.8), 12('2019-07-08',835,47.8,32.3,80.2,27,2.5,4.3,76.72,66,30,11.1,1.4,11,0.88,0.5,9,1.8), 13('2019-07-09',988,53.78,45,96.34,552,5.59,8.6,104.7,158.5,209.44,2.6,1.99,86.32,1.03,0.81,68.72,5.18), 14('2019-07-10',1436,146.38,46.36,94.3,305,9.06,14.66,392.6,245.4,487.4,46.2,13.66,53.2,0.67,1.47,68,4.12), 15('2019-07-11',1049,62.6,36,142.9,1007,8.1,6.4,457,600,691,0.1,2.3,1276,1.28,1.6,57,14.11), 16('2019-07-12',828,31.6,39.7,80.4,63,3.4,4.1,45.7,56,150,2.3,1.4,14,0.32,0.58,10,0.5); 17 18

ここから問題のページを簡易化したものです。

php

1 2<?php 3//グラフ作成のPHP 4//formから起算日(デフォルトは当日)を指定して送信されます。 5$day=$GET_['day']; 6?> 7<!DOCTYPE html> 8<html> 9<head> 10<title>testグラフ</title> 11<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 12<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js" type="text/javascript"></script> 13<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.4/Chart.min.js"></script> 14</head> 15<body> 16<?php 17 try{ 18 $db=new PDO('mysql:host=localhost;dbname=webdb','root','root'); 19 20 21 print("<p>データベース[webdb]に接続しました</p>"); 22 23 //起算日から1週間分のデータを取り出します。 24 $sql="SELECT * FROM test WHERE createdate >= DATE(DATE_ADD($day, INTERVAL -7 DAY))"; 25 26 27 $sto=$db->prepare($sql); 28 $sto->execute(); 29 30 while($row=$sto->fetch() ){ 31$sno =$row['sno']; 32$day =$row['day']; 33$calorie = ($row['calorie']); 34$protein = ($row['protein']); 35$lipid = ($row['lipid']); 36$carbohydrate = ($row['carbohydrate']); 37$calcium = ($row['calcium']); 38$iron = ($row['iron']); 39$zinc = ($row['zinc']); 40$magnesium = ($row['magnesium']); 41$folic_acid = ($row['folic_acid']); 42$vitamin_a = ($row['vitamin_a']); 43$vitamin_d = ($row['vitamin_d']); 44$vitamin_e = ($row['vitamin_e']); 45$vitamin_k = ($row['vitamin_k']); 46$vitamin_b1 = ($row['vitamin_b1']); 47$vitamin_b2 = ($row['vitamin_b2']); 48$vitamin_c = ($row['vitamin_c']); 49$dietary_fiber = ($row['dietary_fiber']); 50} 51 52 53 54 55 56//ビタミンとミネラルの合計を計算 57$mineral=$carbohydrate +$calcium +$iron +$zinc +$magnesium; 58$vitamin=$folic_acid +$vitamin_a +$vitamin_d +$vitamin_e +$vitamin_k +$vitamin_b1 +$vitamin_b2 +$vitamin_c; 59 $sto=$db->prepare($sql); 60 if($sto->execute()){ 61 print("<p>データ受け取りしました</p>"); 62 }else{ 63 print("<p>SQL文実行時にエラーが発生しました</p>"); 64 } 65 66 $db=null; 67 68 } catch (PDOException $e) { 69 die("<h2>データベース接続に失敗しました</h2>"); 70 } 71} 72//1週間分の摂取目標 73$calorie_total=10850; 74$protein_total=245; 75$lipid_total=210; 76$carbohydrate_total=455; 77$calcium_total=4200; 78$iron_total=45.5; 79$zinc_total=35; 80$magnesium_total=910; 81$folic_acid_total=910; 82$vitamin_a_total=3150; 83$vitamin_d_total=280; 84$vitamin_e_total=35.0; 85$vitamin_k_total=595; 86$vitamin_b1_total=5.6; 87$vitamin_b2_total=6.3; 88$vitamin_c_total=385; 89$dietary_fiber_total=77; 90 91//ビタミンとミネラルの合計を計算 92$mineral_total=$carbohydrate_total +$calcium_total +$iron_total +$zinc_total +$magnesium_total; 93$vitamin_total=$folic_acid_total +$vitamin_a_total +$vitamin_d_total +$vitamin_e_total +$vitamin_k_total +$vitamin_b1_total +$vitamin_b2_total +$vitamin_c_total; 94 95 96//パーセントの計算を定義 97function num2per($val, $val_total, $precision = 0) { 98if (($val < 0)or($val_total < 0)) { return false; } 99$val_percent = ($val / $val_total) * 100; 100return round($val_percent, $precision); 101} 102$calorie_percent=num2per($calorie, $calorie_total); 103$protein_percent=num2per($protein, $protein_total); 104$lipid_percent=num2per($lipid, $lipid_total); 105$dietary_fiber_percent=num2per($dietary_fiber, $dietary_fiber_total); 106$mineral_percent=num2per($mineral, $mineral_total); 107$vitamin_percent=num2per($vitamin, $vitamin_total); 108?> 109 110<tr><td colspan="9" style="text-align:center; font-size:30px;background-color: #33FF99;">栄養素の合計値をグラフで表示</td></tr> 111 112 113<!-- チャート描画キャンバス --> 114<tr><td colspan="9" style="width:720px;height:500px;backgroud-color:#FFF;"><div><canvas id="myChart" style="background-color:#fff;"></canvas></div></td></tr> 115<script> 116 117// 色の設定 118var colorSet = { 119 red: 'rgb(255, 99, 132)', 120 orange: 'rgb(255, 159, 64)', 121 yellow: 'rgb(255, 205, 86)', 122 green: 'rgb(75, 192, 192)', 123 blue: 'rgb(54, 162, 235)', 124 purple: 'rgb(153, 102, 255)', 125 grey: 'rgb(201, 203, 207)' 126}; 127 128// 乱数生成(0~100) 129var rnd100 = function(){ 130 return Math.round(Math.random() * 100); 131}; 132 133// 色のRGB変換 134var color = Chart.helpers.color; 135 136/* 137 * チャートの初期設定 138 */ 139var config = { 140 type: 'radar', 141 data: { 142 labels: ["エネルギー", "たんぱく質", "脂質", "炭水化物", "ミネラル", "ビタミン"], 143 datasets: [{ 144 label: "摂取量", 145 backgroundColor: color(colorSet.red).alpha(0.5).rgbString(), 146 borderColor: colorSet.red, 147 pointBackgroundColor: colorSet.red, 148 149 data: [<?php echo $calorie_percent ?>, <?php echo $protein_percent ?>, <?php echo $lipid_percent ?>, <?php echo $carbohydrate_percent ?>, <?php echo $mineral_percent ?>, <?php echo $vitamin_percent ?> ] 150 151 152 153 154 },] 155 }, 156 options: { 157 animation:false, 158 showTooltips: false, 159 legend: { position: 'bottom' }, 160 title: { 161 display: true, 162 fontSize:20, 163 fontColor:'#666', 164 text: '栄養素チャート' 165 }, 166 scale: { 167 display: true, 168 pointLabels: { 169 fontSize: 15, 170 fontColor: colorSet.blue 171 }, 172 ticks: { 173 display: true, 174 fontSize: 12, 175 fontColor: colorSet.green, 176 min: 0, 177 max: 100, 178 beginAtZero: true 179 }, 180 gridLines: { 181 display: true, 182 color: colorSet.yellow 183 } 184 } 185 } 186}; 187 188/* 189 * チャートの作成 190 */ 191var myRadar = new Chart($("#myChart"), config); 192 193</script> 194</table> 195</body> 196</html>

エラー表示は以下のエラーを書いています。
DBに接続しました。までは表示されますが
以降は一切表示されておりません。

php

1$sto=$db->prepare($sql); 2 if($sto->execute()){ 3 print("<p>データ受け取りしました</p>"); 4 }else{ 5 print("<p>SQL文実行時にエラーが発生しました</p>"); 6 } 7 8 $db=null; 9 10 } catch (PDOException $e) { 11 die("<h2>データベース接続に失敗しました</h2>"); 12 }

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

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

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

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

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

m.ts10806

2019/07/03 22:50

コードはマークダウンのcode機能を利用してご提示ください
m.ts10806

2019/07/04 00:29

>初心者でコードが読みにくくて申し訳ありません。 せめてコードは質問編集してマークダウンにしてください。 https://teratail.com/help#about-markdown 「初心者アイコン」も利用してください。 (おそらく何度か指摘していますが、質問は編集できます)
m.ts10806

2019/07/04 00:44

>mysqlで なのになぜタグが「JavaScript」なのでしょうか。 タグは最大5つまで登録できるのでなるべく質問内容にそったタグをきちんとつけてください。
mizuoniku

2019/07/04 00:57

ご指摘ありがとうございました。使い方が分かり勉強になりました。
m.ts10806

2019/07/04 01:03 編集

利用されているPHPのバージョンはいくつでしょうか 質問本文に追記してください。
退会済みユーザー

退会済みユーザー

2019/07/04 01:07

直接の回答じゃないですが、mysql_queryとかmysql_fetch_arrayとか、大丈夫? 廃れたAPIじゃなくせめてmysqli_*に置き換えたほうがよいかと。
退会済みユーザー

退会済みユーザー

2019/07/04 01:13

「エラーというか動作しません」が具体的にどういうことなのか。質問文中に示された情報で第三者が再現できるのかどうかも微妙なので、あるがままのエラーメッセージを貼ってほしい。
m.ts10806

2019/07/04 01:15

MySQLよりPHPのバージョンを・・・でもMySQLも相当古そうですね。 どういう環境でやっているのかもう少し具体的に記載してください。
mizuoniku

2019/07/04 01:34

ロリポップのレンタルサーバを使用していますので、mysqlもphpも大丈夫だと思いますが 悪いのは書いている私の方だと思います。 本やネットで検索したコードを継ぎ接ぎで書いているので古いのだと思われます。 お手数をおかけして申し訳ありません。
m.ts10806

2019/07/04 01:36

別のphpファイル作って <?php phpinfo(); で確認してみると良いです。 たぶんサーバー管理にもPHPの適用バージョンはあるでしょうし、 さすがにそこまで古いバージョンをサーバーに載せているとは思えないです(PHP5系最後の5.6ですらサポート終わりましたし) https://lolipop.jp/manual/user/php-setting/#p-php-version
mizuoniku

2019/07/04 01:57

わざわざありがとうございます。 phpのヴァージョンは7.1でした。 netbeansが動かなくて強引にsakuraで書いてるのでご面倒をおかけしました。 すいません。悪いのは参考にした本だと思います。
m.ts10806

2019/07/04 01:58

>phpのヴァージョンは7.1でした。 では私の回答冒頭でまず1点解決ですね。 書籍を悪いとは言いませんが、必ずPHPマニュアルを確認してください。 「PHP 機能名」で検索して辞書替わりにもなります、
mizuoniku

2019/07/04 02:45

mysqliに直してみました。といっても今初めて見たのでまちがっているようです。 もっと勉強します。
m.ts10806

2019/07/04 03:04

単に置き換えただけではいけませんよ。というかこのままだとペアプロと変わりません。 ついた回答でまずは一回引き取って自身で乗りきってみてください。 あっちはpdo、こっちはmysqliだとコードの統一性もないのでツギハギで問題切り分けを難しくするだけです。
guest

回答2

0

ほぼ勘で回答

mysql_*

mysql系関数はPHP5.5で非推奨となりPHP7では削除された機能です。
PHPマニュアル参照

SELECTでも前の質問のINSERTと同じ流れでやれば良いと思います。
(PDO利用 prepareでパラメータセット→bindValue→execute :PDOExceptionも拾う)

エラー表示をON、PDOExceptionの画面出力 
などもアドバイスしていますので、そちらも必ず入れてください。

下記のような記事も熟読して流れの基本をおさえてください。

大抵は
「基本をマニュアルで確認」→「簡単なコード(ミニマムコード)で動作を確認する」→「少し複合的なコードを組んでみる」→「1つで完結するアプリケーションを作ってみる」
の繰り返しです。

基本部分が抜けている状態でいきなり大きなものを作ろうとすると問題の切り分けが全くできずに路頭に迷うことになります(他者にも説明がちゃんとできないから他者に頼っても中々解決できない)

問題の切り分けには「ミニマムコード」と「デバッグ」が不可欠です。
デバッグについては別の回答者さんの回答を参考にすると良いです。

読んでもらいたい蛇足

コードインデントがぐちゃぐちゃになっているため{}の対応が分かりづらくなって抜けやすくなっています。
コードフォーマット機能のついたエディタを使ってください。Windowsメモ帳?絶対ダメ、です。
このあたりの記事も必ず読んでおいてください。

以下はEclipseのコードフォーマットを適用した結果

php

1 2<?php 3// グラフ作成のPHP 4// formから起算日(デフォルトは当日)を指定して送信されます。 5$day = $GET_['day']; 6?> 7<!DOCTYPE html> 8<html> 9<head> 10<title>testグラフ</title> 11<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 12<script 13 src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js" 14 type="text/javascript"></script> 15<script 16 src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.4/Chart.min.js"></script> 17</head> 18<body> 19<?php 20try { 21 $db = new PDO('mysql:host=localhost;dbname=webdb', 'root', 'root'); 22 23 print("<p>データベース[webdb]に接続しました</p>"); 24 25 // 起算日から1週間分のデータを取り出します。 26 $sql = "SELECT * FROM test WHERE createdate >= DATE(DATE_ADD($day, INTERVAL -7 DAY))"; 27 28 $sto = $db->prepare($sql); 29 $sto->execute(); 30 31 while ($row = $sto->fetch()) { 32 $sno = $row['sno']; 33 $day = $row['day']; 34 $calorie = ($row['calorie']); 35 $protein = ($row['protein']); 36 $lipid = ($row['lipid']); 37 $carbohydrate = ($row['carbohydrate']); 38 $calcium = ($row['calcium']); 39 $iron = ($row['iron']); 40 $zinc = ($row['zinc']); 41 $magnesium = ($row['magnesium']); 42 $folic_acid = ($row['folic_acid']); 43 $vitamin_a = ($row['vitamin_a']); 44 $vitamin_d = ($row['vitamin_d']); 45 $vitamin_e = ($row['vitamin_e']); 46 $vitamin_k = ($row['vitamin_k']); 47 $vitamin_b1 = ($row['vitamin_b1']); 48 $vitamin_b2 = ($row['vitamin_b2']); 49 $vitamin_c = ($row['vitamin_c']); 50 $dietary_fiber = ($row['dietary_fiber']); 51 } 52 53 // ビタミンとミネラルの合計を計算 54 $mineral = $carbohydrate + $calcium + $iron + $zinc + $magnesium; 55 $vitamin = $folic_acid + $vitamin_a + $vitamin_d + $vitamin_e + $vitamin_k + $vitamin_b1 + $vitamin_b2 + $vitamin_c; 56 57 $db = null; 58} catch (PDOException $e) { 59 die("<h2>データベース接続に失敗しました</h2>"); 60} 61 62// 1週間分の摂取目標 63$calorie_total = 10850; 64$protein_total = 245; 65$lipid_total = 210; 66$carbohydrate_total = 455; 67$calcium_total = 4200; 68$iron_total = 45.5; 69$zinc_total = 35; 70$magnesium_total = 910; 71$folic_acid_total = 910; 72$vitamin_a_total = 3150; 73$vitamin_d_total = 280; 74$vitamin_e_total = 35.0; 75$vitamin_k_total = 595; 76$vitamin_b1_total = 5.6; 77$vitamin_b2_total = 6.3; 78$vitamin_c_total = 385; 79$dietary_fiber_total = 77; 80 81// ビタミンとミネラルの合計を計算 82$mineral_total = $carbohydrate_total + $calcium_total + $iron_total + $zinc_total + $magnesium_total; 83$vitamin_total = $folic_acid_total + $vitamin_a_total + $vitamin_d_total + $vitamin_e_total + $vitamin_k_total + $vitamin_b1_total + $vitamin_b2_total + $vitamin_c_total; 84 85// パーセントの計算を定義 86function num2per($val, $val_total, $precision = 0) 87{ 88 if (($val < 0) or ($val_total < 0)) { 89 return false; 90 } 91 $val_percent = ($val / $val_total) * 100; 92 return round($val_percent, $precision); 93} 94$calorie_percent = num2per($calorie, $calorie_total); 95$protein_percent = num2per($protein, $protein_total); 96$lipid_percent = num2per($lipid, $lipid_total); 97$dietary_fiber_percent = num2per($dietary_fiber, $dietary_fiber_total); 98$mineral_percent = num2per($mineral, $mineral_total); 99$vitamin_percent = num2per($vitamin, $vitamin_total); 100?> 101 102<tr> 103 <td colspan="9" 104 style="text-align: center; font-size: 30px; background-color: #33FF99;">栄養素の合計値をグラフで表示</td> 105 </tr> 106 107 108 <!-- チャート描画キャンバス --> 109 <tr> 110 <td colspan="9" 111 style="width: 720px; height: 500px; backgroud-color: #FFF;"><div> 112 <canvas id="myChart" style="background-color: #fff;"></canvas> 113 </div></td> 114 </tr> 115 <script> 116 117// 色の設定 118var colorSet = { 119 red: 'rgb(255, 99, 132)', 120 orange: 'rgb(255, 159, 64)', 121 yellow: 'rgb(255, 205, 86)', 122 green: 'rgb(75, 192, 192)', 123 blue: 'rgb(54, 162, 235)', 124 purple: 'rgb(153, 102, 255)', 125 grey: 'rgb(201, 203, 207)' 126}; 127 128// 乱数生成(0~100) 129var rnd100 = function(){ 130 return Math.round(Math.random() * 100); 131}; 132 133// 色のRGB変換 134var color = Chart.helpers.color; 135 136/* 137 * チャートの初期設定 138 */ 139var config = { 140 type: 'radar', 141 data: { 142 labels: ["エネルギー", "たんぱく質", "脂質", "炭水化物", "ミネラル", "ビタミン"], 143 datasets: [{ 144 label: "摂取量", 145 backgroundColor: color(colorSet.red).alpha(0.5).rgbString(), 146 borderColor: colorSet.red, 147 pointBackgroundColor: colorSet.red, 148 149 data: [<?php echo $calorie_percent ?>, <?php echo $protein_percent ?>, <?php echo $lipid_percent ?>, <?php echo $carbohydrate_percent ?>, <?php echo $mineral_percent ?>, <?php echo $vitamin_percent ?> ] 150 151 152 153 154 },] 155 }, 156 options: { 157 animation:false, 158 showTooltips: false, 159 legend: { position: 'bottom' }, 160 title: { 161 display: true, 162 fontSize:20, 163 fontColor:'#666', 164 text: '栄養素チャート' 165 }, 166 scale: { 167 display: true, 168 pointLabels: { 169 fontSize: 15, 170 fontColor: colorSet.blue 171 }, 172 ticks: { 173 display: true, 174 fontSize: 12, 175 fontColor: colorSet.green, 176 min: 0, 177 max: 100, 178 beginAtZero: true 179 }, 180 gridLines: { 181 display: true, 182 color: colorSet.yellow 183 } 184 } 185 } 186}; 187 188/* 189 * チャートの作成 190 */ 191var myRadar = new Chart($("#myChart"), config); 192 193</script> 194 </table> 195</body> 196</html> 197 198

とりあえずパッと見て分かるのは**$GET_**って存在しません。
$_GET
標準機能はPHPマニュアルを必ず確認しましょう。

JavaScriptの中にそのままPHPの変数突っ込んでたり未使用の変数があったり
HTMLの途中でscriptタグが置いてあったり、コードの整理のほうが気になったりしますが・・・

未定義の変数をそのまま使ってたりするので、たぶんこれはスペルミス。
定義した変数をコピペで使ってください。

PHPが提供している機能はPHPマニュアルからコピペするくらいでやりましょう。
IDEを利用すれば機能のサジェストもしてくれるし、未定義の変数関数や未使用の変数の洗い出しもリアルタイムでやってくれます。
デバッグの手間も減らしてくれるので必須と思います。

投稿2019/07/04 01:17

編集2019/07/04 01:38
m.ts10806

総合スコア80850

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

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

mizuoniku

2019/07/04 01:48

ご指導ありがとうございます。 JavaScriptの中にそのままPHPの変数突っ込んでたり未使用の変数があったり・・・ いけなかったのですね。 適当に書いてみたら動いたもので・・・ $_GETはformから起算日の日付(day)を指定して送られたものを受け取るためでした。 →bindValue→execute :PDOExceptionも拾う ご指摘ありがとうございます。 了解しました。動くようになってからbindValueを追加しようと思ってました。 なぜかbindValue付けてエラー起こすことが何度かあったので。 今度からは質問前に付けるようにします。 お手数をおかけして申し訳ありませんでした。
m.ts10806

2019/07/04 01:56 編集

プログラムは書いたようにしか動かないので、「適当に書いたのが動いた」といってそれを鵜呑みにしてはいけません。 必要な記述が足りていなかったり必要な手続きを踏んでいなかったら容赦なく動きません。 JavaScriptの中にそのままPHPの変数を突っ込んだから動かないわけではなく、これはスクリプトインジェクション(JavaScriptインジェクション)の脆弱性があるためです。 未使用の変数も単にメモリの無駄になっているだけで動かない原因にはなりません。 直接的には「未定義の変数を突っ込んでいるため」「$GET_というPHPに存在しないものを使おうとしているため」です。 回答読まれている最中に蛇足の方に色々追記していますので、読んでおいてくださいね。 開発環境、デバッグ環境の整備が先と思います。(整備をしたほうが結果的に開発は早く進みます)
mizuoniku

2019/07/04 02:04

ありがとうございます。netbeansが動かない環境で強引にsakuraで書いてました。 でも皆様にご指導いただき学校で半年勉強した時より勉強になっています。 ホントに感謝です。ありがとうございます。
m.ts10806

2019/07/04 02:20

「動かない」にも色々あるので、まず「きちんと使える環境」を整備することが先だと思います。 sakuraエディタもエディタとして悪くはないですが、プログラミングに最適化されているわけではありませんので。 単純に導入するだけならEclipseが楽とは思います。 回答に提示した「PHP初心者は最低限これはやっとけ - 開発に入る前編」の記事にも「IDEを使え」という項目があります。
m.ts10806

2019/07/04 02:27

ただ、teratailはサポートセンターではないので「手取り足取り」を期待すると指摘の雨を喰らうのでご注意ください(私は割とそのあたり厳しめです) 以前もらったアドバイスは必ず身にするようにしてください(今回はあまり前のアドバイスを有効活用されている感じがありません)
mizuoniku

2019/07/04 03:07

了解しました。私の記述方法や質問方法が悪くご迷惑をお掛けして申し訳ありませんでした。 でもアドバイス頂いた件は実際のページにはかなり活かさせていただいております。 無視をしているわけではありませんのでご了承ください。 今回勉強になりましたので、次は書き方にももっと気を付けるようにいたします。 長々と貴重なお時間を頂きありがとうございました。
m.ts10806

2019/07/04 03:14

私も自身のこどもの様々な記録をとっておくWebアプリを自身で作って利用しているので なんとなく共感する部分はあります。 ※もちろんそれはそれとして質問への対応が大きく変わるわけではないですが がんばってください。
mizuoniku

2019/07/04 03:18

そうなんですね。 もうちょっとなので頑張ってみます。 ありがとうございました。
guest

0

とりあえず…

while の閉じ括弧がないです。

投稿2019/07/03 22:39

takasima20

総合スコア7458

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

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

mizuoniku

2019/07/04 00:58

ご指摘ありがとうございました。すみません。追加しました。
退会済みユーザー

退会済みユーザー

2019/07/04 01:12

tryのとじカッコも。
mizuoniku

2019/07/04 02:09

ありがとうございます。皆様のいう通り開発環境を早く整えます。 すみませんでした。
退会済みユーザー

退会済みユーザー

2019/07/04 02:38

せめてVSCodeとかAtomとかSublimeのようなエディタを使えばカッコ閉じ忘れくらいは指摘してくれますよ
mizuoniku

2019/07/04 02:53

ありがとうございます。初めて知りました。vscodeダウンロードしたので使ってみます。 他も見てみます。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問