Lien entre PHP et MySQL

Fermé
marlui Messages postés 58 Date d'inscription mercredi 26 septembre 2012 Statut Membre Dernière intervention 12 décembre 2012 - Modifié par marlui le 19/10/2012 à 08:47
marlui Messages postés 58 Date d'inscription mercredi 26 septembre 2012 Statut Membre Dernière intervention 12 décembre 2012 - 19 oct. 2012 à 16:29
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.
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.




A voir également:

4 réponses

Freedomsoul Messages postés 509 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 17 avril 2013 97
19 oct. 2012 à 11:15
bon alors je ne sais pas comment tu t'organises mais je vais te dire comment j'aurai procédé:

Dans ta base de données tu aurais en gros:

IdQuestion IdQuestionnaire Question

Quand tu affiches tes question le nom compoorteras l'id de la question

// Tu récupères toutes les questios d'un questionnaire

tu boucles en affichant les questions
exemple:
<p>Question n° <?php echo $data[IdQuestion]; ?> : <?php echo $data[Question]; ?><p/>
<input name="reponse[<?php echo $data[IdQuestion] ?>"/>

quand la validation est faite:

tu aura ton tableau reponse[] qui contiendra toutes reponse sous la forme
reponse[1] qui contient la reponse de la question 1

simple et pratique

pour ce qui est de l'insertion

si on considère que la personne possède un compte et qu'elle est donc connectée pour accéder au questionnaire, tu ajouterais son speudo / id pour que la personne puisse répondre une seule fois (bref c'est pas la question ici)

Donc, tu ajouteras dans une autre table nommé:

Nom RéponseQuestionnaire
qui contiendra :
[IdQuestionnaire] [ListeReponse] (toutes les réponses séparées par un caractère spécial ? dans l'ordre des idquestions ?

donc en gros tu stockes totues les réponses avec une insertions les info stocké dans ton tableau réponse biensur il faudra aussi passé l'id du questionnaire !

je pense que c'est la meilleur solution au niveau de la structure pour ce qui est des questionnaires
2
marlui Messages postés 58 Date d'inscription mercredi 26 septembre 2012 Statut Membre Dernière intervention 12 décembre 2012 1
19 oct. 2012 à 16:29
J'vais essayer. Merci beaucoup en tout cas :)
0
Freedomsoul Messages postés 509 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 17 avril 2013 97
19 oct. 2012 à 10:08
bon déjà

 '<td><input name="'.cReponse[$data['questId']].'" type=\'text\' size=\'40\'></td></tr>'; 


=>

'<td><input name="'.cReponse[$data['questId']].'" type="text"size="40"></td></tr>';

pour éviter les caracères d'échappement

ensuite pourrais-tu donner le / les erreur(s) exactes ?
1
marlui Messages postés 58 Date d'inscription mercredi 26 septembre 2012 Statut Membre Dernière intervention 12 décembre 2012 1
19 oct. 2012 à 09:48
SVP !! Besoin d'aide !
0
marlui Messages postés 58 Date d'inscription mercredi 26 septembre 2012 Statut Membre Dernière intervention 12 décembre 2012 1
19 oct. 2012 à 10:49
J'ai modifié cette ligne mais j'ai toujours la même erreur mais ce doit être une erreur avec les []. Car si je met :
'<td><input name="'.cReponse$data['questId'].'" type="text"size="40"></td></tr>';
Je n'ai plus l'erreur par contre ça ne passe pas quand même ..

Les autres erreurs :
1. Il ne reconnait pas la variable du numéro de la question : variable questId et j'en ai besoin dans la dernière page pour faire l'ajout dans la base de données.

Notice: Undefined variable: QuestId in C:\Users\mluisier\xampp\htdocs\Questionnaire\Client\insertReponseC.php on line 42

Notice: Undefined variable: data in C:\Users\mluisier\xampp\htdocs\Questionnaire\Client\insertReponseC.php on line 45

2. Ensuite si je met cette variable à une valeur au bol (pour tester le reste) et que j'ai par exemple 3 questions :
Participerez-vous ? Oui
Combien d'enfants ? 1
Comien d'adultes ? 2
Et bien puisque je fais une boucle, et qu'à chaque fois la réponse se met dans la même variable, il n'y a que la dernière réponse qui s'insert.
0