Problem mit Counter und IP-Check auf mySQL-Basis

meilon

Erfahrenes Mitglied
Hi,
ich habe mir einen Counter für meine Homepage gebaut. Diese ist total im Tabellenformat aufgebaut. D.h., das bei jedem klick auf einen internen Link, die counter.php neu geladen wird und wieder 1 zu den besuchern gezählt wird, was vorher bei den ekligen Frames nicht der Fall war. Ich habe das hier geschrieben, aber es net. Ich suche schon stunden nach dem Fehler, aber ich finde keinen. Hier das Script
PHP:
<?
$ip = getenv('REMOTE_ADDR'); 
$zeit = time();
$checkzeit = time() - 2*60*60;

$link=@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
$sql1 = "SELECT * FROM `iplog_counter` WHERE `ip` = '".$ip."' AND `timestamp` >= '".$checkzeit."'"; 
$result1 = mysql_query($sql1) or die(mysql_error());
mysql_close($link);
if(mysql_num_rows($result1) > 0) {
	$link=@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
	mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
	$sql1 = "SELECT * FROM `counter` LIMIT 1;";
	$result = mysql_query($sql1) or die(mysql_error());
	$row = mysql_fetch_assoc($result);
	
	echo $row['leute']." Leute seit 01.07.04";
	
	$sql2 = '
	INSERT INTO 
		`iplog_counter` 
			( `ip` , `timestamp` ) 
	VALUES 
		( \''.$ip.'\', UNIX_TIMESTAMP( ) );';
	$temp = mysql_query($sql2) or die(mysql_error());
	echo $temp;
	mysql_close($link);
}

else {
	$link=@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
	mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
	$sql1 = "SELECT * FROM `counter` LIMIT 1;";
	$result = mysql_query($sql1) or die(mysql_error());
	$row = mysql_fetch_assoc($result);
	
	$leuteneu=$row['leute'] + 1;
	
	$sql2 = 'UPDATE `counter` SET `leute` = \''.$leuteneu.'\';';
	mysql_query($sql2);
	
	echo $leuteneu." Leute seit 01.07.04";
	mysql_close($link);
}?>

mfg
Klink
 
Abgesehen davon, dass du hier nen fehler hast:
$sql1 = "SELECT * FROM `iplog_counter` WHERE `ip` = '".$ip."' AND `timestamp` >= '".$chec
weil du ja nich abschliest aber ich von nem copy&past problem ausgehe:

Wenn du uns nich sagen willst, was der fehler ist! kann man dir auch nich helfen.
 
Habe das Zeichen hinzugefügt, aber es trotzdem nicht. Aber ich habe herausgefunden, das es funktioniert, wenn die IP mit passigem timestamp schon in der Datenbank ist! Das kann es ja nicht sein

Das Problem ist, das es mehr ein Klick-, statt Besucherzähler ist. Er fügt die die IP einfach nicht in die Datenbank ein
 
Zuletzt bearbeitet:
Is das absicht, dass du nen neuen Datensatz hinzfufgen willst, wenn schon einer drinnen ist? denk ich mal nich
 
das ist kein Problem. Den Müll kann ich ab und zu mal löschen, so besucht wird die Seite wohl nicht werden. Außerdem ahbe ich das Problem gefunden! Das die Daten in die Datenbank eingetragen wird war an der stelle, wenn die Daten schon eingetragen sind, ein ganz dummer logischer Fehler.

mfg
 
Zurück