Variable indéfini alors qu'elle est.
Résolu
Lucryio
Messages postés
206
Date d'inscription
Statut
Membre
Dernière intervention
-
Lucryio Messages postés 206 Date d'inscription Statut Membre Dernière intervention -
Lucryio Messages postés 206 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je fais appel à nouveau à vous car, j'ai un souci avec ce code :
Il me dis que la variable "$mot_de_passe" n'est pas définie alors qu'elle est.
Je veux que dans l'echo, il me donne la chaîne de caractère généré aléatoirement.
Vous pouvez m'aider s'ils vous plait ?
Merci par avance.
je fais appel à nouveau à vous car, j'ai un souci avec ce code :
function generer_mot_de_passe($nb_caractere = 12) { $mot_de_passe = ""; $chaine = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $longeur_chaine = strlen($chaine); for($i = 1; $i <= $nb_caractere; $i++) { $place_aleatoire = mt_rand(0,($longeur_chaine-1)); $mot_de_passe .= $chaine[$place_aleatoire]; } return $mot_de_passe; } echo "Bravo, vous pouvez passer à l'étape suivante en donnant ce code <mark>$mot_de_passe</mark> à Messi44 par MP sur SDF."; } else { echo "Vous n'avez pas encore atteint la note minimum de 18/20."; } ?>
Il me dis que la variable "$mot_de_passe" n'est pas définie alors qu'elle est.
Je veux que dans l'echo, il me donne la chaîne de caractère généré aléatoirement.
Vous pouvez m'aider s'ils vous plait ?
Merci par avance.
A voir également:
- Variable indéfini alors qu'elle est.
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ✓ - Forum Python
- Le fichier contient un programme écrit en python. le programme construit un mot secret mais il ne l'affiche pas. modifiez ce programme afin que à chaque itération de la boucle : la variable a augmente de 2 la variable b diminue de 1 ajoutez une instruction pour faire afficher le mot secret construit. quel est ce mot secret ? ✓ - Forum Python
- Vba range avec variable ✓ - Forum VB / VBA
- Variable d'environnement temp ✓ - Forum Microsoft Office
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
10 réponses
Bonjour
En effet, $mot_de_passe est bien défini à l'intérieur de ta fonction, mais pas à l'extérieur.
Donc dans
Ça devrait mieux marcher :
En effet, $mot_de_passe est bien défini à l'intérieur de ta fonction, mais pas à l'extérieur.
Donc dans
echo "Bravo, vous pouvez passer à l'étape suivante en donnant ce code <mark>$mot_de_passe</mark> à Messi44 par MP sur SDF.";
il n'est pas défini
Ça devrait mieux marcher :
echo "Bravo, vous pouvez passer à l'étape suivante en donnant ce code <mark>",generer_mot_de_passe(),"</mark> à Messi44 par MP sur SDF.";
Ton soucis vient du fait que dans la ligne pour afficher le résultat de la fonction (
Tu utilise directement la variable, alors qu'il faut mettre le nom de la fonction :
Il faut aussi enlever le
Ton code final ressemble donc à ça :
echo "Bravo, vous pouvez passer à l'étape suivante en donnant ce code <mark>$mot_de_passe</mark> à Messi44 par MP sur SDF.";)
Tu utilise directement la variable, alors qu'il faut mettre le nom de la fonction :
echo 'Bravo, vous pouvez passer à l'étape suivante en donnant ce code <mark>'.generer_mot_de_passe.(12)'</mark> à Messi44 par MP sur SDF.';
Il faut aussi enlever le
= 12lors de la déclaration de fonction.
Ton code final ressemble donc à ça :
function generer_mot_de_passe($nb_caractere) { $mot_de_passe = ""; $chaine = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $longeur_chaine = strlen($chaine); for($i = 1; $i <= $nb_caractere; $i++) { $place_aleatoire = mt_rand(0,($longeur_chaine-1)); $mot_de_passe .= $chaine[$place_aleatoire]; } return $mot_de_passe; } echo 'Bravo, vous pouvez passer à l'étape suivante en donnant ce code <mark>'.generer_mot_de_passe(12).'</mark> à Messi44 par MP sur SDF.'; } else { echo "Vous n'avez pas encore atteint la note minimum de 18/20."; } ?>
Voila le message d'erreur :
Notice: Undefined variable: mot_de_passe in C:\wamp\www\FC-LUCRYIO\index2.php on line 348
la ligne est correspond à celle de l'"echo".
Je viens de vérifier (au cas ou) et cette variable est utilisé seulement pour ça et nulle part ailleur.
Notice: Undefined variable: mot_de_passe in C:\wamp\www\FC-LUCRYIO\index2.php on line 348
la ligne est correspond à celle de l'"echo".
Je viens de vérifier (au cas ou) et cette variable est utilisé seulement pour ça et nulle part ailleur.
Merci, ça fonctionne très bien.
Une autre petite question :
Comment faire pour que la chaîne de caractère donne un mot et non un truc qui veux rien dire ?
Ou alors, est-ce possible que ces mots soit gardé dans un fichier texte ? (c'est pour vérifier la véracité des mots que les gens devrons me donner pour valider leurs quizz)
Une autre petite question :
Comment faire pour que la chaîne de caractère donne un mot et non un truc qui veux rien dire ?
Ou alors, est-ce possible que ces mots soit gardé dans un fichier texte ? (c'est pour vérifier la véracité des mots que les gens devrons me donner pour valider leurs quizz)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Si par "mot" tu entends "mot du dictionnaire de la langue française", le seul moyen à ma connaissance est d'avoir une grande liste de mots et de "taper dedans" au hasard
et c'est possible de transférer ces mots aléatoire dans un fichier texte ? si oui, comment faire à partir de mon code ?
non, je vais essayer d'être plus explicite.
Actuellement le programme génère un "mot" aléatoire.
Ce que j'aimerais savoir c'est est-ce que c'est "mot" peuvent être mis en même temps que la génération du "mot" dans un fichier texte.
J'aimerais garder une trace des "mot" généré afin de vérifier ce que les membres me donnerons et voir s'il ne triche pas en quelque sorte.
Actuellement le programme génère un "mot" aléatoire.
Ce que j'aimerais savoir c'est est-ce que c'est "mot" peuvent être mis en même temps que la génération du "mot" dans un fichier texte.
J'aimerais garder une trace des "mot" généré afin de vérifier ce que les membres me donnerons et voir s'il ne triche pas en quelque sorte.
Je vais te montrer le code. Juste un peu de temps.
Dans le code au dessus j'ai oublier quelque chose
Il faut penser à échapper l'apostrophe à "l'étape" en utilisant un anti slash
Dans le code au dessus j'ai oublier quelque chose
echo 'Bravo, vous pouvez passer à l\'étape suivante en donnant ce code <mark>'.generer_mot_de_passe(12).'</mark> à Messi44 par MP sur SDF.';
Il faut penser à échapper l'apostrophe à "l'étape" en utilisant un anti slash
oui oui seulement id est en auto-incrément.
voici le code :
Et voici l'erreur qu'il me met :
Warning: PDO::exec() expects exactly 1 parameter, 2 given in C:\wamp\www\FC-LUCRYIO\index2.php on line 367
ce qui correspond à cette ligne :
VALUES('.NULL,$mot_de_passe.')');
Et même si je retire le "NULL" et les ".", ça ne fonctionne pas, le code ne s'enregistre pas dans la base de données.
J'ai bien fait la base, "fc_lucryio" et la table "mdpgeneres" et les 2 colonnes :
- id int(11) auto-incrémentation
- mdp char(255)
voila tous ce que j'ai fais.
Et malgré tous ça, le code se génére le message d'erreur est là et le code ne s'enregistre pas dans la base, une idée de quelqu'un ?
voici le code :
function generer_mot_de_passe($nb_caractere) { $mot_de_passe = ""; $chaine = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $longeur_chaine = strlen($chaine); for($i = 1; $i <= $nb_caractere; $i++) { $place_aleatoire = mt_rand(0,($longeur_chaine-1)); $mot_de_passe .= $chaine[$place_aleatoire]; } $HOTE = 'localhost'; //NOM DE L'HÔTE SQL (fourni par ton hébergeur) $DB = 'fc_lucryio'; //NOM DE TA BASE DE DONNEES (que tu dois crée ou pas selon ton hébergeur) $USERNAME = 'root'; //NOM D' UTILISATEUR FOURNI PAR TON HEBERGEUR $PWD = ''; //MOT DE PASSE SQL FOURNI PAR TON HEBERGEUR //********************************// // Il faut que tu modifie les // // ci dessus // //********************************// try { $bdd = new PDO('mysql:host='.$HOTE.';dbname='.$DB.'',$USERNAME,$PWD); } catch (Exception $e){ die ('Erreur: ' . $e->getMessage()); } // NOUS VOILA CONNECTER A LA BASE DE DONNEE (NORMALEMENT) /* Il faudra créer une table dans votre base de donnée, elle s'appelera MDPgeneres il y aure dedans les champs : ID , de type INT avec une limite de caracteres de 11 MDP de type char avec une limite de 255 */ $bdd->exec('INSERT INTO MDPgeneres (mdp) VALUES('.NULL,$mot_de_passe.')'); return $mot_de_passe; } echo 'Bravo, vous pouvez passer à l\'étape suivante en donnant ce code <mark>'.generer_mot_de_passe(12).'</mark> à Messi44 par MP sur SDF.';
Et voici l'erreur qu'il me met :
Warning: PDO::exec() expects exactly 1 parameter, 2 given in C:\wamp\www\FC-LUCRYIO\index2.php on line 367
ce qui correspond à cette ligne :
VALUES('.NULL,$mot_de_passe.')');
Et même si je retire le "NULL" et les ".", ça ne fonctionne pas, le code ne s'enregistre pas dans la base de données.
J'ai bien fait la base, "fc_lucryio" et la table "mdpgeneres" et les 2 colonnes :
- id int(11) auto-incrémentation
- mdp char(255)
voila tous ce que j'ai fais.
Et malgré tous ça, le code se génére le message d'erreur est là et le code ne s'enregistre pas dans la base, une idée de quelqu'un ?
Il faut changer les identifiants ainsi que le nom de l'hôte SQL
Penser à enlever le point devant NULL et MDPgeneres pour la table.
$HOTE = 'localhost'; //NOM DE L'HÔTE SQL (fourni par ton hébergeur) $DB = 'fc_lucryio'; //NOM DE TA BASE DE DONNEES (que tu dois crée ou pas selon ton hébergeur) $USERNAME = 'root'; //NOM D' UTILISATEUR FOURNI PAR TON HEBERGEUR $PWD = ''; //MOT DE PASSE SQL FOURNI PAR TON HEBERGEUR
Penser à enlever le point devant NULL et MDPgeneres pour la table.
pour le moment, je suis en local donc pour l'hôte, c'est ça ^^
pour le nom de la table, si je met MDPgeneres, ça me le change en mdpgeneres
il me retire les majuscules.
Pour le "." devant NULL, quand je le retire ça me fait cette erreur :
Parse error: syntax error, unexpected 'NULL' (T_STRING) in C:\wamp\www\FC-LUCRYIO\index2.php on line 367
pour le nom de la table, si je met MDPgeneres, ça me le change en mdpgeneres
il me retire les majuscules.
Pour le "." devant NULL, quand je le retire ça me fait cette erreur :
Parse error: syntax error, unexpected 'NULL' (T_STRING) in C:\wamp\www\FC-LUCRYIO\index2.php on line 367
En faisant comme ça :
J'ai plus d'erreur mais le code ne s'enregistre pas dans ma base de données.
une idée ?
function generer_mot_de_passe($nb_caractere) { $mot_de_passe = ""; $chaine = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $longeur_chaine = strlen($chaine); for($i = 1; $i <= $nb_caractere; $i++) { $place_aleatoire = mt_rand(0,($longeur_chaine-1)); $mot_de_passe .= $chaine[$place_aleatoire]; } $HOTE = 'localhost'; //NOM DE L'HÔTE SQL (fourni par ton hébergeur) $DB = 'fc_lucryio'; //NOM DE TA BASE DE DONNEES (que tu dois crée ou pas selon ton hébergeur) $USERNAME = 'root'; //NOM D' UTILISATEUR FOURNI PAR TON HEBERGEUR $PWD = ''; //MOT DE PASSE SQL FOURNI PAR TON HEBERGEUR //********************************// // Il faut que tu modifie les // // ci dessus // //********************************// try { $bdd = new PDO('mysql:host='.$HOTE.';dbname='.$DB.'',$USERNAME,$PWD); } catch (Exception $e){ die ('Erreur: ' . $e->getMessage()); } // NOUS VOILA CONNECTER A LA BASE DE DONNEE (NORMALEMENT) /* Il faudra créer une table dans votre base de donnée, elle s'appelera MDPgeneres il y aure dedans les champs : ID , de type INT avec une limite de caracteres de 11 MDP de type char avec une limite de 255 */ $bdd->exec('INSERT INTO mdpgeneres (MDP) VALUES('.$mot_de_passe.')'); return $mot_de_passe; } echo 'Bravo, vous pouvez passer à l\'étape suivante en donnant ce code <mark>'.generer_mot_de_passe(12).'</mark> à Messi44 par MP sur SDF.'; } else { echo "Vous n'avez pas encore atteint la note minimum de 18/20."; } ?>
J'ai plus d'erreur mais le code ne s'enregistre pas dans ma base de données.
une idée ?
j'ai essayé comme ça :
j'ai cette erreur :
Warning: Illegal string offset 'MDP' in C:\wamp\www\FC-LUCRYIO\index2.php on line 367
qui correspond à cette ligne :
et ça me m'enregistre 1 lettre ou 1 chiffre uniquement dans la base.
une idée ?
PS : Il m'enregistre seulement le premier caractère généré.
$bdd->exec('INSERT INTO mdpgeneres VALUES("", "'.$mot_de_passe['MDP'].'")');
j'ai cette erreur :
Warning: Illegal string offset 'MDP' in C:\wamp\www\FC-LUCRYIO\index2.php on line 367
qui correspond à cette ligne :
VALUES("", "'.$mot_de_passe['MDP'].'")');
et ça me m'enregistre 1 lettre ou 1 chiffre uniquement dans la base.
une idée ?
PS : Il m'enregistre seulement le premier caractère généré.