我有一个我试图设计的系统,它将从数据库中检索信息,以便可以在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 "];";
答案 0 :(得分:2)
使用-1作为downvote肯定会更加理智。然后,您只需运行SUM(points_id)
要生成友好的javascript符号,您可以使用优秀的老伙伴json_encode
。
$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";