User Online Script

Katzenbauer

Erfahrenes Mitglied
Bei angehängter Datei kommt dieser Fehler:

Code:
Parse error: parse error, unexpected ';' in /www/htdocs/gaius/online.php on line 18

Ich kann mir den Fehler nicht erklären. Ich hab auch schon andere Schreibweisen probiert.
 

Anhänge

Weil du bei if($row['Anzahl'] { die ")" vergessen hast.
Ersetze
PHP:
if($row['Anzahl'] {
durch
PHP:
if($row['Anzahl']) {
 
Cool danke. Jetzt habe ich ein weiteres Problem. Ich wollte das nun zu einem Counter mit 30 min reloadsperre umstrukturieren doch leider klappt es nichtr ganz. Ich habe es in meine Seite eingebunden es kommt zwar keine Fehlermeldung aber die Seite lädt nicht fertig also ist da irgendwo ein Fehler.

Das heißt es muss irgendwo ein die() aktiviert worden sein.

Ich schreibs hier einmal und als Anhang:

PHP:
<?

$sql = "INSERT INTO `counter`
				(ip, datum)
			VALUES
			    ('".$_SERVER['REMOTE_ADDR']."', NOW())";
$result = mysql_query($sql) OR die(mysql_error());




$sql =" DELETE FROM
    		`counter`
		WHERE
        	DATE_SUB(NOW(), INTERVAL 30 MINUTE) > `datum`";
$result = mysql_query($sql) OR die(mysql_error());


$sql = "SELECT
			COUNT(*) as Anzahl
		FROM
            `counter`
		WHERE
            `ip`= '".$_SERVER['REMOTE_ADDR']."'";

$result = mysql_query($sql) OR die(mysql_error());
$row = mysql_fetch_assoc($result);

if(!$row['Anzahl']) {
	$sql = "UPDATE
	            `hits`
			SET
			    `hits` = `hits` + 1";
   mysql_query($sql) OR die(mysql_error());
} 


$sql = "SELECT
			`hits`
		FROM `hits`";
$result = mysql_query($sql) OR die(mysql_error());
$row = mysql_fetch_assoc($result) OR die(mysql_error());
echo "<div class=\"text\">Du bist der ".$row['hits']." Besucher</div><br />";

?>
 
Ich glaube du hast da einen Logikfehler drin (oder ich mach jetzt einen):

Du loescht ja alle Eintrage (pro IP), die aelter als 30 Minuten sind, und schaust dann, ob noch welche da sind. Wenn nicht, wird der Counter um eins hochgesetzt.

Da du aber unmittelbar bevor du etwas loescht, die IP erst eintraegst, kann die ja nie aelter als 30 minuten werden, das heisst, $row['anzahl'] wird es immer geben, das heisst dein counter wird nie hochgezaehlt.

Hoffe mal, ich hab selber keinen Logikfehler eingebaut :-)
 
Ich würde sagen, dass man erstmal überprüfen sollte, ob die ip schon vorhanden ist. Du trägst immer die ip ein, obwohl die vielleicht schon in der Tabelle steht.

PHP:
<? 
$sql =" DELETE FROM 
            `counter` 
        WHERE 
            DATE_SUB(NOW(), INTERVAL 30 MINUTE) > `datum`"; 
$result = mysql_query($sql) OR die(mysql_error()); 


$sql = "SELECT 
            COUNT(*) as Anzahl 
        FROM 
            `counter` 
        WHERE 
            `ip`= '".$_SERVER['REMOTE_ADDR']."'"; 

$result = mysql_query($sql) OR die(mysql_error()); 
$row = mysql_fetch_assoc($result); 

if(!$row['Anzahl']) { 
    $sql = "UPDATE 
                `hits` 
            SET 
                `hits` = `hits` + 1"; 
   mysql_query($sql) OR die(mysql_error()); 


  $sql = "INSERT INTO `counter` 
                (ip, datum) 
            VALUES 
                ('".$_SERVER['REMOTE_ADDR']."', NOW())"; 
  $result = mysql_query($sql) OR die(mysql_error()); 


} 


$sql = "SELECT 
            `hits` 
        FROM `hits`"; 
$result = mysql_query($sql) OR die(mysql_error()); 
$row = mysql_fetch_assoc($result) OR die(mysql_error()); 
echo "<div class=\"text\">Du bist der ".$row['hits']." Besucher</div><br />"; 

?>
 
Zurück