Online User zähler

zigomeier

Mitglied
Hilfe ich bekomme diese Fehlermeldung:

Warning: sprintf(): Too few arguments in /home/www/web56/html/skins/originalb2/_main.php on line 216
Insert fehlgeschlagen: Query was empty


Ich hab folgenden Quelltext:

PHP:
 $db_hostname = "localhost"; // MySQL Hostname
 $db_username = "web56"; // MySQL Username
 $db_passwort = "eve1211line"; // MySQL Passwort
 $db_database = "usr_web56_1"; // MySQL Datenbank
 $tabelle ="onlineuser"; // Tabellenname
 $online_time ="300"; // Zeit in sec die ein user "online" ist 
 $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())); // Wir erzeugen eine einzigartige ID für den Besucher und speichern den Hash in $uid.
 $ip = $_SERVER['REMOTE_ADDR']; // Die momentane IP des Besuchers.
 $dummy = ""; 
 $dtime = time() - $online_time; // momentane Zeit minus unsere $online_time
 @mysql_query("DELETE FROM " . $tabelle . " WHERE TIME < " . $dtime) or die(mysql_error()); 
  $result = mysql_query("SELECT ip FROM " . $tabelle." WHERE IP = '" . $ip . "'") or die(mysql_error());
 
 if (mysql_num_rows($result) == 0) { // Wenn die IP (sprich, der Besucher) nicht in der Datenbank steht
 	$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());
 } 
  $result = mysql_query("SELECT COUNT(IP) as total FROM " . $tabelle);
 list($user_online) = mysql_fetch_array($result);
 // $user_online enthält die Anzahl der aktiven Datensätze, also der Besucher, die in den letzten $online_time aktiv waren. 
 echo "<h4>Es sind " . $user_online . " user online</h4>";


Was kann ich tun?
 
Du hast 5 mal %s im sprintf, aber uebergibst nur 4 Parameter. Da fehlt noch einer.

Nachtrag: Es sieht eher nach einem %s zuviel aus, denn Du gibst an 3 Werte eintragen zu wollen, willst aber 4 Values uebergeben.
 
DANKE VIELMALS

das mit dem Kiffen überleg ich mir noch

Kannst du mir sagen wie ich die Anzahl der Datensätze in einer Tabelle anzeigen kann?

Da ich noch ein Newbie bin bitte ich dich mir den ganzen php text zu zeigen... nur wenns dir nichts ausmacht...

DBname: usr_web56_1
DBuser: web56
DBpasswort: ****
DBserver: localhost
Tabelle: benutzerdaten

Wäre sehr nett...
 
Das folgende sollte gehen: (musst halt nur noch die **** durch Dein PW ersetzen.
PHP:
<html>
<body>
<?
$db=mysql_connect("localhost","web56","****");
mysql_select_db("usr_web56_1",$db);
$users=mysql_query("select * from benutzerdaten",$db);
$num_users=mysql_num_rows($users);
printf("%s Benutzer in der Datenbank<br>",$num_users);
$db=mysql_close($db);
?>
</body>
</html>
 
Danke für die Hilfe.

Kannst du mir noch sagen warum das nicht geht:

PHP:
$benutzer[echo ("$nr"),]["Nickname"] ="$nick";
 $benutzer[echo ("$nr"),]["Kennwort"] = "$pw";
 $benutzer[echo ("$nr"),]["Name"] = "$name";
 $benutzer[echo ("$nr"),]["email"] = "$mail";
 
Die echos solltest Du Dir sparen koennen.
Also:
PHP:
$benutzer[$nr]["Nickname"] ="$nick";
$benutzer[$nr]["Kennwort"] = "$pw";
$benutzer[$nr]["Name"] = "$name";
$benutzer[$nr]["email"] = "$mail";
 
Ein formular über gibt:

$nr
$nick
$name
$pw
$mail

an dieses php script

PHP:
<?php
 // Definition der Benutzer
 $benutzer[$nr]["Nickname"] ="$nick";
 $benutzer[$nr]["Kennwort"] = "$pw";
 $benutzer[$nr]["Name"] = "$name";
 $benutzer[$nr]["email"] = "$mail"; 
 
 // Sie können an dieser Stelle beliebig viele Benutzer anlegen.
 // Achten Sie dabei nur auf die Fortführung der Nummer.
 
 // Aufbau der Datenbankverbindung
 $connectionid  = mysql_connect ("localhost", "web56", "eve1211line");
 if (!mysql_select_db ("usr_web56_1", $connectionid))
 {
   die ("Keine Verbindung zur Datenbank");
 }
 
 
 // Daten eintragen
 while (list ($key, $value) = each ($benutzer))
 {
   // SQL-Anweisung erstellen
   $sql = "INSERT INTO ".
 	"benutzerdaten (Nickname, Kennwort, Nachname, Vorname) ".
   "VALUES ('".$value["Nickname"]."', '".
 					   md5 ($value["Kennwort"])."', '".
 					   $value["Nachname"]."', '".
 					   $value["Vorname"]."')";
   mysql_query ($sql);
 
   if (mysql_affected_rows ($connectionid) > 0)
   {
 	echo "Benutzer erfolgreich angelegt.<br>\n";
   }
   else
   {
    echo "Fehler beim Anlegen der Benutzer.<br>\n";
   }
 }
 ?>

Und ich bekomm die meldung:

Fehler beim Anlegen der Benutzer.

Warum?
 
Ich weiss nicht wo du das script her hast,
oder ob du es wirklich selber geschrieben hast.
Aber falls nicht: PHP lernen ;)

greez Creere
 
Zurück