2012-09-30 82 views
0
VISITORS TBL 
ID product_id hits date 
130  1  1 2012-08-11 
94  810  53 2012-08-06 
95  810  32 2012-08-07 
96  810  22 2012-08-09 
97  810  13 2012-08-10 
98  810  16 2012-08-11 
99  810  13 2012-08-22 

我有訪問者如上所示的訪問者的MySQL表。 計劃爲過去30天的訪問者繪製線圖,使用Jquery Flot。爲Jquery Flot生成記錄

應該生成30條記錄,如 [1,0],[2,0],[3,0],[4,0],[5,0],[6,53],[7,32 ],[8,0],[9,22] ...... [30,0] 如何使用mysql生成product_id = 810的列表30天?& php? 我可以在單個SQL查詢中完成嗎?或使用PHP循環?

回答

1

我不知道是否有做這一個MySQL,只有這樣,但是這肯定會工作(雖然它是草率和使用MySQL的棄用/ PHP函數)

<? 
$rs = mysql_query("SELECT hits,date FROM visitors WHERE product_id=81 AND date BETWEEN 2012-08-01 AND 2012-08-31 ORDER BY date ASC"); 
$flot = array(); 
$last_date = '2012-08-00'; 
$day = 1; 

if ($rs && mysql_num_rows($rs)) { 
    while ($row = mysql_fetch_array($rs)) { 
     $days_since = check_days_since($row['date'], $last_date); 
     print $row['date'] . '|' . $last_date . '|' . $days_since . "\n"; 

     if ($days_since) { 
      for ($i = 1; $i < $days_since; $i++) { 
       $flot[] = array($day++, 0); 
      } 
     } 

     $flot[] = array($day++, $row['hits']); 
     $last_date = $row['date']; 
    } 
} 

print json_encode($flot); 


function check_days_since($new, $old) { 
    if (!$new || !$old) return 1; 
    return (strtotime($new) - strtotime($old))/(60*60*24); 
} 
?>