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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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
    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

  8. #8
    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 !

  9. #9
    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