Insérer les réponses d'un questionnaire dans une bd en PHP
Blunderer Messages postés 273 Date d'inscription Statut Membre Dernière intervention -
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
- Insérer les réponses d'un questionnaire dans une bd en PHP
- Insérer un espace insécable dans word - Guide
- Insérer une vidéo dans un powerpoint - Guide
- Insérer une signature dans word - Guide
- Insérer une légende word - Guide
- Comment insérer un filigrane dans word - Guide
22 réponses
- 1
- 2
Le problème porte sur l’insertion des réponses dans la base de données via PHP et MySQL, avec des notices d’undefined variable QuestId et i, ce qui empêche l’enregistrement des réponses.
Les meilleures interventions proposent de supprimer le décompte superflu des questions, puis d’utiliser une clé identifiant unique (questId ou quenId) comme nom des champs et comme référence pour l’insertion.
Il est aussi recommandé d transmettre l’ID du questionnaire via un champ caché, puis de récupérer les IDs des questions pour construire les requêtes INSERT avec mysql_real_escape_string.
D’autres échanges soulignent qu’il faut lier tblReponse et vQuestions par les identifiants des questions et éviter les boucles imbriquées, afin d’enregistrer correctement chaque réponse associée à sa question.
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.
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 ;)
$sqlCompte = 'SELECT COUNT(*) FROM vQuestion WHERE quenId = "'.$Id.'";';
elle ne sert plus à rien ;)
Maintenant, je suis.
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 questionPourquoi ne pas rester juste avec tes tblQuestion et tblReponse ?
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 ma requête est : INSERT INTO tblReponse(tblQuestion_questId, repNom, repPrenom, repReponse) VALUES (,"jj ","kk","")
=>
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;
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>
$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) !!!
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 ..
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'].' ?>" />' ;
}
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.
Et remet le sujet en non-résolu ;)
Maintenant, je suis.
<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à ;)
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.
http://localhost/questionnaire/Client/insertReponseC.php?questId=&cNom=ww&cPrenom=ww&0=1&quest=Envoi+de+mes+r%E9ponses
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>
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 .. :)
(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>
- 1
- 2