2012-03-29 3 views
-2

Ich habe eine MYSQL-Tabelle mit allen Besuchern meiner Website. Jeder Besucher wird mit der Zeit() erfasst, die er auf der Website besucht hat.PHP MySQL - Anzahl der Zeilen mit Spaltenwert zwischen X und Y, gibt es einen besseren Weg?

ich schnell bin versucht zu für jede Stunde, die Anzahl der Besucher anzuzeigen ... wie

Stunde 1: 5 Besucher

Stunde 2: 7 Besucher

etc ...

Im Moment ist dies die Funktion, die ich verwende. Es funktioniert gut, aber es scheint sehr langweilig und ich fragte mich, ob es einen leichteren Weg vielleicht mit der Gruppe durch?

while($start_time<$end_time){ 
$end_of_hour=$start_time+3600; 
$query = mysql_query("SELECT * FROM visitors WHERE time>'$start_time' AND time<'$end_of_hour'"); 
echo "Visitors this hour: ".mysql_num_rows($query); 
$start_time=$start_time+3600; 
} 

Gibt es einen besseren Weg? Oder ist dies der einfachste Weg? Thanks! :)

+0

Es gibt Möglichkeiten, es zu tun mit * GROUP BY * –

Antwort

0
SELECT HOUR(FROM_UNIXTIME(time)), count(*) FROM visitors WHERE time between ('$start_time', '$end_time') group BY HOUR(FROM_UNIXTIME(time)) 

Es scheint, dass Ihre Zeit Unix-Epoche ist, so wandelt es in MySQL Datetime-Typ zuerst, erhalten die Stunde seits und Gruppe der hour.And machen es nur den zeitlichen Rahmen in Ihrem Start wählen Uhrzeit und Endzeit.

+0

Zählen würde es CPU-Zeit für Ihr PHP-Skript profitieren, zu einem kleinen Grad. Vergessen Sie nicht den BETWEEN-Operator in MySQL. Das wird meiner Meinung nach auch dazu beitragen, die Anfrage zu "säubern". – Blake

+0

danke für die Antwort! aber ich bin mir nicht sicher, wie ich das zeigen würde? Wie spielen start_time und end_time? Danke noch einmal. – hellohellosharp

+0

Modifizierte meine Antwort. Hoffe, dass hilft :) – dhchen

Verwandte Themen