Visits aus Hits extrahieren

boykottke

Mitglied
So, ich hatte mir ja eigentlich alles schön ausgedacht. Ich logge alle Hits mit und freue mich darauf, diese anzuzeigen. Dummerweise wollte ich gleichzeitig alle Visits daraus extrahieren (mehrere Hits mit der selben IP um die ungefähr gleiche Uhrzeit == 1 Visit).

Nun... So weit bin ich schon:

PHP:
  $sql[1] =  "SELECT stats_browser AS 'Browser', 
     COUNT(*) AS 'Hits' 
     FROM ".$dbtitle."stats 
     WHERE stats_browser IS NOT NULL 
     GROUP BY stats_browser 
     ORDER BY Hits DESC";


Wie baue ich nun am besten ein, daß er auch noch die Visits korrekt extrahiert?

Würde mich über schnell Hilfe freuen.
 
Die IP in ner extra Tabelle speichern mit der aktuellen Uhrzeit... Die Hits kannst du ganz normal raisen, die visits um 1 hoch, wenn die IP nihct in der Liste steht, sonst unverändert...
 
Hat sich doch alles ganz gut lösen lassen:

PHP:
  $tab_titel[1] = "Hits pro Monat";
  $sql[1] =  "SELECT EXTRACT( year FROM stats_time ) AS 'Jahr', ";
  $sql[1] .=  "EXTRACT(MONTH FROM stats_time ) AS 'Monat', ";
  $sql[1] .=  "COUNT( * ) AS 'Hits', ";
  $sql[1] .=  "COUNT(DISTINCT stats_ip) AS 'Visits', ";
  $sql[1] .=  "CONCAT( '<a href=\"index.php?year=', EXTRACT(year FROM stats_time), '&month=', EXTRACT(month FROM stats_time), '\">[anzeigen]</a>' ) AS 'Details' ";
  $sql[1] .=  "FROM ".$dbtitle."stats ";
  $sql[1] .=  "WHERE stats_time IS NOT NULL ";
  $sql[1] .=  "GROUP BY Jahr DESC , Monat DESC";


Die einzige Frage, die ich mir noch stelle: Wie wäre es möglich, in diese Abfrage noch einzufügen, dass die IPs nur pro Tag in Sachen Distinct behandelt werden sollen, sprich: Ab dem nächsten Tag gilt jeder Besuch von dieser IP wieder als neuer Visit... ;)
 
Okay, auch das nach längerem Nachdenken gelöst:

PHP:
$tab_titel[1] = "Hits pro Monat";
  $sql[1] =  "SELECT EXTRACT( year FROM stats_time ) AS 'Jahr', ";
  $sql[1] .=  "EXTRACT(MONTH FROM stats_time ) AS 'Monat', ";
  $sql[1] .=  "COUNT( * ) AS 'Hits', ";
  $sql[1] .=  "COUNT(DISTINCT stats_ip, DATE(stats_time)) AS 'Visits', ";
  $sql[1] .=  "CONCAT( '<a href=\"index.php?year=', EXTRACT(year FROM stats_time), '&month=', EXTRACT(month FROM stats_time), '\">[anzeigen]</a>' ) AS 'Details' ";
  $sql[1] .=  "FROM ".$dbtitle."stats ";
  $sql[1] .=  "WHERE stats_time IS NOT NULL ";
  $sql[1] .=  "GROUP BY Jahr DESC , Monat DESC";
 
Speicher die IP mit: $_SERVER['REMOTE_ADDR']

Auslesen, gespeichertes Datum mit aktuellem Datum vergleichen und die, die älter sind löschen...

WHERE
'".(time()-60*60*24)."' > datum
 
Zurück