[PHP&SQL] Générer ID différent des précédents
Fermé
gugusco
-
1 nov. 2011 à 23:12
jojo673 Messages postés 210 Date d'inscription lundi 19 septembre 2011 Statut Membre Dernière intervention 9 avril 2014 - 2 nov. 2011 à 11:22
jojo673 Messages postés 210 Date d'inscription lundi 19 septembre 2011 Statut Membre Dernière intervention 9 avril 2014 - 2 nov. 2011 à 11:22
A voir également:
- [PHP&SQL] Générer ID différent des précédents
- Generer mot de passe - Télécharger - Sécurité
- Easy php - Télécharger - Divers Web & Internet
- Nb.si.ens différent de ✓ - Forum Excel
- Comment générer un qr code - Guide
- Nb.si.ens différent de vide ✓ - Forum Excel
2 réponses
jojo673
Messages postés
210
Date d'inscription
lundi 19 septembre 2011
Statut
Membre
Dernière intervention
9 avril 2014
44
1 nov. 2011 à 23:52
1 nov. 2011 à 23:52
Bonjour,
Oui il est possible que ce nombre aléatoire soit déjà présent dans la base de données !
Pour éviter ça, une méthode pas très compliqué est de générer un nombre aléatoire en php, exécuter une requête SELECT sur la base de données en sélectionnant les lignes qui ont cette ID (si il y en a) avec la condition WHERE. Si une ligne est retourné, l'ID existe déjà (on génère alors un autre nombre aléatoire et on recommence), sinon si aucunes lignes n'est retourné, en peut enregistrer !
Oui il est possible que ce nombre aléatoire soit déjà présent dans la base de données !
Pour éviter ça, une méthode pas très compliqué est de générer un nombre aléatoire en php, exécuter une requête SELECT sur la base de données en sélectionnant les lignes qui ont cette ID (si il y en a) avec la condition WHERE. Si une ligne est retourné, l'ID existe déjà (on génère alors un autre nombre aléatoire et on recommence), sinon si aucunes lignes n'est retourné, en peut enregistrer !
Ah évidemment je n'y avais pas pensé, merci. c'est plus long que ce que je ne pensais mais ce n'est effectivement pas compliqué.
Je vous mets le code que j'ai trouvé si ca peut en aider d'autres
(J'ai fait une boucle afin que tant qu'il n'y ait pas de nombre unique, il continue d'en chercher un (= tant que $ID_unique =false)
Je vous mets le code que j'ai trouvé si ca peut en aider d'autres
(J'ai fait une boucle afin que tant qu'il n'y ait pas de nombre unique, il continue d'en chercher un (= tant que $ID_unique =false)
//par défaut on n'a pas encore de ID unique crée $ID_unique = false; while($ID_unique == true) { // on génère un nombre à huits chiffres au hasard via php $nbre = rand(8); //on regarde si il existe via une requete $req0 = $bdd->prepare('SELECT ad_ID FROM adsmain WHERE ad_ID = :ad_ID'); $req0->execute(array('ad_ID'=> $nbre)); $ID = $req0->fetch(); $ID = $ID['ad_ID']; //si oui on arrete la boucle en mettant TRUE if(isset($ID)) // la requete nous dit qu'une ID identique existe déjà { $ID_unique = false; } else // sinon on peut arrêter la boucle en satisfaisant la condition en mettant TRUE { $ID_unique = true; } } // quand la boucle se sera arreté on aura trouver un nbre unique, on l'inscrit dans la variable. $ad_ID = $nbre;
jojo673
Messages postés
210
Date d'inscription
lundi 19 septembre 2011
Statut
Membre
Dernière intervention
9 avril 2014
44
2 nov. 2011 à 11:22
2 nov. 2011 à 11:22
Parfait :)