Sven Rautenberg: IE Eingeschränkte Site = Kein JavaScript = Per PHP erkennen ?

Beitrag lesen

Moin!

das problem ist das ich keinen wirklichen weg dafür finde...
mein problem ist das wenn nach der eingabe auf der folgenden seite ein update- sowie ein insert-befehl habe, dann wird der insert bei mehrfachen klicken öfters als der update-befehl ausgeführt. dadurch kommt es natürlich zu fehlern. weiss jemand wie ich es mache das beide mysql-statements nur einmal oder zumindest gleichoft ausgeführt werden ?

UPDATE und INSERT werden schon gleich oft ausgeführt - aber UPDATE ändert die Anzahl der Datensätze ja nicht, also merkst du den Unterschied nicht, wenn zweimal das UPDATE mit identischen Daten durchgeführt wird. Zwei INSERTS hingegen hinterlassen zwei neue Datensätze.

Eine schlichte Lösung kann sein, dass du eine neue Tabelle anlegst, in die du Formular-IDs hineinschreibst. Jedes generierte Formular wird mit einer generierten ID dort eingetragen. Schlauerweise auch noch mit einem Zeitstempel, damit Formular-IDs, die nicht zurückkommen, irgendwann auch wieder gelöscht werden können.

Du trägst also eine zufällige Formular-ID in diese Tabelle ein. Und wenn du das Formular wieder zurückkriegst, dann löschst du diese ID wieder. Und nur wenn das genau einen Datensatz gelöscht hat (affected rows = 1), verarbeitest du die Daten weiter. Wurde kein Datensatz gelöscht, hat ein früheres Abschicken des Formulars diese ID schon gelöscht.

- Sven Rautenberg

--
"Love your nation - respect the others."