Archiv verlassen und diese Seite im Standarddesign anzeigen : counter mit mysql
hi
ich will einen einfach counter mit mysql machen, er soll halt die besucher zählen, und sollte anhand einer "haltbarkeit" der ip zählen..
jetzt fehlt mir aber ein Ansatz, wie ich das realisieren kann. kann ich denn einem mysql eintrag eine "Haltbarkeit" geben?
naja ich brauche einen denkanstoss
danke
neo
Mir ist nicht klar, was du unter "Haltbarkeit von IPs" verstehst. Könntest du das mal ein bisschen ausführen?
ja ich will halt das jeder besucher gezählt wird..jetzt will ich aber auch zählen, wenn ein besucher zB. um 14 uhr die seite besucht, und um 15:30 nochmal wieder kommt, das es dann als neuer "besuch" gezählt wird. das heisst ich muss die ips speichern, damit nicht jeder refresh als neuer besucher gezählt wird.
ich muss also die ip speichern, und nach sagen wir einer stunde wieder löschen
Dann speicher in deiner Tabelle doch einfach noch den aktuellen Timestamp. Und beim Aufruf des Counters wird halt auch noch überprüft, ob ein Eintrag schon >= 1 Stunde in der Datenbank verweilt. Ist dies der Fall, wird er gelöscht.
ok das heisst, bei jedem aufruf des counters schmeisse ich als erstes die alten ips raus, und prüfe dann ob die ip schon drinne ist--> wenn nicht, dann wird sie gespeichert, und die counter spalte um 1 erhöht
ok danke für die hilfe
Genauso würde ich das machen. Wenn du fertig bist, dann sag mal bitte Bescheid, ob alles funktioniert hat.
ok mache mich gleich dran ;)
so fertig...wenn jemand noch optimierungstipps hat, nur her damit
<?php
//made by neo
//ausgabe
include('sql_config.php');
@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
mysql_select_db(MYSQL_DATABASE) OR die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
$sql = "SELECT
count
FROM
counter
ORDER BY
ID DESC";
$result = mysql_query($sql) OR die(mysql_error());
if(mysql_num_rows($result)) {
$row = mysql_fetch_array($result);
$last = @array_pop($row);
echo("<strong>$last</strong>");
}
////
//checken ob alte daten da sind
include('sql_config.php');
@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
mysql_select_db(MYSQL_DATABASE) OR die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
$time = time() -3600;
//$time = time() -5;
$result = mysql_query("DELETE FROM
counter
WHERE
time < $time;") OR die(mysql_error());
////////////////////////////
//ip checken..wenn sie nicht in der db ist, dann wird um 1 erhöht
$ip = $REMOTE_ADDR;
//$ip = mt_rand(1,6500);
$time = time();
$sql4 = "SELECT
ip
FROM
counter
where IP='".$ip."'";
$result4 = mysql_query($sql4) OR die(mysql_error());
if(mysql_num_rows($result4) <= 0) {
$last = $last+1;
echo("<br>");
echo($last);
$sql3 = "INSERT INTO counter
(time,ip,count)
VALUES
('$time',
'$ip',
'$last')";
include('sql_config.php');
@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
mysql_select_db(MYSQL_DATABASE) OR die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
$result3 = mysql_query($sql3) OR die ("Fehlermeldung:".mysql_error());
}
//////////////////////////7
?>
hier der sql dump
CREATE TABLE `counter` (
`ID` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`time` VARCHAR( 20 ) DEFAULT NULL ,
`ip` VARCHAR( 15 ) DEFAULT NULL ,
`count` VARCHAR( 10 ) DEFAULT NULL ,
PRIMARY KEY ( `ID` )
);
Scheint doch recht gut zu sein. Kann man zwar noch ein stylistisch ein bisschen verbessern, muss aber auch nicht wirklich sein.
Nur noch eine Frage. Was macht das hier?
//ip checken..wenn sie nicht in der db ist, dann wird um 1 erhöht
$ip = $REMOTE_ADDR;
//$ip = mt_rand(1,6500);
Ich verstehe die auskommentierten Sachen nicht.
achso ja
//ip checken..wenn sie nicht in der db ist, dann wird um 1 erhöht
$ip = $REMOTE_ADDR;
//$ip = mt_rand(1,6500);
ja die erste zeile ist halt das kommentar, die zweite zeile holt sich die ip des users, und die dritte generiert einfach ne zahl..das hatte ich gemacht zum testen...weil ich ja net als ne andere ip habe..deshalb habe ich es rauskommentiert, damit es "ausgeschaltet" wird..naja hätte ich rausmachen können
Der Kommentar ist leider nicht sehr durchsichtig für mich. Da steht, du überprüfst die IP, wenn diese nicht in der Datenbank vorhanden ist, dann wird sie um 1 erhöht. Wie kannst du die IP um 1 erhöhen bzw. was soll das. Macht doch überhaupt keinen Sinn.
Tschuldigung, aber ich glaube ich steh irgendwie auffem Schlauch....
hehe nein nein, das soll heissen, das wenn die ip noch nicht in der db ist, wird der counter um 1 erhöht, und gleichzeitig wird die ip in die db eingetragen..so wenn der besucher jetzt noch auf der seite rumklickt, wird geprüft ob die ip in der db ist..
wenn ja, dann wird der counter nicht erhöht
wenn nein, dann wird er erhöht und die ip gespeichert
ja ok die kommentare sind nicht die besten, aber ich kanns nicht besser :)
Jetzt hab ichs verstanden :)
vBulletin®, Copyright ©2000-2024, Jelsoft Enterprises Ltd.