Visualizzazione dei risultati da 1 a 5 su 5

Discussione: nome univoco

  1. #1
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128

    nome univoco

    partiamo con un esempio:

    devo salvare un dato nel database ceh deve avere nome univoco, per questo utilizzo una funzione che genera un codice alfanumerico random di n caratteri.

    Codice PHP:
    function codiceRandom($nCaratteri) {
    // bla bla bla
    }

    $nome codiceRandom(10);

    if (
    $nome == 0) {

    // salvo

    } else {

    //rigenero il nome


    Questo codice però concettualmente è sbagliato perchè, assegno un nome a caso e controllo se esiste. Se non esiste lo salvo, se esiste invece rigenero un nuovo nome.
    Ma se succedesse che quando rigenero il nome per la seconda volta di nuovo esistesse un record con lo stesso nome? Sbagliato!!!

    Io voglio che venga generato un nome univoco.

    Come posso fare?

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Codice PHP:
    function codiceRandom($nCaratteri) { 
    // bla bla bla 

    $cont true;
    while (
    $cont) {
      
    $nome codiceRandom(10); 

      if (
    $nome == 0) { 

        
    // salvo 
        
    $cont false;
       }

    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    292
    potresti usare la ricorsione,
    ma se non hai vincoli sul nome univoco io farei semplicemente in modo che la probabilità di trovare due nomi uguali per due volte consecutive sia prossima allo zero.

    Se non hai vincoli di lunghezza del nome:
    $nome = date("YmdHis").md5(uniqid(rand(), true));

  4. #4
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    in ritardo ma ci sono

    grazie mille delle risposte!

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2005
    Messaggi
    231
    la funzione time() ?

    oppure non potrebbe andare bene un campo auto_increment così sei sicuro che è univoco e gli aggiungi degli zero e in un'altra colonna gli metti la stringa completa del tipo:

    campo_ai codice
    1 0000000001
    2 0000000002
    3 0000000003
    4 0000000004
    5 0000000005
    ...
    1234 0000001234
    Se la risposta ti è stata in qualche modo di aiuto o ti va di supportarmi metti "mi piace" alla pagina a questo link

    https://www.facebook.com/blogprogrammatori

    Non ti costa nulla!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.