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   -
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 :

<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> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name='cNom' type='text' size='20'/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
					<b>Prénom : </b> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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:

22 réponses

Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
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.
2
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
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 :
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 ;)
2
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
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.
2
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
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 ;)
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
J'avoue que je comprends pas pourquoi tu fais des tables view...
Pourquoi ne pas rester juste avec tes tblQuestion et tblReponse ?
1
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
Super maintenant on continue ;)

Page1 :
remplace :
<form action='insertReponseC.php' name='form_quest' method='GET'>
par :
<form action='insertReponseC.php?questId=<?php $Id; ?>' name='form_quest' method='GET'>

1
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
Le problème est que lorsque je passe à la page suivante il ne passe pas cette variable. L'URL est remplacé et devient :

http://localhost/questionnaire/Client/insertReponseC.php?cNom=jj+&cPrenom=kk&0=1&quest=Envoi+de+mes+r%E9ponses
0
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
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","")
0
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
Bon alors fait ceci :
Page1 :
remplace :
<form action='insertReponseC.php' name='form_quest' method='GET'>
par
<form action='insertReponseC.php' name='form_quest' method='GET'>
<input type="hidden" name="questId" value="<?php $Id; ?>" />
0
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
Nickel maintenant :
page2 :
remplace :
$IdQuest = $QuestId;
par :
$IdQuest = $_GET['questId'];

1
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
C'est fait mais j'ai cette erreur : Notice: Undefined index: QuestId in C:\Users\mluisier\xampp\htdocs\Questionnaire\Client\insertReponseC.php on line 35
0
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
Non en fait c'est bon, j'avais une majuscule de trop ..
0
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
Nickel :)
maintenant je te fais un petit truc pour les id...
D'ici 5min c'est bon je pense ;)
0
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
Ok.

Merci beaucoup en tout cas :)
0
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
En fait non, il faut que tu envoies via le formulaire le id de tblQuestion.
=>
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;
0
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
Ok je pense que ça devrait marcher :)
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>

1
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
Attend j'ai un soucis...
0
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
Dans ta page2, tu as mis cette requete :

$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) !!!
0
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
Oui je sais mais repId est la clé primaire et je l'ai mise en auto_increment ..

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 ..
0
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
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'].' ?>" />' ; 
}
0
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
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 :
<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.
1
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
Ok je vais tester ça alors :)
0
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
ça ne marche pas .. ça prend toujours le Id et pas le questId. Et si je met comme ça :
$sqlSelect = 'SELECT questId FROM tblQuestion WHERE tblQuestionnaire_quenId = "'.$Id.'";';
après je ne peux pas afficher la question .. :S
0
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
Ah oui pardon fais :
$sqlSelect = 'SELECT * FROM tblQuestion WHERE tblQuestionnaire_quenId = "'.$Id.'";';
0
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
Ok, maintenant j'ai ça comme message d'erreur :
Notice: Undefined variable: Id in C:\Users\mluisier\xampp\htdocs\Questionnaire1\Client\insertReponseC.php on line 37
0
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
Ok !
Page2 :
remplace :
$sqlSelect = 'SELECT questId FROM tblQuestion WHERE tblQuestionnaire_quenId = "'.$Id.'";';
par :
$sqlSelect = 'SELECT questId FROM tblQuestion WHERE tblQuestionnaire_quenId = "'.$IdQuen.'";';
0
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
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.
1
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
Essaye ceci : (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 = "'.$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à ;)
1
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci, ça fonctionne :)
Qu'as-tu à me dire ?
0
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
Ca fonctionne directement ? :D super (ca n'ecrit pas 3 fois Vos réponses ont été rajoutées ?)
0
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
Oui c'est cela la seconde page est insertReponseC.php

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.
0
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
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 ! :)
0
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
Oui je l'ai effectivement supprimée! ^^
0
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
Je t'envoie le script de ma base de données, ça sera peut-être plus simple ?
0
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
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 ..
0
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
Très bien mais je pense que tu n'en a pas besoin...
Tu peux faire la meme chose directement avec les tables tblQuestion et tblReponse ;)
0
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
Ok, donc je ferais comme ça l'affichage des questions :
$sqlSelect = 'SELECT * FROM tblQuestion WHERE quenId = "'.$Id.'";';
0
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
non !
$sqlSelect = 'SELECT * FROM tblQuestion WHERE questId = "'.$Id.'";';
0
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
Ce que je comprends pas, c'est :
$sqlSelect = 'SELECT * FROM tblQuestion WHERE questId = "'.$Id.'";';
ne peut te renvoyer qu'une seule question non ?
Vu que chaque question a un id different ?
0
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
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.
0
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
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
0
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
est-tu sûr que $_GET['n'] est différent de rien ?
0
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
Comment ça différent de rien ?

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>
0
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
D'accord mais dans ta page1 :
remplace :
$Id = $_GET['n'];
par :
$Id = $_GET['n'];
echo $Id;

Juste pour voir si il contient bien quelque chose ;)
Dis-moi ce que ca ecrit stp
0
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
Il écrit le numéro 1. C'est juste car je teste avec le premier questionnaire que j'ai inséré dans ma base de données.
0
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
ok donc
<input type="hidden" name="questId" value="<?php $Id; ?>" />
ne fonctionne pas oO
bizarre !
remplace la par :
<input type="hidden" name="questId" value="1" />
juste pour tester ;)
0
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
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 .. :)
0
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
Alors voilà ma première page (ou on fait l'insertion) :
(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> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name='cNom' type='text' size='20'/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
					<b>Prénom : </b> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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> 
0
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
Pour la deuxième page, la fin depuis
if($result == true)
n'est pas au bon endroit, elle devrait être dans la boucle while, dans le else. Mais comme je l'ai fait là, c'était pour un teste ..
0
Blunderer Messages postés 273 Date d'inscription   Statut Membre Dernière intervention   83
 
Par exemple, si on peut remplir 3 questions et qu'on remplisse 2/3 questions, tu veux mettre quoi comme erreur ? Tu veux quand meme remplir la base de données avec les deux questions ?
0
marlui Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
Non, je ne veux pas remplir la base de données. Je veux qu'il affiche le message d'erreur 'Vous n'avez pas remplit tous les champs' ..
0