Besoin d'aide pour une boucle For
Résolu
AjaxMan
Messages postés
34
Date d'inscription
Statut
Membre
Dernière intervention
-
AjaxMan Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
AjaxMan Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'aimerai faire un petit script qui génère 5 lettres & chiffres aléatoirement, j'ai déjà fait ce système mais j'aimerai faire en sorte que si ce que je vais générer existe déjà dans ma base de donnée, alors je re-génère une "clé", je suppose que ça se fait avec une boucle for mais je vois pas comment.
Merci
J'aimerai faire un petit script qui génère 5 lettres & chiffres aléatoirement, j'ai déjà fait ce système mais j'aimerai faire en sorte que si ce que je vais générer existe déjà dans ma base de donnée, alors je re-génère une "clé", je suppose que ça se fait avec une boucle for mais je vois pas comment.
Merci
A voir également:
- Besoin d'aide pour une boucle For
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Idm for mac - Télécharger - Téléchargement & Transfert
- Copytrans heic for windows - Télécharger - Visionnage & Diaporama
- Instagram for pc - Télécharger - Divers Communication
- Microsoft store download for pc - Guide
2 réponses
Bonjour,
Ta question est trop vague... (tu ne nous dis pas sur quoi tu bloques exactement.. ni ce que tu as déjà commencé à coder....)
Mais je peux te donner le principe :
Pour commencer... tu dois te connecter à ta BDD
Si tu ne sais pas faire... regardes ici comment utiliser faire
https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli
(perso.. je préfère la PDO)
Ensuite, tu fais une boucle .... (par exemple WHILE)
https://www.php.net/manual/fr/control-structures.while.php
Dans cette boucle, tu génères un numéro aléatoirement
Puis tu fais une requête (de type SELECT ) pour voir si le numéro existe déjà dans ta BDD ou non.
Si il existe déjà... tu recommences.... sinon.. tu sors de ta boucle.
Mais bon.. si ton but est de générer un "id" unique (et peu importe si il fait 13 caractères au lieu de 5...) dans ce cas tu peux utiliser : Uniqd
https://www.php.net/manual/fr/function.uniqid.php
Ta question est trop vague... (tu ne nous dis pas sur quoi tu bloques exactement.. ni ce que tu as déjà commencé à coder....)
Mais je peux te donner le principe :
Pour commencer... tu dois te connecter à ta BDD
Si tu ne sais pas faire... regardes ici comment utiliser faire
https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli
(perso.. je préfère la PDO)
Ensuite, tu fais une boucle .... (par exemple WHILE)
https://www.php.net/manual/fr/control-structures.while.php
Dans cette boucle, tu génères un numéro aléatoirement
Puis tu fais une requête (de type SELECT ) pour voir si le numéro existe déjà dans ta BDD ou non.
Si il existe déjà... tu recommences.... sinon.. tu sors de ta boucle.
Mais bon.. si ton but est de générer un "id" unique (et peu importe si il fait 13 caractères au lieu de 5...) dans ce cas tu peux utiliser : Uniqd
https://www.php.net/manual/fr/function.uniqid.php
.... mouais....
Bon.. déjà... ton script... ne génère pas 5 caractères... mais 7
Ensuite... si ton but est de générer un code aléatoire et unique.. pourquoi ne pas utiliser la fonction UNIQID comme je te l'ai déjà indiqué ?
Pour finir..
voila à quoi pourrait ressembler ton code :
Cordialement,
Jordane
Bon.. déjà... ton script... ne génère pas 5 caractères... mais 7
Ensuite... si ton but est de générer un code aléatoire et unique.. pourquoi ne pas utiliser la fonction UNIQID comme je te l'ai déjà indiqué ?
Pour finir..
voila à quoi pourrait ressembler ton code :
<?php //Affichage des erreurs PHP error_reporting(E_ALL); //fichier de connexion à la BDD require_once "cnxBdd.php"; function checkIfCodeExist($strCode){ global $db; $sql = "SELECT * FROM tatable where code = :strCode "; $datas = array(":strCode"=>$strCode); try{ $prep = $db->prepare($sql); $prep->execute($datas); $res = $prep->fetchAll(); }catch (Exception $e){ echo "Erreur ! ".$e->getMessage(); } return !empty($res) ? true : false ; } // début du code ... $hash = substr(sha1(md5(rand())), 5, 13); echo "<br> code avant la boucle : ".$hash; while(checkIfCodeExist($hash)){ echo "<br> code dans la boucle : ".$hash; $hash = substr(sha1(md5(rand())), 5, 13); } echo "<br> code final (après la boucle) la boucle : ".$hash; ?>
Cordialement,
Jordane
Merci de ta réponse, je vais être plus clair.
J'ai déjà fait mon système pour générer une chaîne, je me suis déjà connecté, et je vois pas comment faire pour faire le while :hum: Comment en sortir si c'est bon ? Comment faire re-générer une chaîne si ça existe déjà ?
A partir de là on pourra te proposer des solutions.
NB : penses à utiliser les balises de code : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
.