Ein Problem das mich seit längerem plagt, möchte es mal an einem Beispiel einer Sortierung beschreiben, die ich vor kurzem geschrieben habe.
Folgendes:
Ich habe eine Tabelle mit beliebigem Inhalt.
Rechts davon habe ich zwei Pfeilchchen mit denen man die Priortät bestimmen kann (danach wird dann sortiert, also nach oben und unten verschoben).
Falls der Sortierungseintrag in der DB 1 ist (höchstes) dann wird der Pfeil für eine Erhöhung nicht angezeigt, anders herum bei der niedrigsten Sortierung (z.B. 5), die in der DB gefunden werden konnte, nur als Hinweis.
Das funktioniert so weit perfekt.
Das Problem:
Wenn der User mehrmals sehr schnell hintereinander auf den Pfeilchen für die Änderung klickt, erhalte ich z.B. negative Werte für die Sortierung und alles gerät durcheinander und ist nicht mehr bedienbar.
Meine Vermutung ist, dass das Skript nicht mehr vollständig ausgeführt werden kann und deshalb dieser Fehler entsteht.
Ein gekürzter Ausschnitt meines Skripts:
Das ist natürlich nur ein prinzipielles Beispiel für dieses Problem.
Wie kann man das umgehen?
Folgendes:
Ich habe eine Tabelle mit beliebigem Inhalt.
Rechts davon habe ich zwei Pfeilchchen mit denen man die Priortät bestimmen kann (danach wird dann sortiert, also nach oben und unten verschoben).
Falls der Sortierungseintrag in der DB 1 ist (höchstes) dann wird der Pfeil für eine Erhöhung nicht angezeigt, anders herum bei der niedrigsten Sortierung (z.B. 5), die in der DB gefunden werden konnte, nur als Hinweis.
Das funktioniert so weit perfekt.
Das Problem:
Wenn der User mehrmals sehr schnell hintereinander auf den Pfeilchen für die Änderung klickt, erhalte ich z.B. negative Werte für die Sortierung und alles gerät durcheinander und ist nicht mehr bedienbar.
Meine Vermutung ist, dass das Skript nicht mehr vollständig ausgeführt werden kann und deshalb dieser Fehler entsteht.
Ein gekürzter Ausschnitt meines Skripts:
PHP-Code:
if(isset($_GET["sortup"])){
// verändert das höhere objekt in der db anhand der objdaten
// hier sortierung nach oben (2-->1)
mysql_query(
" update obj " .
" set obj_sort = " . obj_sort() . // 2
" where obj_sort = " . obj_sort() - 1) . // 2-1 = 1
" and obj_id = " . obj_id());
//altes objekt ändern und in die db zurückschreiben
$anderesobj->set_obj_sort($anderesobj->get_obj_sort() - 1); // 1
$anderesobj->update();
}
Wie kann man das umgehen?
Kommentar