114もっと見る80ptウェブ制作PHPとMySQLを使い、過去15日間のデータを表示できるようにしたいと思っています。登録値がなかったとしても必ず過去15日間を表示する為に、forを使い、以下のようにしています。number_format($acc[cnt])."<br>";}しかし、これだとforの度にクエリを発行しているので、そこが気になっています。簡略化した、データベースに負担のかからない書き方というのがあれば、教えて下さい。PHPは5.1.20、MySQLは4.1.22を使用しています。有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。number_format($count)."<br>";}}試してないけど。うーん、、、当初の希望である「簡略化した」という希望に沿わない気がします。ありがとうございました。18:31:1915ptdateカラムは文字列型のようなので、下記のようにすればforループは不要になると思います。acc";実際には、strcmp関数の代わりにdate>='$acc_day'で処理できるのですが、これが正規のやり方かどうかは分かりません。文字列比較関数dateなんで文字列ではなく日付型ですよ。上記の方法で15日間のデータが出せるのでしょうか?試してみたのですが、何も出力されませんでした。day"));と言う風に15個の変数とSQL文が必要になると思うのです。すると、処理が遅くなると思います。JOINのようにNULLでも表示される方法を考えたのですが、なかなか難しそうですね。素直にPHPだけで完結したらいいのかな・・。17:55:59簡略化→コード優先→データベスに負担のかからないです。私が想像するのは、SQLの1文だけで、テーブル上に値が保存されていなくても、開始期間~終了期間まで表示する方法があるのではないか?と思っています。(自分では書き方が分かりませんが。)b-windさんの方法は、PHPを使い配列に分けて処理する方法で、これはこれで理にかなっていると思うのですが、SQLだけで出来ればそちらの方が良いと持っています。22:52:00アクセス解析のようなものを作ろうと思ったので、PHPの配列を使う方法だと、柔軟性が無くなってしまうと思い、SQLだけで出来ないかな?と思って質問した次第です。性能が悪くなるなら使えませんよね・・。何とかしようとするほうが柔軟性が無くなると思うが。)は役割分担させたほうがよいかと。23:08:22#2で回答した者です。day"));で$acc_dayに格納されるのは文字列型です。MySQL側のdataカラムが日付型なのだとすると、おそらくMySQLでキャスト(型変換)が行われていると考えられます。そのため、#2で回答したstrcmp関数や不等号演算子が適用できなかったものと思われます。)は役割分担させたほうがよいかと。SQLだけにこだわっても処理が遅くなっては意味無いですからね。b-windさんの方法を参考にさせていただきます。pahooさん>$acc_dayに格納されるのは文字列型です。変数に入れているのですから。日付型と返信させていただきました。Facebookでシェア全てのコメントを見る「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。これ以上回答リクエストを送信することはできません。