現在mariadbのデータをphpに反映させようとしています。
phpはグラフを使って反映しようとしてます。現在作っているのはマスクの着用率をidを使ってまた日付も登録しているのでそこも表そうとしています。試しに値を入れて計算してだせるようにはなったのですが、maraidbのデータを取り込める方法がわかりません。誰か教えてください!! 時間は出るのですが日付がでません
試しに作ったのを載せます。
<?php session_start(); $date=("YY/m/d"); ?> <html> <head> <style> table { border-collapse: collapse; } td { border: solid 1px; padding: 0.5em; } </style> </head> <body> <?php $dsn = 'mysql:dbname=kadai;host=localhost;charset=utf8'; $user = "root"; $pass = "maria"; try{ $dbh = new PDO($dsn, $user, $pass); $sql = "select id, 学籍番号, 名前 , 日付 from マスク有"; $sql2 = "select count(id) from マスク有"; $sql3 = "select time(日付) from マスク有 "; echo '<table border="1">'; echo '<tr><th>ID</th><th>time</th><th>image</th><th>date</th></tr>'; $res = $dbh->query($sql2); $re = $dbh->query($sql3); foreach($res as $value){ echo '<tr><td>'.$value["count(id)"].'</td>'; // echo '<tr><td>'.$value["time(日付)"].'</td>'; //echo '<tr><td>'.$value["cnt"].'</td>'; } foreach($re as $data){ //echo '<tr><td>'.$value["count(id)"].'</td>'; // echo '<tr><td>'.$data["time(日付)"].'</td>'; echo '<tr><td>'.$data["time(日付)"].'</td>'; } }catch(PDOException $e){ print('Error:'.$e->getMessages()); die(); } ?> <html lang="ja"> <head> <meta charset="utf-8"> <title>グラフ</title> </head> <body> <h1>マスク着用率</h1> <canvas id="myLineChart"></canvas> <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.bundle.js"></script> <script> var hoge = <?php echo json_encode($value["count(id)"]); ?>; var time = <?php echo json_encode($data["time(日付)"]); ?>; var half = hoge/2; var ctx = document.getElementById("myLineChart"); var myLineChart = new Chart(ctx, { type: 'line', data: { labels: [time,'8月1日', '8月2日', '8月3日', '8月4日', '8月5日', '8月6日', '8月7日'], datasets: [ { label: 'マスク着用率', data: [half, 34, 37, 35, 34, 35, 34, 25], borderColor: "rgba(255,0,0,1)", backgroundColor: "rgba(0,0,0,0)" }, ], }, options: { title: { display: true, text: '着用率(8月1日~8月7日)' }, scales: { yAxes: [{ ticks: { suggestedMax: 40, suggestedMin: 0, stepSize: 5, callback: function(value, index, values){ return value + '%' } } }] }, } }); </script> </body> <html> コード
コードはマークダウンのcode機能にてご提示ください。
あと、グラフにどういうデータを与えればよいかが分かれば、その形式に整形した文字列を出力するだけかと思いますが、現状だとどこまでできている(分かっている)のでしょうか
mariaDBとmysqlは互換性を持っています。mysqlのデータは普通に呼び出せる状態なのでしょうか。
mysqlのデータは呼び出せます。今回やりたいことはmariadbに登録されたデータをグラフを使って呼び出すということです。なのでこのデータも試しにデータを入れて計算している状態です。
質問は編集できますので。
今回やりたいことはmariadbに登録されたデータをグラフにそのまま反映させて登録された時間とマスクの着用率を表したいと考えています
形式わかってるようなので、PHPでその形式に整形した文字列を出力するだけかと
すいません。言っていることはわかるのですが初心者なのでコードを書くのがわからないです。出来たらコードで表してくれたら嬉しいです。お願いします。
どこまで分かってるか次第です。
「PHPがやっているのは文字列の出力だけで、PHPにとってはhtmlやjsはその文字列の集合体にすぎない」というのはわかりますか?
この前提がわかっていないと、コードを出したところで理解にはつながらないと思ってます。
ただ、「データがどうなってるか」分からないからには、そのまま使えるようなコードにはなりませんよ。
整形した文字列を入力とは具体的にどいうことですか?今回データベースの中のデータを反映したいのですが「PHPがやっているのは文字列の出力だけで、htmlやjsはその文字列にすぎない」というのはわかっているつもりです。
data: [half, 34, 37, 35, 34, 35, 34, 25],
↑これが現在固定値でグラフが出ているのであれば、PHPから取ってきた情報をこういう文字列になるように整形して出力するということ。
labelとかも同じですね。
この場合日付をデータベースからとってきたいので$dataでできますか?
データベースからとってきてもどこからでも結局単なる変数です。
「そのように作ればできる」という答え方になります。変数名も単なる命名でしかありません(意味のある名前にすべきではあるが、どういう情報をどのような形で保持しているかのほうが大事)
「htmlで使いやすい形に整形した情報」を保持させることですね。
時間は出るようになったのですが、日付が出ません。
$sql3 = "select time(日付) from マスク有";
にしてそこから変数を使ってやったのですが、
文章で説明するより、コードを。
まずは、プログラムより国語と算数の知識を使って設計できるかです。
プログラムなんて飾りです。
編集して新しいコードを載せたので理由がわかったら教えてください。