[PHP] Creare numero ticket casuale

AngelaM85

Nuovo Utente
6 Set 2016
9
0
1
34
Buongiorno,

Devo creare un sistema di assegnazione numero ticket. Il mio dubbio è su come procedere per l'assegnazione del numero evitando di creare doppioni. Pensavo di generare un alfanumerico, composto da TK_num, in cui num non sia troppo lungo, l'ideale sarebbe creare il num progressivo, ma va bene anche un numero casuale.

Spero di essere stata chiara ;-)
Si accettano consigli su come procedere.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, immagino che memorizzerai i ticket sul database. Puoi semplicemente utilizzare un campo increment per assegnare il numero.
PHP:
$lastID = 10;
$ticket = "TK_" . str_pad($lastID, 6, 0, STR_PAD_LEFT);
echo $ticket;
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.038
146
63
PR
www.borgo-italia.it
ciao
potresti fare così
PHP:
<?php
$t=time();//leggi il timestamp al momento che inserisci il tiket
$c=rand(10,99);//per sicurezza generi un numero casuale di due o più cifre
$nome_tiket="".$t.$c;//per sicurezza lo forzo a stringa
//o semplicemente: $nome_tiket="".$t=time().rand(10,99)
?>
tra l'altro, potrebbe essere comodo perche dal nome puoi ricavare anche il momento in cui l'hai inserito

ops non avevo letto criric, che se usi un db va meglio, io pensavo che tu volessi dare un nome ad un file
 

lorenzo84

Utente Attivo
22 Lug 2012
236
0
16
Ciao,
Partendo dal presupposto che uso il db per memorizzare i ticket, ho usato il campo id magari associando altri caratteri o numeri esempio: XY12017 / XY22017 .
Oppure generando un codice casuale utilizzando un ciclo do while per verificare se quel codice non esiste già.
 

marino51

Utente Attivo
28 Feb 2013
2.678
135
63
Lombardia
ci sono già diversi suggerimenti,
tutto sta a capire se ti serve,
una sola sequenza o più sequenze,
un numero limitato o senza limiti di cifre

giusto per contribuire, puoi usare la funzione microtime, che puoi trovare nel manuale php con esempi
http://php.net/manual/en/function.microtime.php

altrimenti per più sequenze meglio avere dei record, uno per sequenza, in una tabella del db, che incrementi al bisogno, la chiave di identificazione può essere il codice alfa(numerico) che identifica la sequenza
questa sarebbe la soluzione che permette evoluzioni future senza cambiare nulla nel criterio di assegnazione dei "numeri", basta aggiungere nella tabella i nuovi record con il valore di partenza assegnato
potrebbe avere anche la possibilità di inizializzazione giornaliera (vedi ticket dei "cup")

considera che numeri random, con un numero limitato di cifre, su lunghe sequenze, potrebbero ripetersi,
usavo numeri random per ottenere distribuzioni di probabilità, numeri che,
all'interno di un range limitato si ripetevano
per esempio usa un dado per ottenere un numero casuale da 1 a 6,
quante volte si ripete ciascuna faccia se lanci il dado + volte ?
 
Ultima modifica:

AngelaM85

Nuovo Utente
6 Set 2016
9
0
1
34
Ciao, grazie a tutti delle risposte e dei suggerimenti. Penso che farò delle prove per vedere quale metodo è più adatto alle mie esigenze ;-)