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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

1回答

5076閲覧

MYSQLのデータを動的にチャート表示させたいです。

kikioya11

総合スコア12

PHP

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

1クリップ

投稿2016/06/30 06:46

MYSQLのデータを動的にチャート表示させたいです。

json.htmlのDATAにjson.phpから受け取った値を入れたいのですが、どなたかご教授頂けないでしょうか?

chart_tbl
id,date(日付),start(始値),high(高値),low(低値),end(終値)

-------- json.php ----------

$dsn = 'mysql:dbname=rensai-comic-net00005;host=localhost;charset=utf8';

//ユーザ名
$user = 'user';

//パスワード
$password = 'password';

try
{
//nullで初期化
$users = null;

//DBに接続 $dbh = new PDO($dsn, $user, $password); //'users' テーブルのデータを取得する $sql = 'select * from chart'; $stmt = $dbh->query($sql); //取得したデータを配列に格納 while ($row = $stmt->fetchObject()) { $users[] = array( 'id'=> $row->id ,'date' => $row->date ,'start' => $row->start ,'high' => $row->high ,'low' => $row->low ,'end' => $row->end ); } //JSON形式で出力する header('Content-Type: application/json'); echo json_encode( $users ); exit;

}
catch (PDOException $e)
{
//例外処理
die('Error:' . $e->getMessage());
}
?>
-------- json.html ----------

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8" /> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script language="javascript" type="text/javascript" src="http://rensai-comic.net/fx2/jquery.jqplot.min.js"></script> <script language="javascript" type="text/javascript" src="http://rensai-comic.net/fx2/jqplot.dateAxisRenderer.min.js"></script> <script language="javascript" type="text/javascript" src="http://rensai-comic.net/fx2/jqplot.ohlcRenderer.min.js"></script> <link rel="stylesheet" type="text/css" href="http://rensai-comic.net/fx2/jquery.jqplot.min.css" /> <script> $(document).ready(function() { /** * Ajax通信メソッド * @param type : HTTP通信の種類 * @param url : リクエスト送信先のURL * @param dataType : データの種類 */ $.ajax({ type: "POST", url: "json.php", dataType: "json", /** * Ajax通信が成功した場合に呼び出されるメソッド */ success: function(data, dataType) { //結果が0件の場合 if(data == null) alert('データが0件でした');
//返ってきたデータの表示

//---------------------------------
jQuery . jqplot(
'jqPlot-sample',
[
//-----------------------------------------------------DATA(現在は生のデータ)
[
[ '2012-01-01 0:00AM', 62, 70, 57, 68 ],
[ '2012-02-01 0:00AM', 70, 83, 68, 76 ],
[ '2012-03-01 0:00AM', 75, 96, 72, 94 ],
[ '2012-04-01 0:00AM', 93, 95, 72, 84 ],
[ '2012-05-01 0:00AM', 85, 86, 67, 71 ],
[ '2012-06-01 0:00AM', 75, 88, 75, 82 ]
]
//-----------------------------------------------------DATA

],
{
seriesDefaults: {
renderer: jQuery . jqplot . OHLCRenderer,
rendererOptions: {
candleStick: true
}
},
axes:{
xaxis:{
renderer: jQuery . jqplot . DateAxisRenderer,
min: '2011-12-01 0:00AM',
max: '2012-08-01 0:00AM',
tickInterval: '1 months',
tickOptions:{
formatString: '%B'
},
}
},
}
);
//----------------------------------
},
/**
* Ajax通信が失敗場合に呼び出されるメソッド
*/
error: function(XMLHttpRequest, textStatus, errorThrown)
{
//エラーメッセージの表示
alert('Error : ' + errorThrown);
}
});
});
</script>

</head> <body> <div id="jqPlot-sample" style="height: 300px; width: 500px;"></div> </body> </html>

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

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

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

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

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

guest

回答1

0

ベストアンサー

ごめんなさい、どこでつまづいているかわからないので
ざっと一通り

呼び出し側:

<script> var val;//受ける変数を用意しておいて $.ajax({ type: 'GET', //データ受け渡しの仕組みに合わせる url: 'json.php', //データをくれるphp async: false, //同期処理 dataType: 'json', //データ型指定 data: {"value":1234}, //受け渡すデータ、なければ無視 success: function(ret){ val=ret; //戻りデータを変数valに投入 }, error: function(XMLHttpRequest, textStatus, errorThrown) { console.log( textStatus); }, }); </script>

で、json.php側はjsonデータを出力時にシングルクォーテーションではなく
ダブルクォーテーションでくくらないとパースエラーになるかも

//json.php [ [ "2012-01-01 0:00AM", 62, 70, 57, 68 ], [ "2012-02-01 0:00AM", 70, 83, 68, 76 ], [ "2012-03-01 0:00AM", 75, 96, 72, 94 ], [ "2012-04-01 0:00AM", 93, 95, 72, 84 ], [ "2012-05-01 0:00AM", 85, 86, 67, 71 ], [ "2012-06-01 0:00AM", 75, 88, 75, 82 ] ]

あとはjqplot()の引数にvalを渡してやるだけ?

投稿2016/06/30 08:50

編集2016/06/30 09:05
yambejp

総合スコア114779

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

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

kikioya11

2016/06/30 11:39

ご教授有難うございます、①でechoすると [{"date":"2012-01-01 0:00AM","start":"62","high":"70","low":"57","end":"68"}, {"date":"2012-02-01 0:00AM","start":"70","high":"83","low":"68","end":"76"}] になってる様ですが、②の様にechoするにはどの様にすれば分かりません。 初心者なので申し訳有りませんが、ご教授頂けるとありがたいです。 //取得したデータを配列に格納 while ($row = $stmt->fetchObject()) { $users[] = array( 'date' => $row->date ,'start' => $row->start ,'high' => $row->high ,'low' => $row->low ,'end' => $row->end ); } //JSON形式で出力する header('Content-Type: application/json'); ------------------------------------------- ①  echo json_encode( $users ); exit; } ------------------------------------------ ② [ [ "2012-01-01 0:00AM", 62, 70, 57, 68 ], [ "2012-02-01 0:00AM", 70, 83, 68, 76 ], ] -------------------------------------------
yambejp

2016/07/01 00:21

while ($row = $stmt->fetchObject()) { $users[] = array($row->date,$row->start,$row->high,$row->low,$row->end); } として print json_encode($users); すればよいのでは?
kikioya11

2016/07/01 10:33

ご返信ありがとうございます! 62, 70, 57, 68 にダブルクォーテーションが付かないようにしないと、うまく表示されないみたいです [ "2012-01-01 0:00AM", "62", "70", "57", "68" ]  ↓ダブルクォーテーションをとりたいです [ "2012-01-01 0:00AM", 62, 70, 57, 68 ] 初心者に丁寧に教えて頂いて本当に感謝しています!!!
yambejp

2016/07/01 12:11

>ダブルクォーテーションが付かないようにしないと、うまく表示されない ああ、なるほど while ($row = $stmt->fetchObject()) { $users[] = array($row->date,(int) $row->start,(int) $row->high,(int) $row->low,(int) $row->end); } でどうでしょう?
kikioya11

2016/07/02 02:48

出来ましたっヽ(゚´Д`)ノ゚。 ヤッターン♪ ありがとうございます!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問