2012-09-30 2 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 

방문자가 위와 같은 방문자가 있습니다. Jquery Flot을 사용하여 지난 30 일 동안 방문자에게 선 그래프를 플롯 할 것을 계획합니다.Jquery Flot에 대한 레코드 생성

[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

<? 
$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); 
} 
?> 
을이 할 수있는 MySQL의 전용 방법이 있는지 잘 모르겠지만, (이것은 실수이며, MySQL은/​​PHP 함수를 사용되지 사용하여도)이 확실히 작동합니다
관련 문제