Formular mit fortlaufender Nummer

civicmx

Grünschnabel
Hallo,

ich möchte Folgendes erreichen:

Sobald ein User das Formular abgeschickt hat, soll eine fortlaufende Nummer (8stellig) generiert, in der Datenbank gespeichert und auf der Ergebnisseite ausgegeben werden. Die ersten 3 Zahlen sollen aber nicht verändert werden.

Gibt es Tutorials oder efrtige Skripts, die in diese Richtung gehen?

Vielen Dank im Voraus
CivicMX
 
Hi,

dafür gibt es zwei Lösungsmöglichkeiten. Entweder legst du eine eigene DB-Tabelle dafür an, liest die aus, erhöhst den Wert um 1, schreibst den Wert zurück und verwendest ihn um anschließend den eigentlichen Datensatz zu schreiben.
Viel einfacher ist es aber, die Auto-Increment Funktion der Datenbank zu nutzen und den Anfangswert entsprechend auf z.B. 12300001 zu stellen. Über mysql-insert-id kannst du nach dem Schreiben den Wert auslesen.
 
Vielen Dank für die schnelle Antwort. So wie es aussieht muss ich wohl die erste Möglichkeit in Betracht ziehen.

Kennt jemand hierfür ein entsprechendes Tutorial?
 
Vielen Dank für die schnelle Antwort. So wie es aussieht muss ich wohl die erste Möglichkeit in Betracht ziehen.

Kennt jemand hierfür ein entsprechendes Tutorial?

Ein Tutorial wirst du dafür wohl kaum finden, da es sich nur um zwei bzw. drei DB Zugriffe handelt und das nun absolute Basics sind. Auch wenn du nur Grundkenntnisse in MySQL hast, solltest du das problemlos hinbekommen. Ich würde dir aber trotzdem zur zweiten Variante raten. Auch wenn die Wahrscheinlichkeit sehr gering ist, kann es bei der ersten Variante zu Überschneidungen kommen, so daß die Nummer theoretisch mehrfach vergeben werden kann. Außerdem sparst du dir Scriptlaufzeit und einen DB Zugriff.
 
Auch wenn mir die zweite Variante lieber ist, ist die Vorgabe Richtung 1. Variante :-/

Es gibt eine function generateID ... die generiert eine zufällige ID .. diese möchte ich nun ersetzen ...

Gibt es denn zumindest diesbezüglich irgendwo eine Sammlung, ähnlich wie bei mysql-insert-id?
 
Wozu willst du eine zufällige ID, wenn du einen fortlaufenden Wert brauchst, dessen erste Ziffern gleich bleiben sollen? Das paßt überhaupt nicht zusammen bzw. läuft sogar kontraproduktiv. Abgesehen davon, daß du dann noch UNIQUE einführen mußt, produzierst du damit eine Schleife, die immer länger nach freien Zahlen suchen muß, je mehr Teilnehmer du hast.
 
ohh, wurde missverstanden .. im moment wird eine zufällige id per function generiert ... will dies nun ersetzen ... gibts diesbezüglich keine sammlung an functions?
 
ohh, wurde missverstanden .. im moment wird eine zufällige id per function generiert ... will dies nun ersetzen ... gibts diesbezüglich keine sammlung an functions?

Wirst du wohl selber schreiben müssen, da eine solche Funktion wohl in den seltensten Fällen Sinn macht. Für eine eindeutige und fortlaufende Nummer gibt es ja auto-increment.
 
In MSSQL würde ich es vermutlich folgend lösen
Code:
Select top 1 id from tabelle order by id desc

Das Ergebnis entweder in PHP oder SQL dann noch um 1 erhöhen und fertig.

Die entsprechende MySQL Syntax kenne ich leider nicht
 
In MySQL sollte das auch folgendermaßen funktionieren:

Lege eine Spalte mit den Merkmalen "INT NOT NULL AUTO_INCREMENT" an. Um die Einmaligkeit zu gewährleisten, kannst du als Index PRIMARY KEY oder UNIQUE wählen. Das kann man imho auch machen, wenn die Tabelle schon existiert und Datensätze enthält.

Danach löschst du die alte Spalte und benennenst die neue Spalte mit ALTER TABLE ... CHANGE ... um.
 
Zurück