PHP Eindeutige Bestellnummer mit Datum generieren

8

Ich möchte einen eindeutigen Identifikator im folgenden numerischen Format erstellen:

%Vor%

Beispiel:

%Vor%

Wo:

YYYYMMDD ist ein aktueller Datumswert und anderer XXXX ist ein zufällig generierter Wert.

%Vor%

Täglich benötigtes eindeutiges Volume ist etwa 100. Welche Methoden mit PHP sollte ich verwenden, um mögliche Duplikate in Rand-Werten zu verhindern oder alle IDs maximal einzigartig zu machen? Vielleicht möglich aktuelle Zeitfunktionen verwenden, um diese Zahlen in den letzten 4 Zeichen zu verdichten?

BEARBEITET: Eindeutiger Wert, der mit der MySQL-Datenbank als Hauptindex der Tabelle verbunden ist. Es sind Anfangswerte, die nicht mit irgendwelchen gespeicherten Informationen in der Datenbank verbunden sind.

    
Ken Tang 09.03.2014, 06:26
quelle

3 Antworten

11

Sie können sich nicht auf rand() verlassen, Es besteht die Möglichkeit, dass Sie ein Duplikat erzeugen (ziemlich selten für ein rand(0,9999) , um ein Duplikat zu erzeugen, aber das wird irgendwann passieren).

Also, anstatt für rand() zu gehen, erstellen Sie einfach einen inkrementellen Wert (sagen wir ... beginnend bei 1) und hängen an das generierte Datum an.

Wenn du das nächste Mal eine neue ID generierst, nimm den inkrementellen Wert (sag, wenn du ihn irgendwo gespeichert hast. muss 1 richtig sein?) status, inkrementiere ihn und füge ihn an dein neues Datum an.

Keine ideale Lösung .. (Kritiker willkommen)

Sie können ein uniqid , gekoppelt mit sha-1 und time verwenden und ein substr() für die ersten 4 Zeichen verwenden.

%Vor%

OUTPUT :

%Vor%     
Shankar Damodaran 09.03.2014 06:29
quelle
6

Ich musste etwas Ähnliches tun, eine Lösung, die Zeit behält und die ID auch einzigartig hält, und ich habe eine Lösung gefunden, um PHP Funktion time() gefällt das

$reference_number = 'BFF-' . time() ; Sie können BFF in etwas ändern, das für Ihre Geschäftslogik sinnvoller ist.

Meine eindeutige Referenz-ID sieht wie BFF-1393327176 aus und die Zahl kann von Unix in Echtzeit konvertiert werden, was Ihnen Tue, 25 Feb 2014 11:19:36

gibt

Ich hoffe, das hilft

    
Baig 09.03.2014 07:13
quelle
0

Wenn die eindeutigen Werte einmal generiert werden, müssen Sie nur eine bedingte Auswahl für den rand-Wert treffen und den Wert in einem Array speichern, das die Bedingung sein wird - mit Inarray -:

%Vor%

Zur Kasse diese Demo .

    
SaidbakR 09.03.2014 07:33
quelle

Tags und Links