SHOW:
|
|
- or go back to the newest paste.
1 | - | <?php |
1 | + | <pre><?php |
2 | // Create connection | |
3 | $con=mysqli_connect("localhost","root","","ci"); | |
4 | ||
5 | //Получаем метку даты 30 дневной давности о оформляем его в удобовариемый mysql-ем вид | |
6 | $last30d=date("c",strtotime("-30 day")); | |
7 | ||
8 | - | //Делаем выборку событий из базы старше нужного |
8 | + | //Делаем выборку событий из базы старше нужного. Дату обрезаем до дня и конвертируем в таймштамп. |
9 | - | $sql = "SELECT * , SUM(value), DATE_FORMAT(`time_added`,'%Y-%m-%d') FROM `stats` WHERE time_added>'$last30d' GROUP BY DAY(`time_added`)"; |
9 | + | $sql = "SELECT * , SUM(value), UNIX_TIMESTAMP(DATE_FORMAT(time_added, \"%Y-%m-%d\")) FROM `stats` WHERE time_added>'$last30d' GROUP BY DAY(`time_added`)"; |
10 | $res=mysqli_query($con,$sql); | |
11 | while($row=mysqli_fetch_array($res, MYSQLI_ASSOC)) { | |
12 | // убираем громоздкие имена ячеек массива с таймштампом | |
13 | - | } |
13 | + | $row['timestamp']=$row['UNIX_TIMESTAMP(DATE_FORMAT(time_added, "%Y-%m-%d"))']; |
14 | unset($row['UNIX_TIMESTAMP(DATE_FORMAT(time_added, "%Y-%m-%d"))']); | |
15 | ||
16 | $days[] = $row; | |
17 | }//print_r($days); | |
18 | ?> | |
19 | </pre> | |
20 | ||
21 | <script type="text/javascript" src="https://www.google.com/jsapi"></script> | |
22 | <script type="text/javascript"> | |
23 | // Load the Visualization API library and the piechart library. | |
24 | google.load('visualization', '1.0', {'packages':['corechart']}); | |
25 | google.setOnLoadCallback(drawChart); | |
26 | // ... draw the chart... | |
27 | ||
28 | function drawChart() { | |
29 | // Create the data table. | |
30 | - | foreach($days as $key=>$day) { |
30 | + | |
31 | - | list($y,$m,$d)=explode("-",$day['DATE_FORMAT(`time_added`,\'%Y-%m-%d\')']); |
31 | + | |
32 | - | $m--; //потому что в JS месяцы нумеруются от нуля |
32 | + | |
33 | - | echo "[new Date($y, $m, $d), {$day['SUM(value)']}],\n"; |
33 | + | |
34 | <? | |
35 | foreach($days as $day) { | |
36 | echo "[new Date({$day['timestamp']}*1000), {$day['SUM(value)']}],\n"; | |
37 | } | |
38 | ?> | |
39 | ]); | |
40 | var options = { | |
41 | 'title' : 'Поисковых запросов, в день:', | |
42 | 'width' : 900, | |
43 | 'height' : 200, | |
44 | 'legend' : { | |
45 | 'position':'none' | |
46 | }, | |
47 | 'titleTextStyle':{ | |
48 | 'fontName' : 'Georgia', | |
49 | 'fontSize' : 20, | |
50 | 'bold' : false}, | |
51 | chartArea: { | |
52 | width: '100%' | |
53 | }, | |
54 | vAxis: { | |
55 | textPosition: 'in', | |
56 | minValue: 0 | |
57 | }, | |
58 | }; | |
59 | ||
60 | // Instantiate and draw our chart, passing in some options. | |
61 | var chart = new google.visualization.AreaChart(document.getElementById('chart_div')); | |
62 | chart.draw(data, options); | |
63 | } | |
64 | </script> | |
65 | <div id="chart_div" style="width: 900px; height: 200px;"></div> |