PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Besucher Online ?



Milchbox
16.06.2005, 18:36
Ich weiss nicht wo dran es liegt aber es klappt nicht:



<?php
$db_hostname = "";
$db_username = "";
$db_passwort = "";
$db_database = "";
$tabelle ="onlineuser";
$online_time ="300";
$db = @mysql_connect($db_hostname, $db_username, $db_passwort) or die("Konnte Verbindung nicht herstellen: " . mysql_error());
@mysql_select_db($db_database, $db) or die("Konnte Datenbank nicht finden");
$uid = md5(uniqid(microtime()));
$ip = $_SERVER['REMOTE_ADDR'];
$dummy = "";
$result = mysql_query("SELECT ip FROM " . $tabelle." WHERE IP = '" . $ip . "'") or die(mysql_error());
if (mysql_num_rows($result) == 0) {
$sqlQuery = sprintf("INSERT INTO %s (uid, ip, time) VALUES ('%s', '%s', '%s', '%s')",
$tabelle,
$uid,
$ip,
time()
);
mysql_query($sqlQuery) or die("Insert fehlgeschlagen: " . mysql_error());
}
$dtime = time() - $online_time;
@mysql_query("DELETE FROM " . $tabelle . " WHERE TIME < " . $dtime) or die(mysql_error());
$result = mysql_query("SELECT COUNT(IP) as total FROM " . $tabelle);
list($user_online) = mysql_fetch_array($result);
echo "es sind " . $user_online . " user online";
?>

Dingsi
16.06.2005, 18:40
"Es klappt nicht" ist die tollste Fehlerbeschreibung der Welt. So präzise. Jeder weiß sofort wonach er suchen muss. Es gibt ja nicht unheimlich viele unterschiedliche Fehlerquellen die "nicht klappen" könnten. Nein. Und die ausgegebene Fehlermeldung ist sowieso unwichtig und bringt nie was.

dadie
16.06.2005, 18:50
o.O

Mal ne frage

1,Warum zur Hölle nimmst du list($user_online) ?
Nimm einfach

$user_online = mysql_num_rows($result);

Macht das selbe spart aber resursen und macht das script ein bischen sicherer da keine echten user daten geladen werden ;)

2,Warum zur hölle benutz du sprintf o.O

Was willst du damit erreichen ? Du willst doch blos einen Eintrag machen was hat sprintf damit zu tuhn ?

Würde

INSERT INTO `$tabelle` (`uid`, `ip`, `time`) VALUES ('$uid', ' $ip', 'NOW()')",

nicht auch reichen o.O und warum hast du 3 Spalten angewählt aber 4 VALUES o.O

Und ne frage (bitte sag ja)

nutz du den Sql Timestamp ? Der Währe sehr nützlich bei einem Online Script
wenn du esüber time() machst muss der obere text von mir

INSERT INTO `$tabelle` (`uid`, `ip`, `time`) VALUES ('$uid', ' $ip', 'time()')",

heissen.

Edit:

Achja ein Tip von einem n00bkröten etwas alle wichtigen Variablen am ende eines Scriptes unseten mit unset($Variable); damit bist du immer auf der sicheren seite ;)

Milchbox
16.06.2005, 18:50
Hat sich erledigt hab den fehler gefunden lol >_< >_< >_<