dedlfix: fortlaufende Bestellnummern für Onlineshop

Beitrag lesen

echo $begrüßung;

Ganz einfach, indem du bei der Erstellung der Seite für den Benutzer (er ruft die Seite auf) in einem hiddenfield zum Beispiel die aktuelle Zeit speicherst (mit "mktime()") und abfragst.

Hier verstehe ich nicht, worauf du hinaus willst.

Es wird im Insertbefehl direkt die BenutzerID gespeichert (In einer zweiten Tabelle) und bei der Abfrage, die Zeile ausgelesen welche die größte auto_increment ID hat. (Also der letzte Eintrag)

Hier eigentlich auch nicht, aber ich versuche es mal.

bjoern hat nicht erwähnt, welche Datenbank ihm zur Verfügung steht. Ich kann also nicht mit Gewissheit sagen, welche Datenbanklösung die für ihn geeignete darstellt. Gehen wir mal von MySQL aus, so wäre die einfachste Variante eine auto_increment-Spalte. Beim Insert wird automatisch ein Wert vergeben, der mit LAST_INSERT_ID() abgefragt werden kann. Da diese Funktion verbindungsabhängig arbeitet, und man davon ausgeht, dass sich nicht zwei Anwendungen die gleiche Verbindung teilen, ist das die ungefährlichste Methode. Ein zwischen INSERT und Abfrage der LAST_INSERT_ID() in einer anderen Verbindung eingefügter Datensatz beeinflusst das Ergebnis von LAST_INSERT_ID() nicht.

Steht einem dieser Mechanismus nicht zur Verfügung, und man hat eine Datenbank, die Sequenzen unterstützt, dann wäre dies meiner Meinung nach das beste Mittel der Wahl. Die Sequenz liefert jeweils einen individuellen Wert, den man beliebig verwenden kann und der anderen auch nicht in die Quere kommt.

Ansonsten kann man sich einen eigenen Mechanismus implementieren. Dazu kann man entweder zuerst den aktuellen Wert auslesen und danach hochzählen oder man zählt zuerst hoch und liest dann aus. In beiden Fälle muss man jedoch dafür Sorge tragen, dass zwischen den beiden Vorgängen weder Lese- noch Schreibzugriffe von anderen Anwendungen auf den Wert stattfinden, weil es sonst zu doppelt vergebenen Werten kommt. Wenn sich diese beiden Vorgänge zu einem einzigen, atomaren, ununterbrechbaren Vorgang zusammenfassen lassen, und damit ein Sperrmechanismus überflüssig wird, sollte man das tun.
Das Einfügen eines Datensatzes und anschließendes Auslesen eines Maximalwertes, von dem man annimmt, es sei der Wert des eben einfügten Datensatzes fällt unter das gleiche Szenario.

echo "$verabschiedung $name";