Insérer les réponses d'un questionnaire dans une bd en PHP

Fermé
marlui Messages postés 58 Date d'inscription mercredi 26 septembre 2012 Statut Membre Dernière intervention 12 décembre 2012 - 2 nov. 2012 à 09:48
Blunderer Messages postés 273 Date d'inscription mardi 17 juillet 2012 Statut Membre Dernière intervention 6 décembre 2012 - 21 nov. 2012 à 11:19
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

marlui Messages postés 58 Date d'inscription mercredi 26 septembre 2012 Statut Membre Dernière intervention 12 décembre 2012 1
16 nov. 2012 à 10:13
Non, non, c'est tout bon :)
0
Blunderer Messages postés 273 Date d'inscription mardi 17 juillet 2012 Statut Membre Dernière intervention 6 décembre 2012 83
16 nov. 2012 à 10:27
Ok je te réponds dans 1h je dois bouger dsl :)
0
marlui Messages postés 58 Date d'inscription mercredi 26 septembre 2012 Statut Membre Dernière intervention 12 décembre 2012 1
16 nov. 2012 à 10:32
Dak, pas de soucis :)
0
marlui Messages postés 58 Date d'inscription mercredi 26 septembre 2012 Statut Membre Dernière intervention 12 décembre 2012 1
16 nov. 2012 à 11:22
En fait c'est pas vrai, il y a un truc que ne va pas .. Tout fonctionne pour l'utilisateur sauf que ça ne s'insère pas dans la base de données..
0
Blunderer Messages postés 273 Date d'inscription mardi 17 juillet 2012 Statut Membre Dernière intervention 6 décembre 2012 83
18 nov. 2012 à 20:30
Et là ? (page 2)

<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)
     {
     $sqlSelect2 = 'SELECT questId FROM tblQuestion WHERE tblQuestionnaire_quenId = "'.$IdQuen.'";'; 
     $reqSelect2 = mysql_query($sqlSelect2) OR die ('Erreur SQL !<br>'.$sqlSelect2.'<br>'.mysql_error()); 
      while($data2 = mysql_fetch_array($reqSelect2)) 
      {
       //Requête sql INSERT INTO 
       $sql = 'INSERT INTO tblReponse(tblQuestion_questId, repNom, repPrenom, repReponse) VALUES ("'.$data2['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> 

0
Blunderer Messages postés 273 Date d'inscription mardi 17 juillet 2012 Statut Membre Dernière intervention 6 décembre 2012 83
21 nov. 2012 à 11:19
Des news ? :)
0