Marius Heil
Erfahrenes Mitglied
Hi,
ich hab für mein Onlinespiel, welches sich immer noch im Aufbau befindet eine kleine Funktion geschreiben die mir die Rangliste auf dem aktuellsten Stand halten soll.
In einer MySQL Tabelle habe ich eine Punkte sowie eine Rangspalte, meiner Funktion übergebe ich zum einen die UserID, zum anderen die Puntke die der Benutzer hinzubekommen soll.
Dies ist die Funktion:
Ich würde mich freuen wenn jemand den Fehler findet, sie sortiert nämlich von Zeit zu Zeit benutzer auf den gleichen Rang und überspringt Ränge.
Ich kann nur hoffen, dass ein Server PHP Abfragen nacheinander bearbeitet und nciht gleichzeitig, was dann passiert kann ich mir nciht vorstellen
Marius
ich hab für mein Onlinespiel, welches sich immer noch im Aufbau befindet eine kleine Funktion geschreiben die mir die Rangliste auf dem aktuellsten Stand halten soll.
In einer MySQL Tabelle habe ich eine Punkte sowie eine Rangspalte, meiner Funktion übergebe ich zum einen die UserID, zum anderen die Puntke die der Benutzer hinzubekommen soll.
Dies ist die Funktion:
PHP:
function order_rang($id, $punkte){
$dbh = verbindung();
//Zuerst die aktuellen Punkte und den aktuellen Rang auslesen
$daten = einereihe($dbh, "SELECT rang, punkte FROM user WHERE ID=".$id." LIMIT 1");
//Wenn der User bereits 1. ist
if ($daten[0] == "1"){
setanfrage($dbh, "UPDATE user SET Punkte=Punkte+".$punkte." WHERE ID=".$id." LIMIT 1");
return;
}
$next = einereihe($dbh, "SELECT rang FROM user WHERE Punkte>=".($punkte+$daten[1])." ORDER BY Punkte ASC LIMIT 1");
if ($next == ""){
setanfrage($dbh, "UPDATE user SET Punkte=Punkte+".$punkte." WHERE ID=".$id." LIMIT 1");
return;
}
setanfrage($dbh, "UPDATE user SET Rang=Rang+1 WHERE Rang>".$next[0]." AND Rang<".$daten[0]);
setanfrage($dbh, "UPDATE user SET Punkte=Punkte+".$punkte.", Rang=".($next[0]+1)." WHERE ID=".$id." LIMIT 1");
}
Ich kann nur hoffen, dass ein Server PHP Abfragen nacheinander bearbeitet und nciht gleichzeitig, was dann passiert kann ich mir nciht vorstellen
Marius