Variable indéfini alors qu'elle est.
Résolu/Fermé
Lucryio
Messages postés
204
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
4 juin 2017
-
4 janv. 2014 à 14:46
Lucryio Messages postés 204 Date d'inscription samedi 4 janvier 2014 Statut Membre Dernière intervention 4 juin 2017 - 4 janv. 2014 à 18:39
Lucryio Messages postés 204 Date d'inscription samedi 4 janvier 2014 Statut Membre Dernière intervention 4 juin 2017 - 4 janv. 2014 à 18:39
A voir également:
- Variable indéfini alors qu'elle est.
- 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
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Word
- Variable TEMP ✓ - Forum Windows 10
10 réponses
Utilisateur anonyme
Modifié par le père. le 4/01/2014 à 14:58
Modifié par le père. le 4/01/2014 à 14:58
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.";
tete0148
Messages postés
413
Date d'inscription
mercredi 19 décembre 2012
Statut
Membre
Dernière intervention
15 juin 2017
89
Modifié par tete0148 le 4/01/2014 à 15:08
Modifié par tete0148 le 4/01/2014 à 15:08
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."; } ?>
Lucryio
Messages postés
204
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
4 juin 2017
Modifié par Lucryio le 4/01/2014 à 14:59
Modifié par Lucryio le 4/01/2014 à 14:59
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.
tete0148
Messages postés
413
Date d'inscription
mercredi 19 décembre 2012
Statut
Membre
Dernière intervention
15 juin 2017
89
4 janv. 2014 à 15:00
4 janv. 2014 à 15:00
Juste une question : pourquoi n'ai-je pas la coloration syntaxique sur les codes de mes messages.
Lucryio
Messages postés
204
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
4 juin 2017
4 janv. 2014 à 15:03
4 janv. 2014 à 15:03
pour avoir la couleur sur ton code, tu doit choisir quel langage tu utilise ^^
tete0148
Messages postés
413
Date d'inscription
mercredi 19 décembre 2012
Statut
Membre
Dernière intervention
15 juin 2017
89
4 janv. 2014 à 15:06
4 janv. 2014 à 15:06
Merci ^^
Lucryio
Messages postés
204
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
4 juin 2017
Modifié par Lucryio le 4/01/2014 à 15:06
Modifié par Lucryio le 4/01/2014 à 15:06
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)
tete0148
Messages postés
413
Date d'inscription
mercredi 19 décembre 2012
Statut
Membre
Dernière intervention
15 juin 2017
89
4 janv. 2014 à 15:06
4 janv. 2014 à 15:06
soit tu choisi le mot à la base, ou tu fait une liste de mots.
Si tu veux que le mot soit aléatoire, il va falloir utiliser une API de google, celle de Google traduction je pense (je sais même pas si elle existe).
Je te conseil la méthode de la liste, puis de choisir un des mots aléatoirement.
Si tu veux que le mot soit aléatoire, il va falloir utiliser une API de google, celle de Google traduction je pense (je sais même pas si elle existe).
Je te conseil la méthode de la liste, puis de choisir un des mots aléatoirement.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
4 janv. 2014 à 15:07
4 janv. 2014 à 15:07
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
Lucryio
Messages postés
204
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
4 juin 2017
4 janv. 2014 à 15:08
4 janv. 2014 à 15:08
et c'est possible de transférer ces mots aléatoire dans un fichier texte ? si oui, comment faire à partir de mon code ?
tete0148
Messages postés
413
Date d'inscription
mercredi 19 décembre 2012
Statut
Membre
Dernière intervention
15 juin 2017
89
4 janv. 2014 à 15:09
4 janv. 2014 à 15:09
Je n'ai pas bien compris, mettre la liste dans un fichier ?
Lucryio
Messages postés
204
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
4 juin 2017
4 janv. 2014 à 15:12
4 janv. 2014 à 15:12
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.
tete0148
Messages postés
413
Date d'inscription
mercredi 19 décembre 2012
Statut
Membre
Dernière intervention
15 juin 2017
89
4 janv. 2014 à 15:17
4 janv. 2014 à 15:17
La meilleur solution serait de les stocker en base de donnée. En as tu une avec ton hébergeur ?
Lucryio
Messages postés
204
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
4 juin 2017
Modifié par Lucryio le 4/01/2014 à 15:33
Modifié par Lucryio le 4/01/2014 à 15:33
oui, j'ai une base de données avec mon hebergeur, et comment adapter mon code pour qu'il enregistre dans la base ?
Je viens de créer ma base "fc_lucryio" et ma table "code_quizz" qui contien : id et code.
Je viens de créer ma base "fc_lucryio" et ma table "code_quizz" qui contien : id et code.
tete0148
Messages postés
413
Date d'inscription
mercredi 19 décembre 2012
Statut
Membre
Dernière intervention
15 juin 2017
89
4 janv. 2014 à 15:33
4 janv. 2014 à 15:33
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
Lucryio
Messages postés
204
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
4 juin 2017
4 janv. 2014 à 17:33
4 janv. 2014 à 17:33
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 ?
tete0148
Messages postés
413
Date d'inscription
mercredi 19 décembre 2012
Statut
Membre
Dernière intervention
15 juin 2017
89
4 janv. 2014 à 17:42
4 janv. 2014 à 17:42
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.
Lucryio
Messages postés
204
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
4 juin 2017
Modifié par Lucryio le 4/01/2014 à 17:46
Modifié par Lucryio le 4/01/2014 à 17:46
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
Lucryio
Messages postés
204
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
4 juin 2017
4 janv. 2014 à 17:55
4 janv. 2014 à 17:55
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 ?
tete0148
Messages postés
413
Date d'inscription
mercredi 19 décembre 2012
Statut
Membre
Dernière intervention
15 juin 2017
89
4 janv. 2014 à 18:04
4 janv. 2014 à 18:04
Il faut effectivement laisser le point (pour la concaténation).
Mais je ne sais pas pourquoi ça ne s'inclue pas. C'était pareil à mes débuts.
Mais je ne sais pas pourquoi ça ne s'inclue pas. C'était pareil à mes débuts.
Lucryio
Messages postés
204
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
4 juin 2017
Modifié par Lucryio le 4/01/2014 à 18:14
Modifié par Lucryio le 4/01/2014 à 18:14
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é.
tete0148
Messages postés
413
Date d'inscription
mercredi 19 décembre 2012
Statut
Membre
Dernière intervention
15 juin 2017
89
4 janv. 2014 à 18:19
4 janv. 2014 à 18:19
Je vois.
J'ai peut-être une idée :
J'ai peut-être une idée :
/*** Au dessus il y a la fonction
**************************************/
$MDPgenere = generer_mot_de_passe(12);
$[/contents/104-bases-de-donnees-introduction bdd]->exec('INSERT INTO mdpgeneres
VALUES('.MDPgenere.')');
Lucryio
Messages postés
204
Date d'inscription
samedi 4 janvier 2014
Statut
Membre
Dernière intervention
4 juin 2017
4 janv. 2014 à 18:21
4 janv. 2014 à 18:21
heu, je met ce code ou en faite ?
tete0148
Messages postés
413
Date d'inscription
mercredi 19 décembre 2012
Statut
Membre
Dernière intervention
15 juin 2017
89
4 janv. 2014 à 18:27
4 janv. 2014 à 18:27
Tu enlève tout le code concernant la base de donnée qui est à l'intérieur de la fonction.
Et tu met dessous, avec ce que je viens de rajouter.
Et tu met dessous, avec ce que je viens de rajouter.