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

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

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

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

PHP

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

JavaScript

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

jQuery

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

Q&A

解決済

1回答

2431閲覧

mysqlで取得したデータを連想配列で動的にグラフ作成

sakanakuuuuunn

総合スコア14

MySQL

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

PHP

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

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2017/08/24 14:43

編集2017/08/24 14:44

###前提・実現したいこと

while文を使ってpdoで取得したデータを連想配列で複数取得し、それを同ファイル内のjavascriptにjsonで送り、下記のような形にしたいのですが、可能でしょうか。
理由としては、グラフを作るpluginを使って、複数人のグラフを作る際, このような形にしなくてはならないため。

[ [ time, 'sample1' ], [ time, 'sample2' ], [ time, 'sample3' ] ],
[ [ time, 'sample1' ], [ time, 'sample2' ], [ time, 'sample3' ] ]

###発生している問題
下記コードで$json_testをprint_rすると
[["19","sample1"]][["19","sample1"],["30","sample2"]]

###該当のソースコード

php

1$graph_data = ""; 2$userData = array(); 3 4for($i = 0; $i < count($user_id_name); $i++){ 5 $sql ="ここはSELECT文が入ります"; 6 $stmt = $pdo -> query($sql); 7 $stmt->execute(); 8 9 while($result = $stmt->fetch(PDO::FETCH_ASSOC)){ 10 $userData[]=array( 11 $result['time'], 12 $result['sample'] 13 ); 14 } 15$jsonTest=json_encode($userData,JSON_UNESCAPED_UNICODE); 16print_r($jsonTest); 17} 18 19$view = <<<EOD 20 21<!DOCTYPE html> 22<html lang="ja"> 23<head> 24<meta charset="UTF-8"> 25<script type = "text/javascript" src="/js/jquery/jquery-3.2.1.min.js"></script> 26 27<script type="text/javascript"> 28 29var test=JSON.parse('{$jsonTest}'); 30 31</script> 32

###補足情報
参考にしている使用するグラフのプラグインのソースコード

<script> jQuery( function() { Tokyo = [ [ 8346496, 'A' ], [ 3460285, 'B' ], [ 6013175, 'C' ], [ 1125782, 'D' ], [ 2649327, 'E' ], [ 2821056, 'F' ] ]; Osaka = [ [ 2782943, 'A' ], [ 8612849, 'B' ], [ 1628417, 'C' ], [ 5066818, 'D' ], [ 7536765, 'E' ], [ 9422470, 'F' ] ]; Nagoya = [ [ 2782943, 'A' ], [ 8612849, 'B' ], [ 1628417, 'C' ], [ 5066818, 'D' ], [ 7536765, 'E' ], [ 1747767, 'F' ] ]; 上記のtokyo,osaka,nagoyaの部分を今回mysqlで取得したデータにしたい jQuery . jqplot( 'jqPlot-sample', [ Tokyo, Osaka, Nagoya ], { seriesDefaults: { renderer: jQuery . jqplot . BarRenderer, rendererOptions: { barDirection: 'horizontal' } }, axes: { yaxis: { renderer: jQuery . jqplot . CategoryAxisRenderer, } } } ); } ); </script>

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

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

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

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

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

guest

回答1

0

ベストアンサー

どういうことで困ってるのかいまいちわからないのですが、

PHP

1<?php 2$userData1 = json_encode([[19,"sample1"], [19,"sample1"], [30,"sample2"]]); 3$userData2 = json_encode([[19,"sample1"], [19,"sample1"], [30,"sample2"]]); 4$userData3 = json_encode([[19,"sample1"], [19,"sample1"], [30,"sample2"]]); 5 6$view = <<<EOD 7 8<!DOCTYPE html> 9<html lang="ja"> 10<head> 11<meta charset="UTF-8"> 12<script type = "text/javascript" src="/js/jquery/jquery-3.2.1.min.js"></script> 13 14<script type="text/javascript"> 15jQuery( function() { 16 Tokyo = {$userData1}; 17 Osaka = {$userData2}; 18 Nagoya = {$userData3}; 19 jQuery . jqplot( 20 'jqPlot-sample', 21 [ 22 Tokyo, Osaka, Nagoya 23 ], 24 { 25 seriesDefaults: { 26 renderer: jQuery . jqplot . BarRenderer, 27 rendererOptions: { 28 barDirection: 'horizontal' 29 } 30 }, 31 axes: { 32 yaxis: { 33 renderer: jQuery . jqplot . CategoryAxisRenderer, 34 } 35 } 36 } 37 ); 38} ); 39</script> 40EOD; 41 42print $view;

こういうことをしたいってことかな

投稿2017/08/24 16:36

rururu3

総合スコア5545

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

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

sakanakuuuuunn

2017/08/24 17:51

質問が悪くて、申し訳ありません。 $userData1 = json_encode([[19,"sample1"], [19,"sample1"], [30,"sample2"]]); $userData2 = json_encode([[19,"sample1"], [19,"sample1"], [30,"sample2"]]); $userData3 = json_encode([[19,"sample1"], [19,"sample1"], [30,"sample2"]]); この部分をmysqlから取り出してきたデータにしたいのです。
sakanakuuuuunn

2017/08/24 18:07

それぞれ配列を作ってあげればよいのでしょうか。
rururu3

2017/08/25 01:55

$userData[] に入れるときにどの配列に入れるかで分岐ですね。 $area = 東京名古屋大阪どれに当たるのかの値 if(array_keys_exists($area, $userData) { $userData[$area] = []; } $userData[$area][] = array(mysqlで取得されたデータ) というイメージ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問