PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : php und mysql



iyas
04-12-2001, 10:44
Hallo leut,

ich will einen 12 stelligen zufallzahl mit php erstellen und der soll mein schlüssel attribut in der daten bank sein. dadurch darf die zahl sich nicht zweimal wieder hohlen. weiss jemand wie ich so eine zahl erstellen kann, oder wie ich die tabelle überprüfen kann um dann eine anderen zahl zuerstellen.

vielen dank im vorraus.

philippmueller
04-12-2001, 12:23
Nunja, das ganze ist nicht so schwer.

1. Generiere ein 12-stellige Zahl
2. Mach ne while-Schleife mit einer select-anweisung, die sucht, ob diese Zahl schon existiert. Wenn ja, dann neue Zufallszahl, wenn nein, dann nächster Schritt.

Du könntest statt dem Select auch einfach das Feld als eindeutig deklarieren und solange ein INSERT INTO machen, bis das Insert funktioniert.

Allerdings sind beide Sachen weder schön noch performant und haben sogesehen einen Designfehler.

Wenn Du mehr als 100.000 Datensätze so hast, dann ist das ein echtes Performanceproblem.

Wenn Du schon 12 Stellen verwendest, dann geh doch so vor, daß Du die letzten 6 Stellen durch die Datensatz-ID bildest und nur die ersten 6 rein durch Zufall.

subworx
04-12-2001, 23:15
2 dinge:

a) muss die zahl unbedingt 12 stellen haben? sonst wäre ein autoincrement @ mysql brauchbar ... von 1 bis ...... 13 stellen int

b) mach das id feld UNIQUE
dann so etwas in der art von if (! myqsl_query("insert into db (id, blubb) values ($id,$blubb);")) { neue zahl generieren, wieder if mit insert }

oder noch besser:
while (! mysql....) { $id = neue zufallszahl }

im php manual (www.php.net | documentation | german windows chm ) stehen beispiele zu srand/rand, als startwert halt 100000000000 und als endwert 999999999999 eingeben, dann müsste das hinhauen