Ich habe gerade etwas Code für eine grundlegende Gliederung einer Seite geschrieben. Für ein Spiel, das ich ausführe, aber wenn ich mir den Code anschaue, habe ich das Gefühl, dass ich ihn in der falschen Reihenfolge geschrieben habe und dass ich mehr Abfragen ausführe als nötig.Logische Reihenfolge der PHP-Abfragen
$query = mysql_query("SELECT * FROM bodyguards WHERE username='$u'"); if($bg = mysql_fetch_assoc($query)) { // if you have a bg if($bg[status] == "active") { echo "your bodyguard is $bg[bodyguard], kick him?"; } else { echo "invite a bg?"; } } else { $query = mysql_query("SELECT * FROM bodyguards WHERE bodyguard='$u' AND status='active'"); if($bg = mysql_fetch_assoc($query)) { // if you are a bg echo "you are the bodyguard of $bg[username]"; } else { //otherwise check if anyone has invited you $query = mysql_query("SELECT * FROM bodyguards WHERE bodyguard='$u' AND status='invited'"); while($temp = mysql_fetch_assoc($query)) { echo "$temp[username] has invited you to be their bodyguard, accept or decline?"; } } }
Ich verwende nur eine Datenbanktabelle. Wenn ein player1 einen bestätigten Bodyguard (player2) hätte, würde die Zeile wie folgt aussehen:
username => player1, bodyguard => player2, status => aktiv.
hätte jemand hier den Code auf eine andere Weise geschrieben?
ich noch die Schleife müssen, wenn der Spieler mehr vorzuweisen hat als eine einladen. – Juddling
$ u ist der Nutzername des Players, der die Seite aufruft, leider habe ich vergessen zu erwähnen. und ja, ich bin kürzlich umgezogen Server und die neue PHP-Conf begann zeigen viele Hinweise, wie ich in der Angewohnheit, nie meine Array-Schlüssel zitieren:/ – Juddling
@Juddeln: Sorry, ich sah nicht die letzte Schleife dort. Sie können es jedoch trotzdem in einer einzigen Abfrage erstellen, da das gesamte Ergebnis bereits in $ query geladen ist. Sie müssen nur "mysql_fetch_assoc" machen, um die nächste Zeile zu holen, und so weiter. – netcoder