Mailinglisten-Archive |
Ralf Eggert wrote: >Hallo Liste, > >das Thema ist eigentlich kein PHP Problem, aber da ich das Projekt in >PHP entwickele, passt es im grossen und ganzen hier rein. > >Für ein neues Projekt suche ich nach einer geschickten Nummernvergabe >für registrierte Benutzer. Ich möchte, dass jeder Benutzer durch eine >eindeutige, fünfstellige Nummer (kann auch mit führenden Nullen) sein, >identifiziert wird. Diese Nummer soll natürlich niemals doppelt vergeben >werden. > >Mir kommen nun drei Lösungsansätze in den Sinn: > >1. Ich fülle eine einfache MySQL Tabelle mit allen möglichen Nummern. > Das wären dann 99.999 Einträge in dieser Tabelle. Immer wenn ich > eine neue Nummer brauche, lese ich per Zufall einen Datensatz aus > dieser Tabelle aus. Damit die Nummer nicht doppelt vergeben wird, > lösche ich diesen Satz dann aus der Tabelle. > > Würd ich nicht so machen. Ob Du nun ne Zufallszahl generierst oder eine Zufallszahl aus der Datenbank ausliest spielt ja eigentlich keine Rolle. Und um die Zahl zu holen und sie danach zu löschen musst Du mind. 2 Queries absetzten... >2. Ich lese alle bereits vergebenen Nummern in ein Array. Dann erstelle > ich per Zufall eine neue Nummer und prüfe, ob diese in dem Array > bereits vorhanden ist. Falls ja, erstelle ich eine weitere Nummer, > solange bis ich eine freie Nummer gefunden habe. > > würd ich von Deinen Vorschlägen favorisieren. Aber ich seh nicht ein, wieso Du unbedingt alle möglichen Zahlen ablegen willst... >3. Ich erstelle eine neue Nummer per Zufall und prüfe mit einem Select, > ob diese Nummer bereits vorhanden ist. Falls ja, erstelle ich eine > neue Nummer und führe einen weiteren Select durch, solange bis eine > eine freie Nummer gefunden habe. > > > Und im allerschlimmsten Fall hast Du 99.998 Selects? Würd ich nicht so machen... Ausserdem musst Du dir ja dann die neu erstellten (und schon vorhandenen) Nummern merken, damit Du sie nicht wieder erneut generierst. Weiterer Vorschlag: Wieso speicherst Du nicht einfach die letzte vergebene Nummer, zählst sie ein hoch und gut? Grüsse Sorin
php::bar PHP Wiki - Listenarchive