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 :

Requete en boucle si variable déjà présente dans BDD


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
    Juillet 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 45
    Par défaut Requete en boucle si variable déjà présente dans BDD
    Bonsoir a tous,

    Je cale sur un morceau de code pourtant simple.
    Voila ce que je cherche a faire:

    1- je génère un code aléatoire de 2 lettres et 3 chiffres (ex:ER457)
    2- je vérifie dans la base si celui ci existe
    3- si ce code existe je repasse à l'étape 1
    4- si ce code n'est pas dans la base ==> je fais mon insert !

    Voici un bout de mon code pour mieux comprendre:

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    /// on genere un code d'adherent aleatoire de 2 lettres
    		$chaine = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    		//nombre de caractères dans le mot de passe
    		$nb_caract = 2;
     
    		$gen = "";
    		//on fait une boucle
    		for($u = 1; $u <= $nb_caract; $u++) {
    		//on compte le nombre de caractères présents dans notre chaine
    			$nb = strlen($chaine);
    		// on choisie un nombre au hasard entre 0 et le nombre de caractères de la chaine
    			$nb = mt_rand(0,($nb-1));
    		// on ajoute la lettre a la valeur de $pass
    			$gen.=$chaine[$nb];
    		}
     
     
    		$chaine2 = "0123456789";
    		//nombre de caractères dans le mot de passe
    		$nb_caract2 = 3;
    		// on fait une variable contenant le futur pass
    		$gen2 = "";
    		//on fait une boucle
    		for($u2 = 1; $u2 <= $nb_caract2; $u2++) {
    		//on compte le nombre de caractères présents dans notre chaine
    			$nb2 = strlen($chaine2);
    		// on choisie un nombre au hasard entre 0 et le nombre de caractères de la chaine
    			$nb2 = mt_rand(0,($nb2-1));
    		// on ajoute la lettre a la valeur de $pass
    			$gen2.=$chaine2[$nb2];
    		}
     
     
    		do{
     
    		$num_adherent = $gen.$gen2;
     
     
    // on verifie si le code generé est existe deja dans la base
    $verif="SELECT num_adherent FROM adherents WHERE num_adherent = '".$num_adherent."'";
    		$res = mysql_query($verif);
     
    		$verif_num = mysql_num_rows($res);
     
     
    		} while($verif_num != 0);
     
     
    		// si le code n'est pasdans la bdd, on insert
    		$sql = "INSERT INTO adherent (num_adherent, civilite, nom, prenom, sexe, date_naissance, profession, csp, competences, adresse,...............)";
            mysql_query($sql);
    Merci.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faut que ta génération de code soit dans le do{} sinon tu testes le meme en boucle.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 45
    Par défaut
    J'ai essayé mais ca tourne en boucle du coup !

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Montre nous le code.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 45
    Par défaut
    Voila mon code

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
     
    do{
     
    /// on génère un code d'adherent aleatoire de 2 lettres
    		$chaine = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    		//nombre de caractères dans le mot de passe
    		$nb_caract = 2;
     
    		$gen = "";
    		//on fait une boucle
    		for($u = 1; $u <= $nb_caract; $u++) {
    		//on compte le nombre de caractères présents dans notre chaine
    			$nb = strlen($chaine);
    		// on choisie un nombre au hasard entre 0 et le nombre de caractères de la chaine
    			$nb = mt_rand(0,($nb-1));
    		// on ajoute la lettre a la valeur de $pass
    			$gen.=$chaine[$nb];
    		}
     
     
    		$chaine2 = "0123456789";
    		//nombre de caractères dans le mot de passe
    		$nb_caract2 = 3;
    		// on fait une variable contenant le futur pass
    		$gen2 = "";
    		//on fait une boucle
    		for($u2 = 1; $u2 <= $nb_caract2; $u2++) {
    		//on compte le nombre de caractères présents dans notre chaine
    			$nb2 = strlen($chaine2);
    		// on choisie un nombre au hasard entre 0 et le nombre de caractères de la chaine
    			$nb2 = mt_rand(0,($nb2-1));
    		// on ajoute la lettre a la valeur de $pass
    			$gen2.=$chaine2[$nb2];
    		}
     
     
    /// 2 Lettres + 3 chiffres		
    $num_adherent = $gen.$gen2;
     
     
    // on verifie si le code generé existe deja dans la base
    $verif="SELECT num_adherent FROM adherents WHERE num_adherent = '".$num_adherent."'";
    		$res = mysql_query($verif);
     
    		$verif_num = mysql_num_rows($res);
     
     
    		} while($verif_num != 0);
     
     
    		// si le code n'est pas dans la bdd, on insert, sinon on regenere un nouveau code
    		$sql = "INSERT INTO adherent (num_adherent, civilite, nom, prenom, sexe, date_naissance, profession, csp, competences, adresse,...............)";
            mysql_query($sql);

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Fait du debug :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $verif_num = mysql_num_rows($res);
    echo mysql_error();
    die("verif_num : " . $verif_num);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Valeurs présentes dans BDD dans champs input
    Par fromage2chevre dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 28/04/2015, 13h37
  2. Comparaison d'un variable avec valeur dans BDD
    Par voyageurdumonde dans le forum Langage
    Réponses: 9
    Dernier message: 15/09/2010, 17h51
  3. Réponses: 11
    Dernier message: 19/07/2006, 18h28
  4. [PHP-JS] Passer une variable PHP->JS dans une boucle
    Par PedroBD dans le forum Langage
    Réponses: 2
    Dernier message: 12/05/2006, 11h43
  5. Réponses: 5
    Dernier message: 04/05/2006, 21h02

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