Hallo iedereen,

Weet iemand hoe ik toch een uniek nummer kan krijgen, maar niet met uniqid(), want deze zijn bijna niet over te typen. Ze moeten dus makkelijk te lezen en over te typen zijn.
Geef eens een voorbeeld van een idnummer wat jij makkelijk te lezen vindt?

Waarom niet oplopend met AutoIncrement?
Ik gebruik nu uniqid(), maar voor onze monteurs is dit handig om over te typen (letters en cijfers door elkaar).

Maar ik ga denk ik het ID gebruiken, met daarvoor 1 letter ofzo.
was het handige van barcodes nu niet juist dat je ze met een barcode scanner/reader kunt inlezen. Of het nu 1 cijfer is, of een string van 25 tekens?

In de titel heb je het over barcode, maar in je vraag weer niet?
De 13 cijfers van een EAN-13 zijn al niet makkelijk over te typen (weet ik uit ervaring: ik maak er zelf wel eens fouten in). Voor een eenvoudigere barcode zou ik de kortere EAN-8 gebruiken: die bestaat uit 2 x 4 cijfers en heeft een checksum, zodat je invoerfouten kunt signaleren.

vaak zit er een systeem in de codes: Bijvoorbeeld op producten in de supermarkt.

De eerste 2 cijfers zeggen iets over het land. Nederland is bijvoorbeeld 87.

Dan volgt nog een opbouw waarbij een reeks is toegekend aan een bedrijf, die dat vervolgens weer kan opdelen naar productgroepen of afdelingen.

Laten we zeggen het NL bedrijf PHPhulp heeft de reeks 87.1234.*
forum = afdeling 1 en beginners is 3
de toptics hebben dan een barcode in de serie: 87.1234.13.*

Dat scheelt al een heel stuk aan de te onhouden reeks.
Net als dat de telefoonummers in A'dam met 020 beginnen. Die hoef je er dan dus niet bij te onthouden.

Ik weet niet waar het precies om gaat.
Als het opdrachtnummers zijn dan hoeft zo iets niet te lang te zijn.

Maar verlies niet uit het oog dat uniek iets anders is dan random, een verwarring die vaak gemaakt lijkt te worden.

Hoe groot je reeks ook is, bijvoorbeeld met de bovenstaande 8 cijfers van Ward (of 7 + checksum), de kans op dubbelen blijft altijd aanwezig als je gaat voor random.
Het gaat inderdaad om barcodes. Deze zitten op artikelen (bulk en serienummer). Ook op projecten en transporten moeten barcodes komen.

Graag willen wij ook onderscheid maken, dus:
B12385 = Bulk
S12385 = Serienummer
P12385 = Project
etc.

Ik heb nu barcodes zoals: B53889de7ca5aa
en waarom wil je de barcodes over laten typen? Voor een paar tientjes heb je hand barcodescanners (ok, niet super robuust) die zich als een toetsenbord laten gebruiken aan een pc.
Klopt, we hebben Symbol scanners, en zelfs de monteur hebben scanners die ze kunnen koppelen via bluetooth aan hun telefoon.
Toch hebben we af en toe dat zo'n code overgetypt moet worden.

Maar na overleg gaan we toch gebruik maken van de lange barcodes met uniqid().

Want uniqid() is toch elke miliseconde uniek? of kan er toch ooit een dubbele zijn?
Elke microseconde zelfs, maar dat garandeert helaas niet dat barcodes uniek zijn. Als iemand bijvoorbeeld in één klik twee items toevoegt, kan dat toevallig in dezelfde microseconde vallen.

Heb je meerdere servers, dan moeten hun klokken bovendien perfect synchroon lopen.

Volgens mij ben je dan beter af met een AUTO_INCREMENT en anders op zijn minst een extra controle die dubbelingen voorkomt, bijvoorbeeld met een unieke index c.q. primaire sleutel.
Alternatief is om uuid's te gebruiken, maar volgens mij heeft PHP daar geen standaard functies voor, dus dat zul je dan zelf moeten bouwen.

Overigens kan ik me voorstellen dat het handmatig invoeren van een uuid niet met gejuich zal worden ontvangen. Misschien toch maar die autoincrement dan. ;-)

Reageren