IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Conception] Traitement de donnée (HTML/PHP/MySQL) ?


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Par défaut [Conception] Traitement de donnée (HTML/PHP/MySQL) ?
    Tout d'abord salut à tous !!!

    Mon souci est que je créer actuellement un questionnaire (genre teste de compétence), et qu'il me faut enregistrer les réponses saisie par l'utilisateur et les comparer afin de lui donner à la fin sa note.

    Pour vous éclairer :
    - Le questionnaire comporte 40 questions (donc 40 pages html).
    - C'est un QCM (Questionnaire Choix Multiple).

    Pour être un peu plus clair, si la question comporte 2 réponses et l'utilisateur en indique qu'une, il à faux.

    Mes questions :
    - Faut il créer un script pour chaque question ou un script dans une page séparé?
    - Pouvez vous m'aider à créer un type de script et m'éclairer?

    Voici une question du test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
       <head>
           <title>Question 01</title>
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     
       </head>
     
    <body>
     
    Quel est le débit maximal que l'ont peut atteindre avec un raccordement (numéris 2) double canal?
     
    <form method="post" action="">
       <fieldset>
           <legend>Question 01</legend> <!-- Titre du fieldset -->
     
                    <label><input type="checkbox" name="48" />48</label><br />
                    <label><input type="checkbox" name="64" />64</label><br />
                    <label><input type="checkbox" name="128" />128</label><br />
                    <label><input type="checkbox" name="256" />256</label><br />
                    <label><input type="checkbox" name="512" />512</label><br />
     
       </fieldset>
     
    <p>
            <input type="submit" value="Envoyer">
    </p>
     
    </form>
    </body>
     
    </html>
    (Je débute désolé )

    Merci d'avance de votre aide

  2. #2
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Tu peux stocker les réponses saisies dans les variable de session sinon tu vas galérer, et dans la page de traitement qui suit ta dernière page tu regardes ces variables pour donner un score. Si tes questions ne sont pas figées et sont dans une base ça va pas être pareil je pense.



    Au passage les up au bout de même pas une heure c'est pas trop autorisé...

  3. #3
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Par défaut
    Ok
    Donc il faut que je créer une sorte de session pour chaque utilisateur.

    Et pourrait tu si possible me donner un exemple qui me permettrait de m'éclairer, de ce que je doit mettre dans la page traitement (qui gèrerait les réponses), avec le bout de code plus haut.

    Merci d'avance

  4. #4
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Bah dans la page de traitement y'a rien de sorcier, tu as les valeurs saisies par l'utilisateur dans les variables de session, tu récupères les bonnes réponses je sais pas où (BDD ou fichier tu n'as pas dit comment tu faisais), tu compares et voilà.

    Maintenant si tu pouvais mettre toutes les questions sur la même page ça simplifierait grandement la chose...

  5. #5
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Par défaut
    Citation Envoyé par JWhite
    Bah dans la page de traitement y'a rien de sorcier, tu as les valeurs saisies par l'utilisateur dans les variables de session, tu récupères les bonnes réponses je sais pas où (BDD ou fichier tu n'as pas dit comment tu faisais), tu compares et voilà.
    Les réponse seront effectivement dans une BDD.


    Citation Envoyé par JWhite
    Maintenant si tu pouvais mettre toutes les questions sur la même page ça simplifierait grandement la chose...
    Mais pour sa je ne souhaite pas que l'utilisateur voit toutes les questions à la suite, mais qu'il puisse sélectionner la question via un lien.

  6. #6
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Citation Envoyé par mohashow
    Les réponse seront effectivement dans une BDD.


    Mais pour sa je ne souhaite pas que l'utilisateur voit toutes les questions à la suite, mais qu'il puisse sélectionner la question via un lien.
    Ah bah ça change tout alors, il te faut une seule page PHP pour toutes les questions, il suffit de passer en paramètre à cette page l'id de la question et le tour est joué, et quand l'utilisateur valide sa réponse tu mets à jour la variable de sessions associée à la réponse (ou dans un tableau ça serait encore plus propre) et tu reviens à la page avec les liens vers les questions.

  7. #7
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Par défaut
    Citation Envoyé par JWhite
    il suffit de passer en paramètre à cette page l'id de la question et le tour est joué, et quand l'utilisateur valide sa réponse tu mets à jour la variable de sessions associée à la réponse (ou dans un tableau ça serait encore plus propre) et tu reviens à la page avec les liens vers les questions.
    Désoler je suis un débutant, mais j'ai compris ce que tu voulait dire peut tu m'illustrer un exemple de code pour une question si possible?

    Exemple (Question 17):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
     
    <body>
     
    Quel sont les adresses IP valable?<br/>
     
    <form method="post" action="question_centrapel.php">
       <fieldset>
           <legend>Question 17</legend> <!-- Titre du fieldset -->
     
    		<label><input type="checkbox" name="10.2.2.0" />10.2.2.0</label><br /> <!-- réponse valable -->
    		<label><input type="checkbox" name="172.30.56.1" />172.30.56.1</label><br /> <!-- réponse valable -->
    		<label><input type="checkbox" name="192.120.2.254" />192.120.2.254</label><br /> <!-- réponse valable -->
    		<label><input type="checkbox" name="0.0.0.0" />0.0.0.1</label><br /> <!-- réponse non-valable -->
     
     
       </fieldset>
     
    <p>
     	<input type="submit" value="Envoyer">
    </p>
     
    </form>
     
    </body>


    Merci d'avance de ton aide c'est cool

  8. #8
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Par défaut
    Voici ce que je vient de faire :

    Questionnaire.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <html>
    <head>
    	<title>Question 1</title>
    </head>
    <body>
     
    Quel est le débit maximal que l'ont peut atteindre avec un raccordement (numéris 2) double canal?
     
    <form method="post" action="traitement.php">
       <fieldset>
           <legend>Question 01</legend> <!-- Titre du fieldset -->
     
    		<label><input type="checkbox" name="champ1" value="48"/>48</label><br />
    		<label><input type="checkbox" name="champ1" value="64"/>64</label><br />
    		<label><input type="checkbox" name="champ1" value="128"/>128</label><br />
    		<label><input type="checkbox" name="champ1" value="256"/>256</label><br />
    		<label><input type="checkbox" name="champ1" value="512"/>512</label><br />
     
       </fieldset>
     
    <p>
     	<input type="submit" value="Envoyer">
    </p>
     
    </form>
     
     
    </body>
    </html>
    traitement.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    <?php
     
    $Reponse .="Question 1 : ";
    $items = 5; //initialisation du nombre d'items possibles
    for ($i = 1; $i <= $items; $i++) { //boucle sur le nombre d'items
    $Reponse .= "$champ1[$i], "; //stockage des items choisis dans la variable Reponse
    }
     
    ?>
    Et je pense que je devrait faire sa pour chaque question

    Peut tu me dire ce qui va et ce qui va pas dans ce code?

    Merci à toi

  9. #9
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Mais tes questions sont dans une base ou pas ? Avec les choix possibles et la bonne réponse ?

    Parce que moi ce que je pensais en gros c'est ça :



    une page avec la liste des questions, pour chaque question on a un lien de la forme "question.php?id=X" avec X le numéro de la question

    une page question?php dans laquelle tu récupères l'id de la question demandée avec $_GET['id'], et tu vas chercher en base la question à afficher ainsi que les propositions, tu mets la question dans un formulaire avec un bouton de validation, et dans le ACTION de ce formulaire tu appelles une page traitement.php

    une page traitement.php qui récupère le choix de l'utilisateur et met ça dans une variable de session réponse par exemple, en faisant quelque chose comme $_SESSION['reponse'][id_question] = reponse, puis redirige vers la page avec la liste des questions à l'aide d'un header

    et sur la page avec la liste des questions, un lien quelque part pour terminer le questionnaire qui redirige vers une page dans laquelle tu regardes ce que tu as dans la variable de session, tu récupères les bonnes réponses en base, tu compares et tu fais ta sauce avec

  10. #10
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Par défaut
    Mes questions ne sont pas encore dans la BDD, mais je les inclure dans cette BDD.

    une page avec la liste des questions, pour chaque question on a un lien de la forme "question.php?id=X" avec X le numéro de la question
    Oui c'est effectivement que je souhaite.

    une page question?php dans laquelle tu récupères l'id de la question demandée avec $_GET['id'], et tu vas chercher en base la question à afficher ainsi que les propositions, tu mets la question dans un formulaire avec un bouton de validation, et dans le ACTION de ce formulaire tu appelles une page traitement.php

    une page traitement.php qui récupère le choix de l'utilisateur et met ça dans une variable de session réponse par exemple, en faisant quelque chose comme $_SESSION['reponse'][id_question] = reponse, puis redirige vers la page avec la liste des questions à l'aide d'un header
    Sa aussi m'intéresse pas mal.

    et sur la page avec la liste des questions, un lien quelque part pour terminer le questionnaire qui redirige vers une page dans laquelle tu regardes ce que tu as dans la variable de session, tu récupères les bonnes réponses en base, tu compares et tu fais ta sauce avec
    Et pour sa je compte faire un compte à rebours de 30mn.

  11. #11
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Par défaut
    Salut,

    Aurait tu un exemple de code (pour une question au moins) qui me permettré donc de traité la question et afin de la comparer avec la bdd.

    Merci a toi

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2007
    Messages : 247
    Par défaut page sommaire ??
    Bsr,

    j'arrive peut-être un peu tard... mais si je comprends bien, ce qui est proposé c'est de faire une page "sommaire" avec un lien pour chaque question ??
    >> dans ce cas cela signifie que le visiteur doit revenir à chaque fois sur cette page avant de poursuivre son questionnaire => comment gérer qu'il est bien passé sur toutes les questions (réalisable mais peut-être fastidieux!) ? et cela sous-entend également une vue aléatoire du questionnaire (alors pourquoi pas le générer soi-même ?) !

    Je m'explique : (en espérant avoir bien compris le sujet et apporter une idée intéressante)

    1- les questions se trouvent dans une bdd... je suppose donc que les réponses aussi (je me trompe ?) ; on va donc avoir une table de la forme col0=ID, col1=question, col2=nb_rep, col3=rep1, col4=rep2, etc...
    => avec ID=numérotation de 1 à 40 de chq ligne ;
    question : l'intitulé de la question ;
    nb_rep : le nb de réponse justes attendues ;
    rep1, rep2 : vrai/faux.

    2- disposons ensuite d'une page PHP incluant la boucle de traitement et la boucle d'affichage des questions...

    La boucle d'affichage : if($action="question")
    elle comprend 2 sous-boucles :
    if($_SESSION[Q]==40) { affichage des résultats obtenus }
    else{ elle va récupérer les données de la ligne $_SESSION[ID] dans la BDD et les afficher sous forme de formulaire...}

    La boucle de traitement : if($action="traitement")
    a- elle vérifie les données POST et les compare à la BDD (dans un premier temps, le nb de réponses cochées par le visiteur et le nb de réponses justes attendues, puis si ca correspond, s'il a cochées les bonnes)
    b- elle incrémente $_SESSION[result] et $SESSION[ID]

    Les variables :
    utilisons les variables de session (donc session_start() en première ligne !) ;

    $_SESSION[ID0] : cette variable va nous permettre de gérer le côté aléatoire. Juste après le "session_start()" on vérifie l'existence de cette variable et si elle n'existe pas (au premier appel de la page, en fait!) on la crée ! Avec "random()", on récupère un chiffre compris entre "1" et "40" et qui ne soit un multiple ni de "2" ni de "5". Cette variable sera la valeur de notre pas d'incrémentation pour passer d'une question à l'autre dans la BDD...

    $_SESSION[ID] : cette variable sera initialisée en même temps que la précédente mais sera incrémentée à la fin de la boucle de traitement de la valeur de $_SESSION[ID0]. $_SESSION[ID] nous donne le numéro de la ligne de la BDD à lire...

    $_SESSION[result] : toujours initialisée au même moment, cette variable comptabilisera le score du visiteur...

    $_SESSION[Q] : cette variable est initialisée à la valeur 1 et incrémenté d'un point à la fin de la boucle de traitement. elle nous permettra de savoir où on en est dans le questionnaire. grâce à elle on saura que toutes les questions auront été vues et qu'il faut donc afficher les résultats !

    $action : la fameuse variable qui nous permet de savoir dans quelle boucle on se trouve ! Au niveau de la boucle d'affichage, elle peut être définie soit dans la balise FORM (attribut "action=tapage.php?action=traitement") soit dans un champ HIDDEN ; dans la boucle de traitement, tu la mets dans l'url du header...

    IMPORTANT : l'initialisation des 4 variables $_SESSION se trouve dans une petite boucle placée de suite après le session_start() ; il suffit de vérifier l'existence de la première pour lancer ou ignorer la boucle !

  13. #13
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Par défaut
    Salut non tu n'arrive pas trop tard
    j'arrive peut-être un peu tard... mais si je comprends bien, ce qui est proposé c'est de faire une page "sommaire" avec un lien pour chaque question ??
    >> dans ce cas cela signifie que le visiteur doit revenir à chaque fois sur cette page avant de poursuivre son questionnaire => comment gérer qu'il est bien passé sur toutes les questions (réalisable mais peut-être fastidieux!) ? et cela sous-entend également une vue aléatoire du questionnaire (alors pourquoi pas le générer soi-même ?) !
    pour sa les questions seront toujours visible auprès de l'utilisateur même si il change de questions, enfaite il pourra même revenir sur les questions précédente, c'est à dire qu'il peut jongler sur les questions, vu que sa contrainte sera le temps (un compte a rebours de 30mn).

    les questions se trouvent dans une bdd... je suppose donc que les réponses aussi (je me trompe ?)
    Enfaite là il y aura dans la base de donnée que les réponses et c'est avec celle là que je pourrait comparer les réponses de l'utilisateur.


    Merci bcp de ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [HTML][PHP][MySQL]Image stockée en DB+ spécification de la taille
    Par hubeaul dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 07/06/2007, 20h32
  2. Réponses: 4
    Dernier message: 30/03/2007, 18h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo