Michael hatte früher im alten Jex mal ein Counter als Tutorial veröffentlicht:
-->
http://jex-treme.de/forum/thread.php?threadid=18071
Trotzdem werden ich denk Gedanken einfach nicht los, dass da irgendetwas an dem Code falsch ist...ich habe den Code für die user-129utzer von
www.h6p.de einwenig verändert:
CREATE TABLE `user2counter` (
`userid` int(11) NOT NULL default '0',
`datum` date NOT NULL default '0000-00-00',
`gaeste` int(11) NOT NULL default '0',
PRIMARY KEY (`userid`,`datum`)
) TYPE=MyISAM;
# und
CREATE TABLE `user2counteron` (
`userid` int(11) NOT NULL default '0',
`uhrzeit` datetime NOT NULL default '0000-00-00 00:00:00',
`ip` varchar(15) NOT NULL default '',
PRIMARY KEY (`userid`,`ip`)
) TYPE=MyISAM;
Und dann benutze ich den folgenden Code:
$userip = $_SERVER['REMOTE_ADDR'];
// [..]
// Counter
$timeout = 60*10; // nach 10 minuten netmehr online
$reload = 60*60*3; // nach 3 stunden als neuen user zaehlen
list($userdayzeile) = mysql_fetch_array(mysql_query('SELECT COUNT(userid) FROM user2counter WHERE userid = '.$userid.' && datum = NOW()');
if($userdayzeile == 0){
mysql_query('INSERT INTO user2counter SET datum = NOW(), userid='.$userid.', gaeste = 0';
mysql_query('DELETE FROM user2counteron WHERE userid='.$userid);
}
list($userindb) = mysql_fetch_array(mysql_query('SELECT COUNT(userid) FROM user2counteron WHERE ip = "'.$userip.'" && userid = '.$userid.' && uhrzeit > NOW() - INTERVAL '.$reload.' SECOND');
if($userindb == 0){
mysql_query('UPDATE user2counter SET gaeste = gaeste + 1 WHERE userid='.$userid.' && datum = NOW()';
mysql_query('INSERT INTO user2counteron SET ip = "'.$userip.'", uhrzeit = NOW(), userid='.$userid);
}else mysql_query('UPDATE user2counteron SET uhrzeit=NOW() WHERE ip = "'.$userip.'" && userid='.$userid);
mysql_query('DELETE FROM user2counteron WHERE uhrzeit <= NOW() - INTERVAL '.$reload.' SECOND';
Auslesen:
// Counter
list($gesamt) = mysql_fetch_array(mysql_query('SELECT SUM(gaeste) FROM user2counter WHERE userid='.$userid));
list($heute) = mysql_fetch_array(mysql_query('SELECT gaeste FROM user2counter WHERE userid='.$userid.' && datum = NOW()');
list($gestern) = mysql_fetch_array(mysql_query('SELECT gaeste FROM user2counter WHERE userid='.$userid.' && datum = NOW() - INTERVAL 1 DAY');
list($online) = mysql_fetch_array(mysql_query('SELECT COUNT(userid) FROM user2counteron WHERE userid='.$userid.' && uhrzeit >= NOW() - INTERVAL '.$timeout.' SECOND');
Ihr müsst euch einfach die Sache mit `userid` (und $userid) wegdenken, wenn ihr den Counter "nur einmal" benutzt...