Kundennummer generieren
Rino
- php
0 Sascha0 Odium0 TomIRL0 Sven Rautenberg0 wahsaga
Hallo,
ich möchte mittels PHP und MySQL ein Verzeichnis für Firmen und Personen erstellen, in das sich diese auch selbständig eintragen können.
Jedem Eintrag eine ID zuzordnen wäre ja kein Problem, da würde ich z.B. die jeweils aktuelle Zeit als UNIX nehmen o.ä. ...
Ich möchte aber, dass eine individuelle Kundennummer aus den gemachten Angaben (Plichtfelder: Name, Vorname, Geb-Datum und weitere nicht Plichtfelder) generiert wird.
Die Kundenummer sollte dann in etwa so aussehen:
110556hm-ZZZZMMJJ
wobei
Name: Hans
Vorname: Mustermann
Geb-Datum: 11.05.1956
ZZZZZ: Zufallszahl
MM: akt. Monat
JJ: akt. Jahr
Durch die Zufallszahl soll gewährleistet sein, dass Personen mit gleichem Geb.-Datum und Initialien nicht die gleiche Kundennummer bekommen.
Wie kann ich das realisieren? Und vorallem, wie kann ich gewährleisten, dass auch jede Kundennummer nur einmal vergeben wird? Das muss ich sicher in der Datenbank vor Eintrag prüfen ...
Es wäre toll, wenn mir da jemand helfen könnte ...
Gruss Rino
Hallo,
ich finde es persönlich schöner wenn Kundennummern mit dem Datum beginnen.
Ich mache das so:
032005(Datum)25(Rubrik)589(Zufallszahl)
Ist meiner Meinung nach noch übersichtlicher.
MfG
Hallo,
kleine Anmerkung von mir:
Ich würde keine Personenbezogenen Daten in eine Kundenummer stecken.
Eine Kundennummer ist nicht immer geheim zu halten, nicht alle wollen, das dabei das Geb.datum erkennbar ist.
Odium
Durch die Zufallszahl soll gewährleistet sein, dass Personen mit gleichem Geb.-Datum und Initialien nicht die gleiche Kundennummer bekommen.
Wie kann ich das realisieren? Und vorallem, wie kann ich gewährleisten, dass auch jede Kundennummer nur einmal vergeben wird? Das muss ich sicher in der Datenbank vor Eintrag prüfen ...
Du mußt auf die Nummer einen Primärschlüssel legen!
Dann passiert nichts im schlimmsten Fall mußt Du den Fall das die KdNr vorhnden ist abfangen!
Natürlich darf dann dass id Feld nicht auto_increment sein!
Datumsfunktion kennst du in PHP?
Die Zufallszahlen geht glaube ich mit gmp_random()
UNGETESTET!
HAb ich noch nie benutzt die Funktion!
Den Rest bekommst Du mit Stringfunktionen hin!
Kleine Anmerkung:
Warum benutzt Du die Unix Zeit als ID?
Macht doch keinen Sinn wenn Du eine Kundennumer hast!
Besorg Dir mal das Tutorial von C. Reeg auf.
http://www.reeg.net
Da sind die Grundlagen vor allen Dingen von DB `s erklärt!
Viele Grüße aus Berlin
Moin!
Ich möchte aber, dass eine individuelle Kundennummer aus den gemachten Angaben (Plichtfelder: Name, Vorname, Geb-Datum und weitere nicht Plichtfelder) generiert wird.
Wozu willst du diese Kundennummer verwenden?
Die Antwort auf diese Frage ist nicht ganz uninteressant, denn im Prinzip liefert dir MySQL schon die Kundennummern, wenn du eine ID als Primärschlüssel-Feld definierst und mit "auto_increment" versiehst. Dann zählt MySQL bei jedem neuen Eintrag die Nummer hoch, und du hast immer absolut eindeutige Kundennummern.
Diese sind dann auch prima geeignet, um den Datensatz wiederzufinden. Und es stecken keine Informationen drin, die der Kunde vielleicht nicht so gern drinhaben würde.
Dumm nur: Wenn du die Datenbank neu beginnst, kriegt der erste Kunde die Nummer "1" (bzw. mit Nullen aufgefüllt die Nummer 000000000000000000001). Sieht doof aus, ist aber so.
Die Kundenummer sollte dann in etwa so aussehen:
110556hm-ZZZZMMJJ
Dieses Schema begrenzt deine mögliche Kundenzahl. Ich würde sowas nicht verwenden wollen.
Die Geburtsangabe sowie die Initialen sind redundant. Der Verzicht auf eine vierstellige Jahresangabe bringt seit 2000 Probleme. Das Datum am Ende ist zwar interessant, aber es muß nicht in der Kundennummer stehen, es könnte auch im Datensatz stehen. Und die Zufallsnummer macht überhaupt die größten Probleme, weil der Zufall keine Eindeutigkeit garantiert, wenn man das nicht explizit nachprüft.
Wie kann ich das realisieren? Und vorallem, wie kann ich gewährleisten, dass auch jede Kundennummer nur einmal vergeben wird? Das muss ich sicher in der Datenbank vor Eintrag prüfen ...
Wie erwähnt: Die Datenbank liefert dir freiwillig und ohne Aufwand eine eindeutige Nummer zur Identifizierung. Du könntest diese Nummer noch über einen Prüfsummenalgorithmus laufen lassen, um eine oder mehrere Prüfziffern hinzuzufügen, damit beim erneuten Eingeben der Kundennummer keine dummen Eingabefehler auftreten. Du könntest die Kundennummer sogar mit soviel Redundanz versehen, dass sich Nummernfehler vom Algorithmus selbst korrigieren lassen und somit wieder die richtige Kundennummer herausgefunden wird. All dies sind Features, die für eine Kundennummer durchaus nicht uninteressant sind. Aber dein komplizierter Aufbau sieht einfach nur schick aus, hat aber keinen technischen Mehrwert.
Eventuell ist es sogar angebracht, deine Kundennummer aus zwei IDs (nämlich die des Menschen und die der zugehörigen Firma) zu kombinieren.
- Sven Rautenberg
hi,
Dumm nur: Wenn du die Datenbank neu beginnst, kriegt der erste Kunde die Nummer "1" (bzw. mit Nullen aufgefüllt die Nummer 000000000000000000001). Sieht doof aus, ist aber so.
dafür kann man ja einmal einen datensatz anlegen (und sofort anschliessend wieder löschen), bei dem man einen wert für das auto-inc feld explizit mitgibt, z.b. 99.999, dann würde der nächste datensatz automatisch die nummer 100.000 bekommen, so hättest du also alle kundennummern 6-stellig...
gruss,
wahsaga