Mysql toplamı ve grup sorgu ve jquery grafik için yönetmek sonuçları ile Yardım

1 Cevap php

Bir jquery grafiğinde çizilebilir böylece ben, ben bir veritabanından bilgi almak olacaktır tasarımı için çalışıyorum bir sistemi var. Ben bilgi almak ve bir şekilde gerekli koymak gerekir biçimi koordinatları (örneğin iki koordinat var d = [[1269417600000, 10],[1269504000000, 15]];).

Ben seçerek am benim tablo alanları ile kullanıcı oy depolayan bir tablo:

points_id (1=vote up, 2=vote down),
user_id,
timestamp, (UNIX TIMESTAMP)
topic_id

Ne yapmam gerek ilgili gün içine tüm oy ve her nasılsa grup onları seçin ve ardından her gün için 1 oy 2 oy arasındaki farkı özetlemek olduğunu. Ben sonra her nasılsa daha önce gösterilen uygun komplo biçiminde verileri görüntülemek gerekir. Örneğin 1 Nisan 4 oy için. Veriler son arsa girişi hariç, virgülle ayırarak gerekiyor, bu yüzden bu yaklaşım nasıl emin değilim. , Ben gereken şey tür aşağıda bir örneği gösterdi ama doğru değil

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 Cevap

Kesinlikle sadece kullanmak için -1 bir DOWNVote gibi bir çok Saner olacaktır. Sonra sadece çalıştırabilirsiniz SUM(points_id)

Javascript-dostu gösterimi oluşturmak için, eski eşini kullanabilirsiniz 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";