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

PHP & Base de données Discussion :

Générer une chaine alphanumérique aléatoire sans doublon


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 57
    Par défaut Générer une chaine alphanumérique aléatoire sans doublon
    Bonsoir à tous,

    Je cherche à générer une chaine aléatoire de 2 caractères qui n'existe pas dans la base de données :

    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
    function getRandomStr($n)
    {
    $str = '123abc';
    $n = 2;
    $randomStr = '';
    for ($i = 0; $i < $n; $i++) {$index = rand(0, strlen($str)-1); $randomStr .=$str[$index];}
    return $randomStr;
    }
    $valeur = getRandomStr($n);
    $sql = $mysqli->query("SELECT COUNT(*) AS exist FROM table WHERE id LIKE '$valeur'");
    $doublon = $sql->fetch_array(MYSQLI_NUM);
    if ($doublon['exist'] != 0 || strtolower($valeur) == 'abc')
    {getRandomStr($n);}
    else {$valeur = getRandomStr($n);}
    }
    Merci pour votre aide

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 329
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 329
    Billets dans le blog
    17
    Par défaut
    Quel est le problème ?

    PS : indenter ton script ne serait pas un luxe pour la lecture

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 57
    Par défaut
    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
    19
    20
    21
    22
    23
    24
    25
    function getRandomStr($n)
    {
    	$str = '123abc';
    	$n = 2;
    	$randomStr = '';
    	for ($i = 0; 	$i < $n; 	$i++)
    	{
    		$index = rand(0, strlen($str)-1);
    		$randomStr .=$str[$index];
    	}
    	return $randomStr;
    }
     
    $valeur = getRandomStr($n);
     
    $sql = $mysqli->query("SELECT COUNT(*) AS exist FROM table WHERE id LIKE '$valeur'");
    $doublon = $sql->fetch_array(MYSQLI_NUM);
     
    if ($doublon['exist'] != 0 || strtolower($valeur) == 'abc')
    {getRandomStr($n); }
     
    else {
    $valeur = getRandomStr($n);
    echo $valeur;
    }
    La valeur aléatoire est bien générée : $valeur.
    La detection de doublon dans la bdd fonctionne : $doublon['exist'].
    Le problème c'est le If : si il y a un doublon, ça ne retourne pas à la fonction getRandomStr pour générer une nouvelle valeur aléatoire (ligne 20).

  4. #4
    Membre chevronné Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 341
    Par défaut
    Je crois qu'il manque un petit détail à la ligne 20 : un code est généré, mais tu ne le connais pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $valeur=getRandomStr($n);
    Je ne vois pas trop à quoi cela sert

Discussions similaires

  1. Générer une suite de string aléatoire sans doublon
    Par Invité dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 25/05/2021, 18h08
  2. Générer une chaine aléatoire
    Par java_fun dans le forum Général Java
    Réponses: 24
    Dernier message: 07/11/2018, 23h03
  3. Générer une chaine aléatoire
    Par Thomus38 dans le forum C++
    Réponses: 5
    Dernier message: 21/07/2008, 22h45
  4. Réponses: 2
    Dernier message: 27/05/2007, 22h23
  5. Besoin de générer une chaine aléatoire
    Par warsky dans le forum Langage
    Réponses: 7
    Dernier message: 01/12/2005, 19h34

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