WinFuture-Forum.de: Besuchercounter Php - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Besuchercounter Php


#1 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 15. Oktober 2008 - 19:11

Hallo,
ich bastel mir gerade einen Besuchercounter!
Es funktioniert folgendes:
Onlinecounter
Gesamt Hits
Besucher Gesamt

Ich habe nun ein Problem mit:
Besucher Heute
Besucher Gestern
Hits Heute


Ich habe dazu folgende Tabelle:
Angehängtes Bild: counter.JPG

Ich hatte mir gedacht dass ich wenn der Tag vorbei ist den Wert von "Besucher Heute" in den Feld "Besucher Gestern" eintrage. Nur wie kann ich jetzt überprüfen ob der neue Tag schon angebrochen ist, ich muss ja irgendwo speichern von wann die Zahlen sind und dieses Datum dann mit dem jezigen vergleichen um eventuell die Werte umzutragen.

Nun frag ich mich auch wie ich das nun mit "Hits Heute" machen kann!
Würde ich immer die ip und das Datum speichern könnte ich noch vieles anderes machen wie User/Monat , nur ich möchte keine ips speichern und nur mit Zahlen arbeiten!

So habe ich die Online-Abfrage gemacht:
//online-abfragen

$sql = "DELETE FROM hp_counter_online WHERE DATE_ADD(time, INTERVAL 4 MINUTE) < NOW();";
$result = mysql_query($sql);

if(mysql_num_rows(mysql_query("SELECT ip FROM ".$on_tbl." WHERE ip='".$ip."'")) <= 0){
	mysql_query("INSERT INTO ".$on_tbl." (ip, time) VALUES ('".$ip."',NOW())");
	// Updarte User Heute
	mysql_query("UPDATE ".$tbl." SET total=total+1 WHERE id=1");
	//Hits Heute aktualisieren
}


Gruß,
Toasterfraktion

Dieser Beitrag wurde von Toasterfraktion bearbeitet: 15. Oktober 2008 - 19:15

0

Anzeige



#2 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 15. Oktober 2008 - 20:22

So nun habe ich nurnoch ein Problem mit dem "Heute" und "Gestern", hier ist mal mein Code bisher:
<?php
include("includes/config.php");
//Variablen
$interval=2.5;
$ip = $_SERVER['REMOTE_ADDR'];
$on_tbl="hp_counter_online";
$tbl="hp_counter";
$c=mysql_fetch_object(mysql_query("SELECT * FROM ".$tbl." WHERE id=1"));

//Hits Gesamt
mysql_query("UPDATE ".$tbl." SET hits=hits+1 WHERE id=1");

//Hits Heute
mysql_query("INSERT INTO hp_counter_hits (ip, time) VALUES ('".$ip."',NOW())");
mysql_query("DELETE FROM hp_counter_hits WHERE DATE_FORMAT(time, '%d') != DATE_FORMAT(NOW(), '%d')");


//Online-abfragen
$sql = "DELETE FROM hp_counter_online WHERE DATE_ADD(time, INTERVAL ".$interval." MINUTE) < NOW()";
$result = mysql_query($sql);
if(mysql_num_rows(mysql_query("SELECT ip FROM ".$on_tbl." WHERE ip='".$ip."'")) <= 0){
	mysql_query("INSERT INTO ".$on_tbl." (ip, time) VALUES ('".$ip."',NOW())");
	// Updarte User Heute
	mysql_query("UPDATE ".$tbl." SET total=total+1 WHERE id=1");
	
	// Besucher Heute (hier komme ich nicht weiter)
	mysql_query("INSERT INTO hp_counter_heute (ip, time) VALUES ('".$ip."',NOW())");
}
//alte Besucher löschen (hier komme ich nicht weiter)
mysql_query("DELETE FROM hp_counter_heute WHERE DATE_FORMAT(time, '%d') != DATE_FORMAT(NOW(), '%d')");


// Hier alles ausgeben
$u_on = mysql_num_rows(mysql_query("SELECT ip FROM ".$on_tbl));
$u_total=$c->total;
$u_today=mysql_num_rows(mysql_query("SELECT ip FROM  hp_counter_heute"));
$u_yesterday=$c->yesterday;
$u_hits_today=mysql_num_rows(mysql_query("SELECT ip FROM  hp_counter_hits"));
$u_hits_total=$c->hits;

// Ab hier wird alles in einer Tabelle ausgegeben
?>


Ich habe nun 4 Tabellen
hp_counter (gestern, besuchergesamt,hitsgeasmt)
hp_counter_online
hp_counter_hits (hits von heute)
hp_counter_heute (besucher von heute, das löschen am nächsten Tag funzt auch schon)
nur sollte vor dem löschen die Zahl von heute in hp_counter eingetragen werden

Wie kann ich das nun machen?

Gruß,
Toasterfraktion

Dieser Beitrag wurde von Toasterfraktion bearbeitet: 15. Oktober 2008 - 22:54

0

#3 Mitglied ist offline   Crocodili 

  • Gruppe: aktive Mitglieder
  • Beiträge: 28
  • Beigetreten: 04. August 08
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 21. Oktober 2008 - 13:46

Hallo,

du könntest täglich einen Cronjob nachts um 4 (oder um 00:01) starten, der ein bestimmtes Script ausführt. Der könnte dann die Werte übertragen.

"Ich habe nun ein Problem mit:
Besucher Heute
Besucher Gestern
Hits Heute"

Ich würde eine fortlaufenden Tabelle mit dem aktuellen Datum als PK und den Feldern Besucher heute und Hits heute beim Aufruf der Seite updaten.

Für die Gesamtzahl dann entsprechend addieren.

Bei der Ausgabe musst du dir nur noch über die Date-Funktion das Datum schnappen, es konvertieren in ein brauchbare Format und kannst damit deinen Query füllen. Probleme seh ich da bei Montasumbruch für gestern, wobei du in der gleichen o.g. Tabelle das Datum von gestern gleich eintragen kannst.

MfG

Cro
0

#4 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 21. Oktober 2008 - 14:09

Danke für die Antwort Crocodili, ich habe es aber nun so gemacht dass ich generell alle Ips mit dem Datum der letzten zwei tage speicher, daraus kann ich mit

$heute=mysql_num_rows(mysql_query("SELECT ip FROM  hp_counter WHERE DATE_FORMAT(time, '%d') = DATE_FORMAT(NOW(), '%d')"));

$gestern=mysql_num_rows(mysql_query("SELECT ip FROM  hp_counter WHERE DATE_FORMAT(time, '%d') = DATE_FORMAT(NOW(), '%d')-1"));
Die Besucher von Heute und gestern zu bestimmen. Vorher lasse ich nich überprüfen ob die Einträge älter als 2 Tage sind und lösche sie gegebennenfalls:
mysql_query("DELETE FROM hp_counter WHERE DATE_FORMAT(time, '%d') < DATE_FORMAT(NOW(), '%d')-1");


Damit klappt es ganz gut!

gruß,
Toasterfraktion

Dieser Beitrag wurde von Toasterfraktion bearbeitet: 21. Oktober 2008 - 14:10

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0