全て順調に行きますように。
私は現在 PHP を独学で学んでおり、その一環として、私が働いているレストランの顧客からのフィードバック カードから情報を保存するフィードバック システムを開発しようとしています。
私が抱えている問題は、グラフを作成するためにjqplotによって使用されるjson出力を生成するために使用しているphpコードを中心に展開しています。
これを行うために使用しているコードは次のとおりです。
<?php
// $toDate and $fromDate will eventually be values coming over via post however i am using static values at the moment for testing
$toDate = time();
$fromDate = time() - (7 * 24 * 60 * 60);
$sql = "SELECT * FROM feedback WHERE visitDateTime BETWEEN FROM_UNIXTIME($fromDate) AND FROM_UNIXTIME($toDate)";
$result = mysql_query($sql) or die(mysql_error());
?>
データを取得したら、このコードを javascript と php で使用して jqplot データを生成します。
<script>
$(document).ready(function(){
var line1 = [
<?php
while ($row = mysql_fetch_assoc($result)){
echo '[';
echo "'";
echo $row['visitDateTime'];
echo "',";
echo $row ['foodScore'];
echo ']';
echo ',';
}
?>
];
// code then goes on to generate the chart, etc....
</script>
これは正常に機能し、次の json 出力が生成されます。
var line1 = [
['2012-04-20 19:00:00',7],['2012-04-20 19:00:00',8],['2012-04-20 12:00:00',8],['2012-04-22 16:00:00',5],['2012-04-21 20:00:00',9],
];
ただし、私が抱えている問題は、2 つの日付と時刻が同じである場合 (おそらくそうであろう)、1 つの日付に複数の値があるため、グラフに問題が発生することです。
少し考えた後、実際に行う必要があるのは、日付と時刻の平均スコアを計算して、以下に示すような出力を生成するという結論に達しました。
var line1 = ['unique date/time', average of all scores from this date/time ]
しかし、私はそれを始める方法さえ知りません。
これはおそらく間違っていると思いますが、取得したすべてのレコードをループして、日付/時刻が同じかどうかを確認する必要があると考えています。基本的に、これを返す代わりに:
['2012-04-20 19:00:00',7],['2012-04-20 19:00:00',8],['2012-04-20 12:00:00',8],['2012-04-20 12:00:00',5],['2012-04-20 12:00:00',9]
私はこれを返す必要があります:
['2012-04-20 19:00:00',7.5],['2012-04-20 12:00:00',7.3]
誰かが私にこれを行う方法についての指針を提供できれば、それは本当に私を助けてくれるでしょう.
みんな、ありがとう。