Lien PHP MySQL
Posté : 19 oct. 2012, 09:42
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 :
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. :
Voici ma page pour l'insertion :
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.
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.