我有一个正在尝试设计的系统,该系统将从数据库中检索信息,以便可以将其绘制在jquery图形中。我需要检索信息,并以某种方式将其放入必要的坐标格式(例如,两个坐标var d = [[1269417600000, 10],[1269504000000, 15]];
)。
我要从中选择的表是存储带有字段的用户投票的表:
points_id (1=vote up, 2=vote down),
user_id,
timestamp, (UNIX TIMESTAMP)
topic_id
我需要做的是选择所有投票,并以某种方式将其分组为相应的日期,然后将每天的1票和2票之间的差求和。然后,我需要以某种方式以前面显示的适当的绘图格式显示数据。例如4月1日,4票。除最后一个绘图项外,数据需要用逗号分隔,因此我不确定如何处理。我在下面展示了一个我需要的东西的例子,但这是不正确的,
echo "var d=[";
$query=mysql_query(
"SELECT *, SUM(IF(points_id = \"1\", 1,0))-SUM(IF([points_id = \"2\", 1,0)) AS 'total'
FROM points LEFT JOIN topic ON topic.topic_id=points.topic_id
WHERE topic.creator='$user' GROUP by timestamp
HAVING certain time interval"
);
while ($row=mysql_fetch_assoc($query)){
$timestamp=$row['timestamp'];
$votes=$row['total'];
echo "[$timestamp,$vote],";
}
echo "];";
最佳答案
仅使用-1作为下注肯定会更加明智。然后,您可以简单地运行SUM(points_id)
要生成对JavaScript友好的表示法,您可以使用旧的伙伴。
$sql = "SELECT `timestamp`, SUM(points_id) FROM ..."; // yadda yadda
$result = mysql_query($sql);
$out = array();
while ($row = mysql_fetch_assoc($result)) {
$out[] = array((int) $row['timestamp'], (int) $row['total']);
}
echo "d = " . json_encode($out) . ";\n";