Sven Rautenberg: Eindeutige Nummer vergeben

Beitrag lesen

Moin!

Hi Dieter,
So ungefähr hab ich das schon gehabt. Funktioniert auch. Was aber, wenn mehr als ein User gleichzeitig das Formular aufmachen. Wenn jetzt noch kein Eintrag in der db ist, wird doch für jeden dieser user 1 vergeben, oder irre ich mich da? Dann hätt ich doch mehr als einmal die 1 vergeben.

Lege bereits beim Aufruf des Formulars einen neuen Datensatz an. Dann kannst du diese ID verwenden und sie ins Formular hineinschreiben.

Das Problem ist allerdings, dass du beachten mußt, dass der Client diese ID verändern kann. Wenn du die ID 23 neu angelegt hast und ins Formular schreibst, der Benutzer sie aber verändert in 22, dann würdest du ohne weitere Prüfung den alten Datensatz überschreiben. Du müßtest also irgendeinen sicheren Mechanismus erfinden, der die herausgegebene ID auf jeden Fall wiedererkennt, damit du im neu angelegten Datensatz die eingegebenen Daten speichern kannst.

Aber was ist dann, wenn das Formular niemals abgeschickt wird? Dann belegst du immer neue Datensätze, die niemals verwendet werden. Das ist auch nicht gut.

Deshalb ist es die beste Lösung, einen Datensatz wirklich erst dann anzulegen, wenn die Daten dafür dir bekannt sind. Und dann kannst du die dadurch entstandene ID abfragen (mysql_insert_id() macht das direkt nach dem INSERT) und bekanntgeben. Alles andere ist aufwendig, fehleranfällig und blödsinnig.

- Sven Rautenberg

--
"Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)