IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Générer un nombre aléatoire et unique possible ? [Fait]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 30
    Par défaut [Tableaux] Générer un nombre aléatoire et unique possible ?
    Après plusieurs lecture, je n'ai trouvé aucune solution vraiment idéale.Existe t-elle ?
    Je m'explique :
    je souhaite avoir un numéro de client dans ma base mais qui soit généré de manière aléatoire. Je n'utiliserai donc pas l'id client qui est en auto-increment dans ma table mais bien un numéro de client.

    Une idée sur l'algo ou un bout de script ?

    Merci

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Il existe des bdd qui permettent de le faire de manière aléatoire...

    Mais sinon tu peux faire une boucle for avec un rand.
    Dans ta boucle tu détermine le nombre de chiffres que tu veux tu concatènes le tout

    ou carrément un rand(1, valmax)

    Mais si tu veux un id unique, il faudra tester avant d'insérer dans la bdd

  3. #3
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Y'a une fonction comme ça qui se base sur la date (donc unique)... euh dommage j'ai plus son nom

  4. #4
    Membre émérite Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Par défaut
    et pourquoi pas une solution hybride de ces deux propositions ?
    tu concatene un pseudo-aléatoire généré par rand() avec un timestamp ... non ?

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 30
    Par défaut
    J'avais pensé à concaténer un timestamp et un chiffre via la fonction rand.

    Ce id unique et aléatoire est crée via un formulaire, ça n'est pas possible que dans le même millième de seconde, un id soit crée ?
    Si 2 personnes valident le formulaire exactement en même temps ?

    Ex d'algo mais qui ne marcherait pas à priori :
    1. création du chiffre aléatoire
    2. Test de l'existence de ce chiffre par rapport à la base de données
    3. Dans ma boucle, si ce nombre aléatoire existe déjà, je crée un nouveau chiffre.

    Le problème c'est que la création du chiffre est faite de nouveau de manière aléatoire et que je ne peux pas le retester.(il faudrait que je relance la boucle)

    Des idées ?

  6. #6
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    Salut,

    Ce id unique et aléatoire est crée via un formulaire, ça n'est pas possible que dans le même millième de seconde, un id soit crée ?
    On ne sait jamais !

    Ex d'algo mais qui ne marcherait pas à priori :
    1. création du chiffre aléatoire
    2. Test de l'existence de ce chiffre par rapport à la base de données
    3. Dans ma boucle, si ce nombre aléatoire existe déjà, je crée un nouveau chiffre.

    Le problème c'est que la création du chiffre est faite de nouveau de manière aléatoire et que je ne peux pas le retester.(il faudrait que je relance la boucle)

    Des idées ?

    Pourquoi cela ne fonctionnerait pas ?

    vite fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     
    function CreeId(){} // renvoie un id *peut etre* unique
     
    function VerifieUnicite($IdUnique){} // Interroge la bdd pour savoir si cet id est unique
     
    function CreeIdUnique()
    {
        $IdUnique = "";
     
        do
        {
            $IdUnique = CreeId();
        }
        while(VerifieUnicite($IdUnique) == false);
     
        return $IdUnique;
    }
    Le mieux étant une concaténation de l'id auto increment unique avec un nombre au pif, ou même pourquoi pas une partie de la session.
    Avec une telle méthode tu n'as même pas besoin de tester si le code client existe déja, car la bdd s'en occupe pour toi !

    bbye

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Algo pour générer des nombres aléatoires
    Par Admin dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 12/06/2006, 09h06
  2. Réponses: 2
    Dernier message: 16/05/2006, 17h02
  3. Réponses: 16
    Dernier message: 08/03/2006, 11h18
  4. générer un nombre aléatoire gaussien
    Par kayari dans le forum Probabilités
    Réponses: 9
    Dernier message: 24/05/2005, 23h57
  5. Générer un nombre aléatoire entre 0 et 1 (INCLUS !!!)
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 22/08/2002, 16h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo