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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

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回答

1992閲覧

morris.js グラフ作成がうまくいきません 〜前回の質問の続き〜

van-0215

総合スコア89

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

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クリップ

投稿2016/12/19 05:03

編集2016/12/19 05:23

以前moriss.jsというグラフ描写ライブラリの使い方がよくわからず、質問させて頂きました。

今回は、値の管理についてです。質問は2つあります。
現在、勉強時間の管理サイトを作成しております。そこでmorris.jsを用いて、グラフを記述しております。

データは、データベースから以下のプログラムで取り出しております。

PHP

1while ($data = mysql_fetch_array($quryset)){ 2 3 if($data[1] == $_SESSION['id']){//ログインユーザとデータの書き込みユーザーが一致したら 4 5 if($flag==0){ 6 echo ","; 7 }else{ 8 $flag=0; 9 } 10 echo "{'date': '" .$data[2]. "', 'time': '" .$data[3]. "'}"; 11 } 12} 13 echo "];"; 14 echo "new Morris.Line({"; 15 echo "element: 'graph',"; 16 echo "data: day_data,"; 17 echo "xkey: 'date',"; 18 echo "ymax: '24',"; 19 echo "ymin: '0',"; 20 echo "ykeys: ['time'],"; 21 echo "labels: ['勉強時間'],"; 22 echo "smooth: false,"; 23 echo "resize: true"; 24 echo "});"; 25 echo "</script>";

データベースの構造はこのようになっています。

イメージ説明

上記のプログラムをブラウザで表示した場合以下のようなグラフができます。

イメージ説明

ここで質問です。
!!現在グラフのX軸に同一の日付が複数有り【1日にどれだけ勉強したか】が一目でわからない状態です。
→ 日付が同じなら時間を足したい。

そのため上記プログラムの【値の取得】部分を以下のように変えたのですが、表示さえされなくなってしまいました。

PHP

1while ($data = mysql_fetch_array($quryset)){ 2 3 if($data[1] == $_SESSION['id']){//ログインユーザとデータの書き込みユーザーが一致したら 4 5 if($flag==0){ 6 echo ","; 7 }else{ 8 $flag=0; 9 } 10 11 /*この一行を変更*/ 12 // echo "{'date': '" .$data[2]. "', 'time': '" .$data[3]. "'}"; 13 14//ここから ちなみにi=0 befo=-1を上で宣言 15 /*一番最初の日*/ 16 if($i==0 && $befo==-1){ 17 $first=1; 18 $befo=$data[2];//日付 19 $time[$i]=$data[3]; 20 } 21 /*同じ日付*/ 22 else if($data[2]==$befo){ 23 $time[$i]+=$data[3]; 24 } 25 /*違う日付*/ 26 else{ 27 echo "{'date': '" .$befo. "', 'time': '" .$time[$i]. "'}"; 28 $befo=$data[2];//次の日付 29 $i++; 30 $time[$i]=$data[3]; 31 } 32//ここまで 33 34 } 35} 36 echo "];"; 37 echo "new Morris.Line({"; 38 echo "element: 'graph',"; 39 echo "data: day_data,"; 40 echo "xkey: 'date',"; 41 echo "ymax: '24',"; 42 echo "ymin: '0',"; 43 echo "ykeys: ['time'],"; 44 echo "labels: ['勉強時間'],"; 45 echo "smooth: false,"; 46 echo "resize: true"; 47 echo "});"; 48 echo "</script>";

どこがおかしいのでしょうか?

そしてもう1つ質問があります。
!!X軸の日付を最近7日間にしたい。
こちらに関しては、打開策が全くわかりません。 お力を貸してください。

よろしくお願いします。

以下修正

DBへの保存データですが、上記で示したテーブル構造ごとそれぞれ以下のような値が入っております。
イメージ説明

実行SQL文に関しては、DBへの接続・テーブルを選択後、上記で示したプログラムの一番上に記述してありますように、

while ($data = mysql_fetch_array($quryset)){

として、後に
if($data[1] == $_SESSION['id']){ //つまりテーブルでのdata1と今見たいuserのIDが一致したら

という条件を置き、それをmorris.js用に保存しております。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2016/12/19 05:10

提示された情報では、回答者がコードを実行してあなたの手元の状態を再現できません。具体的なデータベース中のデータ・サンプルを提示し、実行しているSQL文を提示すると具体的な回答がしやすいです。
guest

回答1

0

まず、PHPで出力された結果のスクリプトをよく調べてみてはいかがですか。
ブラウザのデバッグモードでエラーが出ていれば、解決は早いでしょう。
#当方、そこを調べたわけではないので断定ではありません。

それから、グラフのスクリプトとPHPでのループで、というのであれば、蛇足的ですが、
グラフ描画の集計をループ処理にするのではなく SQL文で、
特定IDで直近7日分の集約として求めてくれば、元のソースのままで
正しく表示されるのではないでしょうか。

投稿2016/12/19 14:33

編集2016/12/19 14:35
akio221

総合スコア716

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問