Page 1 sur 1

Lien PHP MySQL

Posté : 19 oct. 2012, 09:42
par luimar
Bonjour,
Voilà, je dois faire un projet en PHP et MySQL qui servira à gérer et à répondre à des questionnaires. J'ai déjà réussi la première partie, celle pour gérer cela mais j'ai quelques problèmes pour envoyé les réponses du questionnaire des clients dans ma base de données.

J'ai donc d'abord une première page ou je peux choisir quel questionnaire je veux remplir :
<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 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="../index.php">Accueil</a></center></h2></div>  

                        <a href="IndexC.php">  
                        <div class="header"><h1 class="header"><center><img border="1" src="../Images/Logo_ChoixQuen.png"alt="FMV" width="900" height="200" /></center></h1></div></a>  
                        </br>  
                        </br>  
                        </br>  
                        <div class="content">  
                                <?php  
                                        // On se connecte à MySQL  
                                        $db = mysql_connect('localhost', 'root', pass');  
                                        if($db == false)  
                                        {  
                                                echo "Impossible de connecter à la base de données car ".mysql_error();  
                                        }  
                                        else  
                                        {   
                                                mysql_select_db("dbQuestionnaire", $db) OR die("Erreur mysql : ".mysql_error());  
                                        }  
                                          
                                        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>  
Cette page me sert donc à savoir quelles questions je dois afficher pour que l'utilisateur y réponde.
J'ai maintenant une deuxième page ou l'utilisateur peut voir les questions, y répondre et dois entrer son nom et son prénom (je veux éviter qu'une même personne puisse répondre deux fois. :


<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/Logo_Répondre.png"alt="FMV" width="900" height="200" /></center></h1></div></a>  
                        </br>  
                        </br>  
                        </br>  
                        <div class="content">  
                  
                                <?PHP  
                                        //On se connecte à mysql  
                                        $db = mysql_connect('localhost','root','pass');  
                                          
                                        if($db == false)  
                                        {  
                                                echo 'Impossible de se connecter à la base de données car : '.mysql_error();  
                                        }  
                                        else  
                                        {  
                                                mysql_select_db('dbQuestionnaire', $db) OR die('Erreur mysql :'.mysql_error());  
                                        }  
                                          
                                        // 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());  
                                          
                                        echo '<table border=30>';  
                                        while($data = mysql_fetch_array($reqSelect))  
                                        {  
                                                echo '<tr><td>'.$data['questQuestion'].'</td>';  
                                                echo '<td><input name="'.cReponse[$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> 
Jusque là tout va bien. Maintenant, l'utilisateur peut répondre aux questions mais lorsque j'envoie tout cela dans ma base de données, ça se gâte.

Voici ma page pour 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_Répondre.png"alt="FMV" width="900" height="200" /></center></h1></div></a>
			</br>
			</br>
			</br>
			<div class="content">
				<?PHP
					//On se connecte à mysql
					$db = mysql_connect('localhost','root','Pass');
					if($db == false)
					{
						echo 'Impossible de se connecter à la base de données car : '.mysql_error();
					}
					else
					{
						mysql_select_db('dbQuestionnaire',$db) OR die('Erreur mysql : '.mysql_error());
					}
						
					//Récupération de la variable
					$IdQuest = $QuestId;
					$Nom = $_GET['cNom'];
					$Prenom = $_GET['cPrenom'];
					$Reponse = $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>
Premièrement, J'ai un problème de [ ou ' dans la ligne : echo '<td><input name="'.cReponse[$data['questId']].'" type=\'text\' size=\'40\'></td></tr>';
Deuxièmement, puisque je fais une boucle, j'ai uniquement la dernière réponse qui se met dans la base de données.
Et, dernièrement, je n'arrive pas à sélectionner (reprendre la variable) pour le nombre de la question afin de l'insérer dans la base de données.

Merci d'avance.

Re: Lien PHP MySQL

Posté : 19 oct. 2012, 09:47
par Mazarini
Le premier problème que je trouve est sur la ligne : $db = mysql_connect('localhost', 'root', pass');
Il manque une quote, voir la coloration syntaxique de ton code dans le premier pavé.

Re: Lien PHP MySQL

Posté : 19 oct. 2012, 10:01
par luimar
Oui, j'ai fait une erreur en recopiant le code et modifiant le mot de passe mais sur mon code il y a ;)