MySql: Username als Tabellenname benutzen

Also die Sache ist ja die, du benutzt oben schon mal die Spalte ID.
Ich geh mal davon aus, dass in der Tabelle "user" alle Benutzer drin stehen - und das nicht nur, wenn sie online sind. In dem Fall ist die ID ja die Benutzer-ID, hat also nichts damit zu tun, ob jemand online ist, oder nicht.

Wenn du ein Feld hast namens "SessionID", dann solltest du jenes verwenden. Ich glaub, mit folgender Abfrage funktioniert das dann sogar:
SQL:
SELECT * 
   FROM `user` 
   WHERE `SessionID`<>''
      AND `SessionID`<>null

Weil, wenn schon mal etwas in dem Feld war und du das Feld nur löscht, dann steht da nicht "null" drin, sondern eben ein leerer String - normal jedenfalls.
 
Also so geht es nicht
PHP:
$abfrage = mysql_query("SELECT * 
   FROM `user` 
   WHERE SessionID<>''
      AND SessionID<>NULL"); 
          while($row = mysql_fetch_object($abfrage)) 
{ 
  echo $row->Nickname; 
}

dann kommt eine Fehlermeldung
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www


und wenn die Session zuende ist, bzw. die Zeit abgelaufen ist wo nichts passiert steht die Session auf NULL.
 
Dankeschön für den Link, ich lese mir es morgen in Ruhe durch, da es jetzt schon Spät ist und ich schon zu lange drann bin.
Ich wünsche jetzt erstmal eine Gute Nacht an alle

Gruß Michael
 
Wodurch wird die Session wieder auf Null gesetzt? Hast du dafür einen Cronjob geschrieben?

Apropo fällt mir noch etwas ein. Wieso willst du eine Tabelle mit dem Benutzernamen als Name erstellen?
Mach doch einfach eine Tabelle für alle Benutzer mit denselben Spalten und einer extra-Spalte "userID", dann hast du eine größere Übersicht und das Löschen ist auch keine Kunst:
SQL:
DELETE FROM tabelle_alle WHERE userID={$userid}
 
Zuletzt bearbeitet:
Ich denke es ist mal Zeit zu erklären was ich im Kopf habe :)
Ich versuche es mal rüber zu bringen das man es versteht ( ist bei mir nicht so einfach :D)

ich habe also eine Startseite da muss man sich einloggen um was zu spielen, dieses Spiel soll so sein das man es nur Mann gegen Mann spielen kann dazu habe ich mir gedacht:
Nur wenn einer ON ist, kann er einen "Raum" erstellen"(wo der Spieler der den Raum erstellt immer die IP 1 bekommt und der zweite Spieler die IP2) die Datenbank soll nach dem Spiel wieder gelöscht werden, da mir sonst die Datenbank überläuft.
Vorschläge einer anderen Lösong nehme ich gerne entgegen, da ich gerne andere Lösungen lernen möchte.
Da ich Anfänger bin möchte ich auch gerne was lernen:)
Was ich allerdings überhaubt nicht verstehe... ist das es auf XXamp läuft und wenn ich es hochlade nicht :(
 
Vielleicht hat der Webserver eine ältere PHP/MySql Version. Check das mal! (php_info)


Wie oben geschrieben, finde ich eine extra Tabelle pro Spieler sinnlos. Ich erklärs an einem Beispiel!

Du willst es so, dass ein Spieler eine Tabelle (Raum) erstellen kann. Diese Tabelle sieht dann z.B. so aus (stark vereinfacht, ist nur das Prinzip):
Code:
ID  --  raumname  --  IP1  --  IP2

Es wäre sinnvoller, wenn du eine Tabelle für alle Spieler machst.
Code:
ID  --  userID  --  raumname  --  IP1  --  IP2
Wenn du dann den Raum "löschen" möchtest, machst du es so:
Code:
DELETE FROM table_rooms WHERE userID={$userid}
Dadurch werden alle Einträge gelöscht, die die userID $userid haben. (mit PHP wird das gelöst)


Die Sache ist die: du kannst selbstverständlich nicht jeden Spieler als online anzeigen lassen, weil das nicht stimmt. Demnach brauchst du etwas wie eine Zeit, zu der der Spieler einloggt. Das kann man sehr einfach lösen, indem man der Benutzertabelle ein Feld gibt namens
Code:
lastaction
Dort schreibst du immer den aktuellen Timestamp rein, wenn der User sich einloggt bzw. die Seite aktualisiert oder etwas unternimmt, also einen Link anklickt.

Wenn du dann eine Liste willst, aller User die aktuell "online" sind, dann lässt du dir eine Liste ausgeben mit allen Namen, deren timestamp plus 60 Sekunden (z.B.) größer ist, als der aktuelle Timestamp. Dann siehst du alle Benutzer, die aktiv waren innerhalb der letzten 60 Sekunden.

Andere Möglichkeiten gibt es auch - sind aber viel komplizierter...
 
Webserver hat Aktuelle PHP-Version: 5.2.17 habe ich jetzt mal umgestellt auf 5.3 (dauert gleube ich mal 15 minuten
und xxamp Aktuelle PHP-Version: 5.3.8
Kann es daran schon liegen ?
 
Webserver

Apache
MySQL-Client-Version: 5.0.84
PHP Erweiterung: mysqli

und xxamp

MySQL
•Server: localhost via TCP/IP
•Server Version: 5.5.16
•Protokoll-Version: 10
•Benutzer: root@localhost
•MySQL-Zeichensatz: UTF-8 Unicode (utf8



•Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
•MySQL-Client-Version: mysqlnd 5.0.8-dev
•PHP Erweiterung: mysql
 
Zuletzt bearbeitet:
Zurück