underparnv Posted March 2, 2006 Share Posted March 2, 2006 Hey everyone. I have a query question. First the table:[code]id | page | hits | date |[/code]This would be sample data:[code]1, /dir/page.php, 50, 2006-03-022, /dir/page.php, 40, 2006-03-013, /dir/page2.php, 20, 2006-03-024, /dir/page2.php, 15, 2006-03-01[/code]And so on.What I would like to do is be able to grab all of the stats for the current month, then display the top 5 pages for that month. This is what I have so far:[code]<?php$month = date("m"); $year = date("Y"); $end_this_month = date('t',mktime(0,0,0,$month,1,$year)); $start = $year . "-" . $month . "-01"; $end = $year . "-" . $month . "-" . $end_this_month; $query = mysql_query("SELECT * FROM stats__pv WHERE date>='$start' AND date<='$end' ORDER BY page DESC"); $pages = array(); $prev_page = ""; while($r=mysql_fetch_array($query)) { $current_page = $r["page"]; $views = $r["nb"]; if ($current_page == $prev_page) { $pages["$current_page"]["views"] = $pages["$current_page"]["views"] + $views; } else { $pages["$current_page"]["views"] = $views; } $prev_page = $current_page; }?>[/code]Now I have no way of sorting it (at least not that I can figure out). So maybe this isn't so much a query question as an array sort question...Any ideas? Link to comment https://forums.phpfreaks.com/topic/3926-query-help/ Share on other sites More sharing options...
wickning1 Posted March 2, 2006 Share Posted March 2, 2006 MySQL can do all of that.[code]<?phpecho 'Top 5 Pages:<br>';$query = mysql_query("SELECT page, SUM(hits) as hitcount FROM stats__pv WHERE date BETWEEN LAST_DAY(CURDATE())-INTERVAL 1 MONTH AND LAST_DAY(CURDATE()) GROUP BY page ORDER BY hitcount DESC LIMIT 5");while($r=mysql_fetch_array($query)) { echo $r['page'] . ' - ' . $r['hitcount'] . ' hits<br>';}?>[/code] Link to comment https://forums.phpfreaks.com/topic/3926-query-help/#findComment-13686 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.