Insérer les réponses d'un questionnaire dans une bd en PHP
marlui
Messages postés
58
Date d'inscription
Statut
Membre
Dernière intervention
-
Blunderer Messages postés 273 Date d'inscription Statut Membre Dernière intervention -
Blunderer Messages postés 273 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je travail sur un projet dont le but est de créer une page en PHP qui crée, modifie un questionnaire que l'on peut remplir. J'ai un petit problème au niveau de l'insertion des réponses dans ma base de données. Je pense que c'est un problème de variables.
Voici la page qui affiche les questions et ou l'utilisateur peut répondre :
Et voici maintenant la page que j'ai fait qui sert à faire l'insertion :
Voici le message d'erreur qui m'est affiché lorsque j'essaie d'entrer des réponses :
<citation>Notice: Undefined variable: QuestId in C:\Users\mluisier\xampp\htdocs\Questionnaire\Client\insertReponseC.php on line 33
Notice: Undefined variable: i in C:\Users\mluisier\xampp\htdocs\Questionnaire\Client\insertReponseC.php on line 36
</citation>
Si quelqu'un peut m'aider ..
Merci d'avance
Je travail sur un projet dont le but est de créer une page en PHP qui crée, modifie un questionnaire que l'on peut remplir. J'ai un petit problème au niveau de l'insertion des réponses dans ma base de données. Je pense que c'est un problème de variables.
Voici la page qui affiche les questions et ou l'utilisateur peut répondre :
<html> <head> <!-- Titre de la page --> <title>Réponses-questionnaire</title> <!-- Auteur de la page --> <meta name="author" content="author" /> <!-- Description de la page --> <meta name="description" content="Pages pour répondre aux questionnaires ou les gérer" /> <!-- Empêcher la mise en cache de la page par le navigateur --> <meta http-equiv="pragma" content="no-cache" /> </head> <body> <link rel="stylesheet" type="text/css" href="../Style.css" /> <div class="container"> <div class="left"><b><center><br><br>Menu</center></b><br /> <h2 style="font-size:15px"><center><a href="indexC.php">Retour</a></center></h2></div> <a href="indexC.php"> <div class="header"><h1 class="header"><center><img border="1" src="../Images/Répondre.png"alt="FMV" width="900" height="200" /></center></h1></div></a> </br> </br> </br> <div class="content"> <?PHP include ('../Connexion.php'); // Récupération de la variable $Id = $_GET['n']; ?> <center> <form action='insertReponseC.php' name='form_quest' method='GET'> <h2>Utilisateur</h2> <b>Nom : </b> <input name='cNom' type='text' size='20'/> <b>Prénom : </b> <input name='cPrenom' type='text' size='20'/><br><br> <br> <br> <?PHP // réation de la requête SELECT $sqlSelect = 'SELECT * FROM vQuestions WHERE quenId = "'.$Id.'";'; //On lance la requête (mysql_query) SELECT et on impose un message d'erreur si la requête ne se passe pas bien (or die) $reqSelect = mysql_query($sqlSelect) OR die ('Erreur SQL !<br>'.$sqlSelect.'<br>'.mysql_error()); // Requête pour compter le nombre de question $sqlCompte = 'SELECT COUNT(*) FROM vQuestion WHERE quenId = "'.$Id.'";'; // Déclaration de ma variable i pour la boucle $i = 0; echo '<table border=30>'; while($data = mysql_fetch_array($reqSelect)) { for($i=0;$i <= $sqlCompte;$i++) { echo '<tr><td>'.$data['questQuestion'].'</td>'; echo '<td><input name="'.$i.'" type="text"size="40"></td></tr>'; } } echo '<tr><td COLSPAN=2><center><input type=\'submit\' name=\'quest\' value=\'Envoi de mes réponses\'></center></td></tr>'; echo '</table>'; ?> <br> <br> </form> <?PHP // On ferme la connexion mysql_close(); ?> </center> </div> </div> </body> </html>
Et voici maintenant la page que j'ai fait qui sert à faire l'insertion :
<html> <head> <!-- Titre de la page --> <title>Insert-réponse</title> <!-- Auteur de la page --> <meta name="author" content="author" /> <!-- Description de la page --> <meta name="description" content="Pages pour répondre aux questionnaires ou les gérer" /> <!-- Empêcher la mise en cache de la page par le navigateur --> <meta http-equiv="pragma" content="no-cache" /> </head> <body> <!-- Lien CSS --> <link rel="stylesheet" type="text/css" href="../Style.css" /> <div class="container"> <div class="left"><b><center><br><br>Menu</center></b><br /> <h2 style="font-size:15px"><center><a href="IndexC.php">Retour</a></center></h2></div> <a href="insertReponseC.php"> <div class="header"><h1 class="header"><center><img border="1" src="../Images/Logo_FMV_Répondre.png"alt="FMV" width="900" height="200" /></center></h1></div></a> </br> </br> </br> <div class="content"> <?PHP include ('../Connexion.php'); //Récupération de la variable $IdQuest = $QuestId; $Nom = $_GET['cNom']; $Prenom = $_GET['cPrenom']; $Reponse = $i; if(empty($Nom) || empty($Prenom) || empty($Reponse)) { echo '<html><head> <title> Erreur ! </title></head><body> <h1 align=center> Vous n\'avez pas remplit tous les champs ! </h1> <br> <h2 align=center> Veuillez <a href=\'IndexC.php\'>recommencer </a>!</h2>'; } else { //Requête sql INSERT INTO $sql = 'INSERT INTO tblReponse(tblQuestion_questId, repNom, repPrenom, repReponse) VALUES ("'.$IdQuest.'","'.mysql_real_escape_string($Nom).'","'.mysql_real_escape_string($Prenom).'","'.mysql_real_escape_string($Reponse).'")'; //Exécution de la requête $result = mysql_query($sql) OR die('<html><head><title>Erreur !</title></head><body><br><br><br><h1 align=\'center\'>Erreur à l\'insertion ! </h1><br>"'.mysql_error().'"<br><H2 align=center> Veuillez <a href=\'IndexC.php\'>recommencer !</a></h2></body></html>'); if($result == true) { // Récupération du dernier identifiant inséré par mysql $LastINsertedId = mysql_insert_id(); echo "<html><head> <title>Questionnaire inséré !</title></head><body> <center><br><br><br><h1>Vos réponses ont été enregistrées!</h1> <br> <a href='IndexC.php'>Répondre à un autre questionnaire</a><br></center>"; } } // On quitte la connexion mysql_close(); ?> </div> </div> </body> </html>
Voici le message d'erreur qui m'est affiché lorsque j'essaie d'entrer des réponses :
<citation>Notice: Undefined variable: QuestId in C:\Users\mluisier\xampp\htdocs\Questionnaire\Client\insertReponseC.php on line 33
Notice: Undefined variable: i in C:\Users\mluisier\xampp\htdocs\Questionnaire\Client\insertReponseC.php on line 36
</citation>
Si quelqu'un peut m'aider ..
Merci d'avance
A voir également:
- Insérer les réponses d'un questionnaire dans une bd en PHP
- Insérer une vidéo dans powerpoint - Guide
- Insérer signature word - Guide
- Insérer un espace insécable dans word - Guide
- Insérer liste déroulante excel - Guide
- Insérer un tableau dans word - Guide
22 réponses
Super, maintenant dans ta page2,
il va falloir modifier des choses ;)
Est-ce que vQuestions et tblReponse doivent pouvoir se lier ?
C'est-à-dire est-ce qu'il faut qu'on puisse trouver une réponse (de tblReponse) en ayant une question (de vQuestions) ?
et inversement ?
Maintenant, je suis.
il va falloir modifier des choses ;)
Est-ce que vQuestions et tblReponse doivent pouvoir se lier ?
C'est-à-dire est-ce qu'il faut qu'on puisse trouver une réponse (de tblReponse) en ayant une question (de vQuestions) ?
et inversement ?
Maintenant, je suis.
On va procéder assez tranquillement car y a pas mal de choses à voir :)
Déjà, dans ta première page (= page1), j'ai l'impression que :
Ce qui fait que tu fais une boucle dans une même boucle !
Essaye ceci :
Toujours dans page1 !
Dis moi déjà si c'est mieux ;)
Déjà, dans ta première page (= page1), j'ai l'impression que :
while($data = mysql_fetch_array($reqSelect))est égal à :
for($i=0;$i <= $sqlCompte;$i++)
Ce qui fait que tu fais une boucle dans une même boucle !
Essaye ceci :
// Enlève cette ligne : Requête pour compter le nombre de question //$sqlCompte = 'SELECT COUNT(*) FROM vQuestion WHERE quenId = "'.$Id.'";'; // Déclaration de ma variable i pour la boucle $i = 0; echo '<table border=30>'; while($data = mysql_fetch_array($reqSelect)) { echo '<tr><td>'.$data['questQuestion'].'</td>'; echo '<td><input name="'.$i++.'" type="text"size="40"></td></tr>'; }
Toujours dans page1 !
Dis moi déjà si c'est mieux ;)
Très bien donc tu as supprimé cette requete aussi hein ?
$sqlCompte = 'SELECT COUNT(*) FROM vQuestion WHERE quenId = "'.$Id.'";';
elle ne sert plus à rien ;)
Maintenant, je suis.
$sqlCompte = 'SELECT COUNT(*) FROM vQuestion WHERE quenId = "'.$Id.'";';
elle ne sert plus à rien ;)
Maintenant, je suis.
Si je comprends bien, la seconde page que tu nous donnes est la page insertReponseC.php ?
Donc les erreurs se trouvent dedans !
En effet, je ne vois pas de $QuestId déclaré avant. Tu voulais sûrement le récupérer grâce au formulaire de l'autre page ? Pareil pour $i je suppose.
Tu ne peux pas faire ca comme ca ;)
Pour $QuestId, je ne vois pas du tout comment tu peux le récupérer puisque tu ne l'envoi pas (dans ta première page).
Pour $i, il faut procéder autrement !
Tu ne peux pas faire ceci : $Reponse = $i;
Car tu as plusieurs $i. Il faut que tu fasses une boucle qui récupère toutes tes $i.
Juste pour mieux comprendre et pouvoir t'aider, dans ta table vQuestions, ton quenId est-il égal à tblQuestion_questId de la table tblReponse pour une même question ?
réponds moi si tu veux que je m'explique mieux ;)
Donc les erreurs se trouvent dedans !
En effet, je ne vois pas de $QuestId déclaré avant. Tu voulais sûrement le récupérer grâce au formulaire de l'autre page ? Pareil pour $i je suppose.
Tu ne peux pas faire ca comme ca ;)
Pour $QuestId, je ne vois pas du tout comment tu peux le récupérer puisque tu ne l'envoi pas (dans ta première page).
Pour $i, il faut procéder autrement !
Tu ne peux pas faire ceci : $Reponse = $i;
Car tu as plusieurs $i. Il faut que tu fasses une boucle qui récupère toutes tes $i.
Juste pour mieux comprendre et pouvoir t'aider, dans ta table vQuestions, ton quenId est-il égal à tblQuestion_questId de la table tblReponse pour une même question ?
réponds moi si tu veux que je m'explique mieux ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'avoue que je comprends pas pourquoi tu fais des tables view...
Pourquoi ne pas rester juste avec tes tblQuestion et tblReponse ?
Pourquoi ne pas rester juste avec tes tblQuestion et tblReponse ?
Super maintenant on continue ;)
Page1 :
remplace :
Page1 :
remplace :
<form action='insertReponseC.php' name='form_quest' method='GET'>par :
<form action='insertReponseC.php?questId=<?php $Id; ?>' name='form_quest' method='GET'>
Et j'ai aussi cette erreur : "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"jj ","kk","")' at line 1"
Et ma requête est : INSERT INTO tblReponse(tblQuestion_questId, repNom, repPrenom, repReponse) VALUES (,"jj ","kk","")
Et ma requête est : INSERT INTO tblReponse(tblQuestion_questId, repNom, repPrenom, repReponse) VALUES (,"jj ","kk","")
Nickel maintenant :
page2 :
remplace :
page2 :
remplace :
$IdQuest = $QuestId;par :
$IdQuest = $_GET['questId'];
En fait non, il faut que tu envoies via le formulaire le id de tblQuestion.
=>
page1 :
remplace :
et supprime la ligne
=>
page1 :
remplace :
while($data = mysql_fetch_array($reqSelect)) { echo '<tr><td>'.$data['questQuestion'].'</td>'; echo '<td><input name="'.$i++.'" type="text"size="40"></td></tr>'; }par :
while($data = mysql_fetch_array($reqSelect)) { echo '<tr><td>'.$data['questQuestion'].'</td>'; echo '<td><input name="'.$data['questId'].'" type="text"size="40"></td></tr>'; }
et supprime la ligne
$i = 0;
Ok je pense que ça devrait marcher :)
Page2 (remplace tout) :
Page2 (remplace tout) :
<html> <head> <!-- Titre de la page --> <title>Insert-réponse</title> <!-- Auteur de la page --> <meta name="author" content="author" /> <!-- Description de la page --> <meta name="description" content="Pages pour répondre aux questionnaires ou les gérer" /> <!-- Empêcher la mise en cache de la page par le navigateur --> <meta http-equiv="pragma" content="no-cache" /> </head> <body> <!-- Lien CSS --> <link rel="stylesheet" type="text/css" href="../Style.css" /> <div class="container"> <div class="left"><b><center><br><br>Menu</center></b><br /> <h2 style="font-size:15px"><center><a href="IndexC.php">Retour</a></center></h2></div> <a href="insertReponseC.php"> <div class="header"><h1 class="header"><center><img border="1" src="../Images/Logo_FMV_Répondre.png"alt="FMV" width="900" height="200" /></center></h1></div></a> </br> </br> </br> <div class="content"> <?PHP include ('../Connexion.php'); //Récupération de la variable $IdQuest = $_GET['questId']; $Nom = $_GET['cNom']; $Prenom = $_GET['cPrenom']; $sqlSelect = 'SELECT questId FROM tblQuestion WHERE tblQuestionnaire_quenId = "'.$Id.'";'; $reqSelect = mysql_query($sqlSelect) OR die ('Erreur SQL !<br>'.$sqlSelect.'<br>'.mysql_error()); while($data = mysql_fetch_array($reqSelect)) { $Reponse = $_GET[$data['questId']]; if(empty($Nom) || empty($Prenom) || empty($Reponse)) { echo '<html><head> <title> Erreur ! </title></head><body> <h1 align=center> Vous n\'avez pas remplit tous les champs ! </h1> <br> <h2 align=center> Veuillez <a href=\'IndexC.php\'>recommencer </a>!</h2>'; } else { //Requête sql INSERT INTO $sql = 'INSERT INTO tblReponse(tblQuestion_questId, repNom, repPrenom, repReponse) VALUES ("'.$IdQuest.'","'.mysql_real_escape_string($Nom).'","'.mysql_real_escape_string($Prenom).'","'.mysql_real_escape_string($Reponse).'")'; //Exécution de la requête $result = mysql_query($sql) OR die('<html><head><title>Erreur !</title></head><body><br><br><br><h1 align=\'center\'>Erreur à l\'insertion ! </h1><br>"'.mysql_error().'"<br><H2 align=center> Veuillez <a href=\'IndexC.php\'>recommencer !</a></h2></body></html>'); if($result == true) { // Récupération du dernier identifiant inséré par mysql $LastINsertedId = mysql_insert_id(); echo "<html><head> <title>Questionnaire inséré !</title></head><body> <center><br><br><br><h1>Vos réponses ont été enregistrées!</h1> <br> <a href='IndexC.php'>Répondre à un autre questionnaire</a><br></center>"; } } } // On quitte la connexion mysql_close(); ?> </div> </div> </body> </html>
Dans ta page2, tu as mis cette requete :
=> tu as tblReponse(tblQuestion_questId, repNom, repPrenom, repReponse) (4 champs dans cette table)
or dans ce message : https://forums.commentcamarche.net/forum/affich-26380678-inserer-les-reponses-d-un-questionnaire-dans-une-bd-en-php#8
tu mets :
CREATE TABLE tblReponse (
repId INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
tblQuestion_questId INT NOT NULL,
repNom VARCHAR(255) NOT NULL,
repPrenom VARCHAR(255) NOT NULL,
repReponse VARCHAR(255) NOT NULL,
CONSTRAINT fk_tblQuestion
FOREIGN KEY (tblQuestion_questId)
REFERENCES tblQuestion(questId));
(5 champs) !!!
$sql = 'INSERT INTO tblReponse(tblQuestion_questId, repNom, repPrenom, repReponse) VALUES ("'.$IdQuest.'","'.mysql_real_escape_string($Nom).'","'.mysql_real_escape_string($Prenom).'","'.mysql_real_escape_string($Reponse).'")';
=> tu as tblReponse(tblQuestion_questId, repNom, repPrenom, repReponse) (4 champs dans cette table)
or dans ce message : https://forums.commentcamarche.net/forum/affich-26380678-inserer-les-reponses-d-un-questionnaire-dans-une-bd-en-php#8
tu mets :
CREATE TABLE tblReponse (
repId INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
tblQuestion_questId INT NOT NULL,
repNom VARCHAR(255) NOT NULL,
repPrenom VARCHAR(255) NOT NULL,
repReponse VARCHAR(255) NOT NULL,
CONSTRAINT fk_tblQuestion
FOREIGN KEY (tblQuestion_questId)
REFERENCES tblQuestion(questId));
(5 champs) !!!
Oui je sais mais repId est la clé primaire et je l'ai mise en auto_increment ..
Par contre un autre trucs ..
Mais ce que je voudrais entrer est le numéro de la question ..
Si je fais ma boucle comme ça :
Et bien c'est le premier, qui est en gras, que je veux ajouter à ma base de données dans le champ tblQuestion_questId ..
Par contre un autre trucs ..
<input type="hidden" name="questId" value="<?php echo $Id; ?>" />en fait le $Id est le numéro du questionnaire pas de la question .. ce n'est pas ça que je dois ajouter dans la base de données .. Donc je ne devrais pas l'appeler questId mais quenId ..
Mais ce que je voudrais entrer est le numéro de la question ..
Si je fais ma boucle comme ça :
while($data = mysql_fetch_array($reqSelect)) { echo '<td>'.$data['questId'].'</td>';echo '<td>'.$data['questQuestion'].'</td>'; echo '<td><input name="'.$data['questId'].'" type="text"size="40"></td></tr>'; }
Et bien c'est le premier, qui est en gras, que je veux ajouter à ma base de données dans le champ tblQuestion_questId ..
Si je suis l'idée d'avant je devrais mettre ça ?
while($data = mysql_fetch_array($reqSelect)) { echo '<td>'.$data['questId'].'</td>'; echo '<td>'.$data['questQuestion'].'</td>'; echo '<td><input name="'.$data['questId'].'" type="text"size="40"></td></tr>'; echo '<input type="hidden" name="quest" value="<?php echo "'.$data['questId'].' ?>" />' ; }
Ok alors je te donne quelque chose et tu fais des tests et tu me dis si c'est ok ;)
ps : sauvegarde tes anciens fichiers à côté ;)
Page1 :
Page2 :
Maintenant, je suis.
ps : sauvegarde tes anciens fichiers à côté ;)
Page1 :
<html> <head> <!-- Titre de la page --> <title>Réponses-questionnaire</title> <!-- Auteur de la page --> <meta name="author" content="author" /> <!-- Description de la page --> <meta name="description" content="Pages pour répondre aux questionnaires ou les gérer" /> <!-- Empêcher la mise en cache de la page par le navigateur --> <meta http-equiv="pragma" content="no-cache" /> </head> <body> <link rel="stylesheet" type="text/css" href="../Style.css" /> <div class="container"> <div class="left"><b><center><br><br>Menu</center></b><br /> <h2 style="font-size:15px"><center><a href="indexC.php">Retour</a></center></h2></div> <a href="indexC.php"> <div class="header"><h1 class="header"><center><img border="1" src="../Images/Répondre.png"alt="FMV" width="900" height="200" /></center></h1></div></a> </br> </br> </br> <div class="content"> <?PHP include ('../Connexion.php'); // Récupération de la variable $Id = $_GET['n']; ?> <center> <form action='insertReponseC.php' name='form_quest' method='GET'> <input type="hidden" name="quenId" value="<?php echo $Id; ?>" /> <h2>Utilisateur</h2> <b>Nom : </b> <input name='cNom' type='text' size='20'/> <b>Prénom : </b> <input name='cPrenom' type='text' size='20'/><br><br> <br> <br> <?PHP // réation de la requête SELECT $sqlSelect = 'SELECT questId FROM tblQuestion WHERE tblQuestionnaire_quenId = "'.$Id.'";'; //On lance la requête (mysql_query) SELECT et on impose un message d'erreur si la requête ne se passe pas bien (or die) $reqSelect = mysql_query($sqlSelect) OR die ('Erreur SQL !<br>'.$sqlSelect.'<br>'.mysql_error()); echo '<table border=30>'; while($data = mysql_fetch_array($reqSelect)) { echo '<tr><td>'.$data['questQuestion'].'</td>'; echo '<td><input name="'.$data['questId'].'" type="text"size="40"></td></tr>'; } echo '<tr><td COLSPAN=2><center><input type=\'submit\' name=\'quest\' value=\'Envoi de mes réponses\'></center></td></tr>'; echo '</table>'; ?> <br> <br> </form> <?PHP // On ferme la connexion mysql_close(); ?> </center> </div> </div> </body> </html>
Page2 :
<html> <head> <!-- Titre de la page --> <title>Insert-réponse</title> <!-- Auteur de la page --> <meta name="author" content="author" /> <!-- Description de la page --> <meta name="description" content="Pages pour répondre aux questionnaires ou les gérer" /> <!-- Empêcher la mise en cache de la page par le navigateur --> <meta http-equiv="pragma" content="no-cache" /> </head> <body> <!-- Lien CSS --> <link rel="stylesheet" type="text/css" href="../Style.css" /> <div class="container"> <div class="left"><b><center><br><br>Menu</center></b><br /> <h2 style="font-size:15px"><center><a href="IndexC.php">Retour</a></center></h2></div> <a href="insertReponseC.php"> <div class="header"><h1 class="header"><center><img border="1" src="../Images/Logo_FMV_Répondre.png"alt="FMV" width="900" height="200" /></center></h1></div></a> </br> </br> </br> <div class="content"> <?PHP include ('../Connexion.php'); //Récupération de la variable $IdQuen = $_GET['quenId']; $Nom = $_GET['cNom']; $Prenom = $_GET['cPrenom']; $sqlSelect = 'SELECT questId FROM tblQuestion WHERE tblQuestionnaire_quenId = "'.$Id.'";'; $reqSelect = mysql_query($sqlSelect) OR die ('Erreur SQL !<br>'.$sqlSelect.'<br>'.mysql_error()); while($data = mysql_fetch_array($reqSelect)) { $Reponse = $_GET[$data['questId']]; if(empty($Nom) || empty($Prenom) || empty($Reponse)) { echo '<html><head> <title> Erreur ! </title></head><body> <h1 align=center> Vous n\'avez pas remplit tous les champs ! </h1> <br> <h2 align=center> Veuillez <a href=\'IndexC.php\'>recommencer </a>!</h2>'; } else { //Requête sql INSERT INTO $sql = 'INSERT INTO tblReponse(tblQuestion_questId, repNom, repPrenom, repReponse) VALUES ("'.$data['questId'].'","'.mysql_real_escape_string($Nom).'","'.mysql_real_escape_string($Prenom).'","'.mysql_real_escape_string($Reponse).'")'; //Exécution de la requête $result = mysql_query($sql) OR die('<html><head><title>Erreur !</title></head><body><br><br><br><h1 align=\'center\'>Erreur à l\'insertion ! </h1><br>"'.mysql_error().'"<br><H2 align=center> Veuillez <a href=\'IndexC.php\'>recommencer !</a></h2></body></html>'); if($result == true) { // Récupération du dernier identifiant inséré par mysql $LastINsertedId = mysql_insert_id(); echo "<html><head> <title>Questionnaire inséré !</title></head><body> <center><br><br><br><h1>Vos réponses ont été enregistrées!</h1> <br> <a href='IndexC.php'>Répondre à un autre questionnaire</a><br></center>"; } } } // On quitte la connexion mysql_close(); ?> </div> </div> </body> </html>
Maintenant, je suis.
Je vois pourquoi... Je veux bien que tu redonnes les deux pages en question (car je pense que tu as dû faire quelques modifs...) et je pourrait t'aider alors ;)
Et remet le sujet en non-résolu ;)
Maintenant, je suis.
Et remet le sujet en non-résolu ;)
Maintenant, je suis.
Essaye ceci : (Page2)
J'aurai d'autres choses à te dire sur ton code mais je vais attendre que ca marche déjà ;)
<html> <head> <!-- Titre de la page --> <title>Insert-réponse</title> <!-- Auteur de la page --> <meta name="author" content="author" /> <!-- Description de la page --> <meta name="description" content="Pages pour répondre aux questionnaires ou les gérer" /> <!-- Empêcher la mise en cache de la page par le navigateur --> <meta http-equiv="pragma" content="no-cache" /> </head> <body> <!-- Lien CSS --> <link rel="stylesheet" type="text/css" href="../Style.css" /> <div class="container"> <div class="left"><b><center><br><br>Menu</center></b><br /> <h2 style="font-size:15px"><center><a href="IndexC.php">Retour</a></center></h2></div> <a href="insertReponseC.php"> <div class="header"><h1 class="header"><center><img border="1" src="../Images/Logo_FMV_Répondre.png"alt="FMV" width="900" height="200" /></center></h1></div></a> </br> </br> </br> <div class="content"> <?PHP include ('../Connexion.php'); //Récupération de la variable $IdQuen = $_GET['quenId']; $Nom = $_GET['cNom']; $Prenom = $_GET['cPrenom']; $sqlSelect = 'SELECT questId FROM tblQuestion WHERE tblQuestionnaire_quenId = "'.$IdQuen.'";'; $reqSelect = mysql_query($sqlSelect) OR die ('Erreur SQL !<br>'.$sqlSelect.'<br>'.mysql_error()); $res = true; while($data = mysql_fetch_array($reqSelect)) { $Reponse = $_GET[$data['questId']]; if(empty($Nom) || empty($Prenom) || empty($Reponse)) { echo '<html><head> <title> Erreur ! </title></head><body> <h1 align=center> Vous n\'avez pas remplit tous les champs ! </h1> <br> <h2 align=center> Veuillez <a href=\'IndexC.php\'>recommencer </a>!</h2>'; $res = false; break; } } if ($res == true) { while($data = mysql_fetch_array($reqSelect)) { //Requête sql INSERT INTO $sql = 'INSERT INTO tblReponse(tblQuestion_questId, repNom, repPrenom, repReponse) VALUES ("'.$data['questId'].'","'.mysql_real_escape_string($Nom).'","'.mysql_real_escape_string($Prenom).'","'.mysql_real_escape_string($Reponse).'")'; //Exécution de la requête $result = mysql_query($sql) or die('<html><head><title>Erreur !</title></head><body><br><br><br><h1 align=\'center\'>Erreur à l\'insertion ! </h1><br>"'.mysql_error().'"<br><H2 align=center> Veuillez <a href=\'IndexC.php\'>recommencer !</a></h2></body></html>'); if ($result == false) { $res = false; break; } } } if($res == true) { // Récupération du dernier identifiant inséré par mysql $LastINsertedId = mysql_insert_id(); echo "<html><head> <title>Questionnaire inséré !</title></head><body> <center><br><br><br><h1>Vos réponses ont été enregistrées!</h1> <br> <a href='IndexC.php'>Répondre à un autre questionnaire</a><br></center>"; } // On quitte la connexion mysql_close(); ?> </div> </div> </body> </html>
J'aurai d'autres choses à te dire sur ton code mais je vais attendre que ca marche déjà ;)
Oui c'est cela la seconde page est insertReponseC.php
Dans cette page j'ai déjà modifier deux parties :
et
Et comment dois-je faire pour envoyer ces deux variables ? Et pour la boucle qui récupère tous les $i ?
Et non c'est questId qui est égal à tblQuestion_questId de la table réponse.
Dans cette page j'ai déjà modifier deux parties :
//Récupération de la variable global $QuestId; global $i; $IdQuest = $QuestId; $Nom = $_GET['cNom']; $Prenom = $_GET['cPrenom']; $Reponse = $i;
et
//Requête sql INSERT INTO $sql = 'INSERT INTO tblReponse(tblQuestion_questId, repNom, repPrenom, repReponse) VALUES ('.$IdQuest.',"'.mysql_real_escape_string($Nom).'","'.mysql_real_escape_string($Prenom).'","'.mysql_real_escape_string($Reponse).'")';
Et comment dois-je faire pour envoyer ces deux variables ? Et pour la boucle qui récupère tous les $i ?
Et non c'est questId qui est égal à tblQuestion_questId de la table réponse.
J'ai modifier cela et j'ai mis la variable $i comme 'value' des réponses et c'est juste, $i s'incrémente à chaque fois ! :)
J'ai fait ces vues car dans ce projet on me demande d'avoir une page qui affiche les questions insérées dans chaque questionnaire et les réponses avec nom du questionnaire et questions ..
Mais en fait ce n'est pas questId que je met là mais bien quenId (enfin tblQuestionnaire_quenId) car sur la page qui précède celle pour répondre, je dois choisir quel questionnaire je veux remplir. Et cette requête me permet d'afficher uniquement les questions qui font partie du questionnaire que j'ai choisit.
Ok, mais maintenant le numéro ne va pas dans l'url :
http://localhost/questionnaire/Client/insertReponseC.php?questId=&cNom=ww&cPrenom=ww&0=1&quest=Envoi+de+mes+r%E9ponses
http://localhost/questionnaire/Client/insertReponseC.php?questId=&cNom=ww&cPrenom=ww&0=1&quest=Envoi+de+mes+r%E9ponses
Comment ça différent de rien ?
ce $_GET['n'] vient de là :
ce $_GET['n'] vient de là :
<html> <head> <!-- Titre de la page --> <title>Index-réponse</title> <!-- Auteur de la page --> <meta name="author" content="Author" /> <!-- Description de la page --> <meta name="description" content="Pages pour répondre aux quesionnaires ou les gérer" /> <!-- Empêcher la mise en cache de la page par le navigateur --> <meta http-equiv="pragma" content="no-cache" /> <head> <body> <link rel="stylesheet" type="text/css" href="../Style.css" /> <div class="container"> <div class="left"><b><center><br><br>Menu</center></b><br><br> <h2 style="font-size:15px"><center><a href="../index.php">Accueil</a></center></h2></div> <a href="IndexC.php"> <div class="header"><h1 class="header"><center><img border="1" src="../Images/Logo_FMV_ChoixQuen.png"alt="FMV" width="900" height="200" /></center></h1></div></a> </br> </br> </br> <div class="content"> <?php include ('../Connexion.php'); echo '<h1><center>Choisissez le questionnaire que vous souhaitez remplir les questions</h1>'; //Sélection de tous les champs des questions $QuenAll = mysql_query('SELECT * FROM tblQuestionnaire ORDER BY quenId'); //$QuestAll contient toutes les infos des questions //Lire tous les enregistrements while($QuenSep = mysql_fetch_array($QuenAll)) { echo '<br><h3><center>'; echo '<a href="ReponseC.php?n='.$QuenSep['quenId'].'">'; echo $QuenSep['quenNom']; echo '</center></a><br>'; echo "<?php include ('ReponseC.php')?></h3>"; } //On ferme la connexion à mysql mysql_close(); ?> </div> </div> </body> </html>
Hello, je reviens ici car j'ai une autre question qui est sur ce même projet et cette même partie ;)
Tout fonctionne pour l'insertion sauf que lorsque l'utilisateur appuie sur le bouton 'insérer' si c'est ok un message apparaît : 'Vos réponses ont bien été ajoutée'. Mais, par exemple si j'ajoute trois réponses, le message s'affiche trois fois.
Et c'est pareil lorsqu'il oublie de remplir certain champ, le message 'vous n'avez pas remplit tous les champs' s'affiche le nombre de fois qu'il y a de questions .. Si vous pouvez m'aider .. :)
Tout fonctionne pour l'insertion sauf que lorsque l'utilisateur appuie sur le bouton 'insérer' si c'est ok un message apparaît : 'Vos réponses ont bien été ajoutée'. Mais, par exemple si j'ajoute trois réponses, le message s'affiche trois fois.
Et c'est pareil lorsqu'il oublie de remplir certain champ, le message 'vous n'avez pas remplit tous les champs' s'affiche le nombre de fois qu'il y a de questions .. Si vous pouvez m'aider .. :)
Alors voilà ma première page (ou on fait l'insertion) :
(Il n'y a pas beaucoup de changements ..)
Et voici la deuxième qui gère l'insertion :
(peu de changements également)
(Il n'y a pas beaucoup de changements ..)
<html> <head> <!-- Titre de la page --> <title>Réponses-questionnaire</title> <!-- Auteur de la page --> <meta name="author" content="author" /> <!-- Description de la page --> <meta name="description" content="Pages pour répondre aux questionnaires" /> <!-- Empêcher la mise en cache de la page par le navigateur --> <meta http-equiv="pragma" content="no-cache" /> </head> <body> <link rel="stylesheet" type="text/css" href="../Style.css" /> <div class="container"> <div class="left"><b><center><br><br>Menu</center></b><br /> <h2 style="font-size:15px"><center><a href="indexC.php">Retour</a></center></h2></div> <a href="indexC.php"> <div class="header"><h1 class="header"><center><img border="1" src="../Images/Logo_FMV_Répondre.png"alt="FMV" width="900" height="200" /></center></h1></div></a> </br> </br> </br> <div class="content"> <?PHP include ('../Connexion.php'); // Récupération de la variable $Id = $_GET['n']; ?> <center> <form action='insertReponseC.php' name='form_quest' method='GET'> <input type="hidden" name="quenId" value="<?php echo $Id; ?>" /> <h2>Utilisateur</h2> <b>Nom : </b> <input name='cNom' type='text' size='20'/> <b>Prénom : </b> <input name='cPrenom' type='text' size='20'/><br><br> <br> <br> <?PHP // réation de la requête SELECT $sqlSelect = 'SELECT * FROM tblQuestion WHERE tblQuestionnaire_quenId = "'.$Id.'" order by questId;'; //On lance la requête (mysql_query) SELECT et on impose un message d'erreur si la requête ne se passe pas bien (or die) $reqSelect = mysql_query($sqlSelect) OR die ('Erreur SQL !<br>'.$sqlSelect.'<br>'.mysql_error()); echo '<table border=30>'; while($data = mysql_fetch_array($reqSelect)) { echo '<tr><td>'.$data['questQuestion'].'</td>'; echo '<td><input name="'.$data['questId'].'" type="text"size="40"></td></tr>'; } echo '<tr><td COLSPAN=2><center><input type=\'submit\' name=\'quest\' value=\'Envoi de mes réponses\'></center></td></tr>'; echo '</table>'; ?> <br> <br> </form> <?PHP // On ferme la connexion mysql_close(); ?> </center> </div> </div> </body> </html>
Et voici la deuxième qui gère l'insertion :
(peu de changements également)
<html> <head> <!-- Titre de la page --> <title>Insert-réponse</title> <!-- Auteur de la page --> <meta name="author" content="author" /> <!-- Description de la page --> <meta name="description" content="Pages pour répondre aux questionnaires ou les gérer" /> <!-- Empêcher la mise en cache de la page par le navigateur --> <meta http-equiv="pragma" content="no-cache" /> </head> <body> <!-- Lien CSS --> <link rel="stylesheet" type="text/css" href="../Style.css" /> <div class="container"> <div class="left"><b><center><br><br>Menu</center></b><br /> <h2 style="font-size:15px"><center><a href="IndexC.php">Retour</a></center></h2></div> <a href="insertReponseC.php"> <div class="header"><h1 class="header"><center><img border="1" src="../Images/Logo_FMV_Répondre.png"alt="FMV" width="900" height="200" /></center></h1></div></a> </br> </br> </br> <div class="content"> <?PHP include ('../Connexion.php'); //Récupération de la variable $IdQuen = $_GET['quenId']; $Nom = $_GET['cNom']; $Prenom = $_GET['cPrenom']; $sqlSelect = 'SELECT questId FROM tblQuestion WHERE tblQuestionnaire_quenId = "'.$IdQuen.'";'; $reqSelect = mysql_query($sqlSelect) OR die ('Erreur SQL !<br>'.$sqlSelect.'<br>'.mysql_error()); while($data = mysql_fetch_array($reqSelect)) { $Reponse = $_GET[$data['questId']]; if(empty($Nom) || empty($Prenom) || empty($Reponse)) { echo '<html><head> <title> Erreur ! </title></head><body> <h1 align=center> Vous n\'avez pas remplit tous les champs ! </h1> <br> <h2 align=center> Veuillez <a href=\'IndexC.php\'>recommencer </a>!</h2>'; } else { //Requête sql INSERT INTO $sql = 'INSERT INTO tblReponse(tblQuestion_questId, repNom, repPrenom, repReponse) VALUES ("'.$data['questId'].'","'.mysql_real_escape_string($Nom).'","'.mysql_real_escape_string($Prenom).'","'.mysql_real_escape_string($Reponse).'")'; //Exécution de la requête $result = mysql_query($sql) OR die('<html><head><title>Erreur !</title></head><body><br><br><br><h1 align=\'center\'>Erreur à l\'insertion ! </h1><br>"'.mysql_error().'"<br><H2 align=center> Veuillez <a href=\'IndexC.php\'>recommencer !</a></h2></body></html>'); } } if($result == true) { // Récupération du dernier identifiant inséré par mysql $LastINsertedId = mysql_insert_id(); echo "<html><head> <title>Questionnaire inséré !</title></head><body> <center><br><br><br><h1>Vos réponses ont été enregistrées!</h1> <br> <a href='IndexC.php'>Répondre à un autre questionnaire</a><br></center>"; } // On quitte la connexion mysql_close(); ?> </div> </div> </body> </html>