Creare un codice univoco con metodo random

di il
18 risposte

Creare un codice univoco con metodo random

Salve, volevo chiedervi un consiglio. Ho creato un e-commerce dove ogni ordine viene memorizzato in ciascun record, per tre articoli ordinati, ad esempio , avrò tre record. Allora ho pensato prima di riempire i campi del database di generare un numero univoco (che sarà un campo del database) con il metodo rand che funga da identificatore per tutti i record del suddetto ordine, in modo tale che quando vorrò richiamarlo potrò usare quel numero univoco. Prima che il campo venga riempito da questa variabile generata , faccio un ciclo while per verificare che questo numero non abbia dei precedenti doppioni nella tabella, se l'esito è negativo faccio inserire i record nel database.

Secondo voi è un metodo valido?

18 Risposte

  • Re: Creare un codice univoco con metodo random

    Io nei tracciati record ho sempre usato il progressivo (ascendente o discendente dipende dall'utilizzo), analogamente a quello che in mysql è definito come AUTO_INCREMENT (+/-).
  • Re: Creare un codice univoco con metodo random

    Ad essere sincero non ho capito tanto cosa vuoi dire. Parli di interrogare il database con il metodo ASC o DESC? Se è quello non mi serve. Io ho necessità di avere un campo univoco che mi permetta di richiamare un ordine avente più di un record e se uso l'auto increment non ottengo quello che voglio.

    Oggi pensavo, e se mettessi come codice univoco per ogni ordine il numero dei record totali ogni volta? Ogni ordine così anche se fosse compreso di più di un record avrebbe un solo numero che per ogni nuovo ordine verrebbe incrementato di uno, ovvero del numero del record attuale che sarà sempre diverso. Certo dovrei prima di inserire l'ordine creare una select per scoprire quanti record ci sono attualmente.
  • Re: Creare un codice univoco con metodo random

    Ad essere sincero non ho capito tanto cosa vuoi dire. Parli di interrogare il database con il metodo ASC o DESC?
    No, no... non mi riferisco al database, ma al tracciato record. Ecco un esempio di header
    
    +------+--------------------+---------+--------===
    |  Tr  |    Num.Progress.   |   sub   |
    +------+--------------------+---------+----===
    
    Oggi pensavo, e se mettessi come codice univoco per ogni ordine il numero dei record totali ogni volta?
    In questi casi il progressivo viene prelevato da un'altra tabella di parametri generale.
  • Re: Creare un codice univoco con metodo random

    Ma come si crea questa tabella di parametri generale? Come funziona il prelievo del campo che poi dovrò usare per riempirlo nella tabella ordini? Sono un pò confuso..
  • Re: Creare un codice univoco con metodo random

    Non so dimmi se ho capito:

    1)Creo due tabelle, una ordini e l'altra parametri generali
    2)Riempio i campi della tabella parametri generali anche solo due campi (id e data ad esempio)
    3)Riempio i campi della tabella ordini e prelevo il progressivo dalla tabella parametri generali, ovvero l'auto increment dell' ultimo record attuale

    E' così?
  • Re: Creare un codice univoco con metodo random

    Solitamente esiste una tabella che deve contenere queste informazioni.
    Si inizializza a e poi ogni volta che che necessiti del progressivo leggi lockando il record incrementi di uno scrivi il campo e rilasci il lock.
    Il progressivo che hai recuperato è univoco. Se hai + record o altro da collegare al progressivo lo puoi fare con un sub. Esempio:
    
    Tr   Progress.  Sub
     0  + 0000001  + 000001
     0  + 0000001  + 000002
     0  + 0000001  + 000003
    ...
    
    Che naturalmente userai come chiave.
    Nell'esempio viene usato un Tr (Tipo Rekord) che potrebbe identificare Bozza/Ordine/Vendita...
    Se non ti serve puoi farne a meno
  • Re: Creare un codice univoco con metodo random

    2)Riempio i campi della tabella parametri generali anche solo due campi (id e data ad esempio)
    3)Riempio i campi della tabella ordini e prelevo il progressivo dalla tabella parametri generali, ovvero l'auto increment dell' ultimo record attuale
    
    Tabella Generale Rekord Unico 0 (zero)
    +----------+----------+----------+--------===
    |  INFO 1  |  INFO 2  | N ProgrA |
    +----------+----------+----------+--===
    
  • Re: Creare un codice univoco con metodo random

    Comunque questa è una domanda che non centra un tubo con PHP...
    Questa è analisi!
  • Re: Creare un codice univoco con metodo random

    E quale sarebbe la sezione per parlare di queste cose? MYSQL?
  • Re: Creare un codice univoco con metodo random

    Comunque questa è una domanda che non centra un tubo con PHP...
    Questa è analisi!
    E quale sarebbe la sezione per parlare di queste cose? MYSQL?
    Io non sono un moderatore,
    forse è un argomento da "Teoria delle Sviluppo Software".... visto che non stiamo parlando né di PHP né di mysql...
  • Re: Creare un codice univoco con metodo random

    Bè non saprei, comunque io non conosco quest lock di cui mi parli, non l'ho mai usato e quindi non ho capito niente.

    Quando creo la tabella perchè dovrei inizializzarla?

    Cioè, se io devo riempire la tabella secondaria, devo incrementare il numero , devo poi prendere questo valore ed inserirlo nella tabella ordini la vedo davvero articolata come cosa
  • Re: Creare un codice univoco con metodo random

    Bè non saprei, comunque io non conosco quest lock di cui mi parli, non l'ho mai usato e quindi non ho capito niente
    Il lock è usato per impedire l'eventuale accesso al record nello stesso tempo da + utenze
    x mysql leggi:http://dev.mysql.com/doc/refman/5.0/en/innodb-lock-modes.html

    Quando creo la tabella perchè dovrei inizializzarla?
    Di solito queste info vengono messe nelle tabelle di parametri generali. Devi inizializzarla come qualsiasi altro campo che utilizzi
    Cioè, se io devo riempire la tabella secondaria, devo incrementare il numero , devo poi prendere questo valore ed inserirlo nella tabella ordini la vedo davvero articolata come cosa
    Non devi riempire la tabella secondaria, devi solo utilizzare il numero che hai appena estratto dalla prima tabella ed usarlo come numero univoco.
  • Re: Creare un codice univoco con metodo random

    Se usi una tabella a record singolo puoi anche fare cosi:
    
    lock tables db.parametri write;
    select progressivo from db.parametri;
    update db.parametri set progressivo=<valore_letto_precedentemente_+_1>;
    unlock tables;
    
    FINE
  • Re: Creare un codice univoco con metodo random

    Forse ora sto capendo, vediamo se è vero:

    1)Creo due tabelle, ad esempio tbordini e tbparametri quest' ultimo con un campo id e l' altro chiamato progressivo dove avrò il numero da prelevare e da aggionare ogni volta. Poi scrivo il seguente codice:

    lock tables tbparametri write;
    $sql1 = "select progressivo from tbparametri'";
    $query1 = mysql_query($sql1) or die("no");
    $row=mysql_fetch_row($query1);
    $progressivo = $row[1]; // NEL $row[1] c'è il numero progressivo

    update tbparametri set progressivo=$progressivo+1;
    unlock tables;

    $sql2 = "Insert into tbordini(esempio,esempio,esempio, progressivo)values('$esempio,'$esempi','$esempio,'$progressivo')";
    ..........................................

    Giusto?
Devi accedere o registrarti per scrivere nel forum
18 risposte