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

Requêtes MySQL Discussion :

Comment créer un QCM en php/mysql?


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Comment créer un QCM en php/mysql?
    Salut,

    j aimerai creer un QCM , où il y a 250 questions au total ,

    je voudrais qu'a chaque fois que je lance un QCM ,il me sort aleatoirement 50 questions en un temps determiné

    je voudrais savoir quel est la meilleur facon de proceder?

    est-il vraiment interessant de mettre les questions dans mysql? et comment faire alors?

    est-ce que je dois faire un formulaire pour chaque question? je donne un N° au form et je fais un random pour sortir les formulaires a la suite

    merci pour votre aide

  2. #2
    Futur Membre du Club
    Salut,
    Alors, oui, tu peux stocker ça dans mysql et c'est mieux
    Pour ton formulaire, utilise une requete avec RAND() en selectionnant 50 questions. Là dessus, tu donnes pour chaque case le numero de la question, et tu utilises un eachpost() pour vérifier chaque question une par une

  3. #3
    Membre éprouvé
    Hi!
    avec tes question stocké dan ta bdd ca semble plus logic surtout si tu veux en sortir aléatoirement...dans une petite boucle tu vas pouvoir utiliser les clé de tes champs pour sortir tes question et les faire afficher a l'écran

    Si tu ne souhaite pas utiliser de bdd je crois que ca va etre bcp plus lourd a traiter comme information
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  4. #4
    Membre habitué
    si je peux utilisé un bdd pas de pb ,
    seulement je voulais avoir des avis exterieur

    ok j insere mes question dans ma bdd et pour les reponses comment savoir c la bonne reponse pour la bonne question donc faire par exemple 3 tables:

    - 1 table question
    - 1 table reponse
    - 1 table resultat (ou je fais le lien entre la question et le resultat)

    qu est ce que vous en pensez?

  5. #5
    Membre éprouvé
    moi je dirais une table question
    et une table réponse

    si une question peut avoir plus d'une réponse alors c'est une relation N:M il te faut 3 table

    donc:
    tblQuestions:
    questionID ->int (primary,auto-incremente)
    question ->varChar
    reponseID (si 2 tables)

    tblRéponse
    reponseID ->int(primary,auto-incremente)
    reponse ->varchar

    Si 3 table
    la 3e est comme ca

    tblQuestionReponse
    questionReponseID (primary, auto-increment)
    questionID
    reponseID
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  6. #6
    Membre à l'essai
    QCM_php
    Je travail sur un projet de création de QCM en PHP. Je stocke tous les QCM dans une base MySQL.

    Mes tables sont les suivantes :

    qcm_questionnaire : liste des questionnaires
    qcm_question : liste des questions de chaque questionnaire
    qcm_choix : liste des choix de réponse possible à chaque question
    qcm_reponse : liste des reponses à une question avec identification de l'utilisateur ayant fait la réponse
    qcm_utilisateur : liste des utilisateurs
    qcm_theme : arborescence des thèmes (voir la représentation intervallaire des arborescences)
    qcm_auteur : liste des utilisateurs auteurs de QCM dans chaque theme.

    Rentrons maintenant dans le détail de chacune des tables et de leur relations :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    Table qcm_questionnaire :
    idquestionnaire -> identifiant
    visible -> suppression logique
    idtheme_rel -> classement du questionnaire dans l'arborescence des thèmes
    titre
    intitule         
    tempsminimum -> en dessous de ce temps les utilisateurs ont le maximum de point(s) (application d'un facteur à leur score en fonction du temps de réponse)
    tempsmaximum -> au dessus de ce temps les utilisateurs ont le minimum de point(s) (application d'un facteur à leur score en fonction du temps de réponse)
    niveau -> niveau de difficulté du QCM
    idutilisateur_auteur_rel -> relation avec la table utilisateur pour savoir qui a créé le questionnaire
    validation -> un 'validateur' vérifie le questionnaire et le rend accessible aux utilisateur en le validant
    idutilisateur_validateur_rel -> relation avec la table utilisateur pour savoir qui a  validé le questionnaire
    datecreation  
    datevalidation 
    textevalidation -> justification textuelle de la validation ou invalidation du questionnaire
     
    Table qcm_question :
    idquestion -> identifiant
    visible  -> suppression logique
    idquestionnaire_rel  -> identifiant du questionnaire d'appartenance de la question
    ordre -> ordre d'affichage de la question dans le questionnaire
    titre        
    intitule        
    solution -> texte affiché lorsque l'utilisateur a répondu      
    type -> type de choix possible : 
    <ol class="decimal"><li style="">unique : bouton radio</li><li style="">unique_liste : liste de choix à sélection unique</li><li style="">multiple : checkbox</li><li style="">multiple_liste : liste de choix à sélection multiple</li><li style="">mot : champ texte</li><li style="">texte : champ bloc note (rédaction d'une réponse longue)</li></ol>
    niveau ->niveau de difficulté de la question
    idutilisateur_auteur_rel   
    validation
    idutilisateur_validateur_rel 
    datecreation
    datevalidation   
    textevalidation
     
    Table qcm_choix :
    idchoix
    visible
    idquestion_rel -> identifiant de la question à laquelle se réfère le choix de réponse
    titre -> 1ere partie du libelle du choix de réponse à la question
    intitule -> 2eme partie du libelle du choix de réponse à la question
    vraifaux -> réponse vrai : 1 fausse : 0
    valeur -> score attribué pour ce choix (valeur négative et positive)
     
     
    Table qcm_reponse :
    idreponse 
    visible
    idutilisateur_rel -> identifiant de l'utilisateur ayant répondu à la question 
    idchoix_rel -> si la question est de type unique, unique_liste, multiple ou multiple_liste, identifiant du choix de réponse retenu par l'utilisateur
    datereponse
    mot  -> si la question est de type mot, mot de réponse de l'utilisateur
    texte -> si la question est de type texte, texte de réponse de l'utilisateur
    idutilisateur_correcteur_rel -> si la question est de type mot ou texte, identifiant de l'utilisateur correcteur de la question
    datecorrection  
    textecorrection
    idquestion_rel -> identifiant de la question correspondante (cf. <a href="http://www.developpez.net/forums/showthread.php?t=204948" target="_blank">Recherche d'une question sans réponse dans un QCM</a>)


    Je peux décrire les autres tables si vous le souhaitez mais elles ne sont pas nécessaires à la compréhension du système de QCM. Je peux aussi prendre le temps d'expliquer comment je conçois plus en détail l'utilisation de ces tables si vous le souhaitez.

    J'espère que cette exemple sera utile à votre réflexion.

  7. #7
    Membre éprouvé
    mais la...t'as une question qui vas avec ta description de table ou??
    c'est une vérification de tes tables que tu souhaite faire?
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  8. #8
    Membre à l'essai
    Non, je n'ai pas de question. Je réponds à la question initiale qui est comment créer un QCM en PHP, en proposant l'exemple de ma propre expérience en la matière.

    Merci tout de même pour l'intéret porté aux messages sur le forum. C'est bien de savoir qu'il y a des personnes pretent à répondre aux questions qui ne sont pas posées

  9. #9
    Membre à l'essai
    Citation Envoyé par megapacman Voir le message
    si je peux utilisé un bdd pas de pb ,
    seulement je voulais avoir des avis exterieur

    ok j insere mes question dans ma bdd et pour les reponses comment savoir c la bonne reponse pour la bonne question donc faire par exemple 3 tables:

    - 1 table question
    - 1 table reponse
    - 1 table resultat (ou je fais le lien entre la question et le resultat)

    qu est ce que vous en pensez?
    Tu n'est pas obligé d'utlisier la base de donné tu peut juste utliser un code HTML ou php pour faire un QCM
    Mais tu sera besoin besoin de la base aprés une fois besoin de stocker les résultats.

  10. #10
    Candidat au Club
    Bonjour Eternel7, etes vous encore sur developpez.com?
    Citation Envoyé par eternel7 Voir le message
    Je travail sur un projet de création de QCM en PHP. Je stocke tous les QCM dans une base MySQL.

    Mes tables sont les suivantes :

    qcm_questionnaire : liste des questionnaires
    qcm_question : liste des questions de chaque questionnaire
    qcm_choix : liste des choix de réponse possible à chaque question
    qcm_reponse : liste des reponses à une question avec identification de l'utilisateur ayant fait la réponse
    qcm_utilisateur : liste des utilisateurs
    qcm_theme : arborescence des thèmes (voir la représentation intervallaire des arborescences)
    qcm_auteur : liste des utilisateurs auteurs de QCM dans chaque theme.

    Rentrons maintenant dans le détail de chacune des tables et de leur relations :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    Table qcm_questionnaire :
    idquestionnaire -> identifiant
    visible -> suppression logique
    idtheme_rel -> classement du questionnaire dans l'arborescence des thèmes
    titre
    intitule         
    tempsminimum -> en dessous de ce temps les utilisateurs ont le maximum de point(s) (application d'un facteur à leur score en fonction du temps de réponse)
    tempsmaximum -> au dessus de ce temps les utilisateurs ont le minimum de point(s) (application d'un facteur à leur score en fonction du temps de réponse)
    niveau -> niveau de difficulté du QCM
    idutilisateur_auteur_rel -> relation avec la table utilisateur pour savoir qui a créé le questionnaire
    validation -> un 'validateur' vérifie le questionnaire et le rend accessible aux utilisateur en le validant
    idutilisateur_validateur_rel -> relation avec la table utilisateur pour savoir qui a  validé le questionnaire
    datecreation  
    datevalidation 
    textevalidation -> justification textuelle de la validation ou invalidation du questionnaire
     
    Table qcm_question :
    idquestion -> identifiant
    visible  -> suppression logique
    idquestionnaire_rel  -> identifiant du questionnaire d'appartenance de la question
    ordre -> ordre d'affichage de la question dans le questionnaire
    titre        
    intitule        
    solution -> texte affiché lorsque l'utilisateur a répondu      
    type -> type de choix possible : 
    <ol class="decimal"><li style="">unique : bouton radio</li><li style="">unique_liste : liste de choix à sélection unique</li><li style="">multiple : checkbox</li><li style="">multiple_liste : liste de choix à sélection multiple</li><li style="">mot : champ texte</li><li style="">texte : champ bloc note (rédaction d'une réponse longue)</li></ol>
    niveau ->niveau de difficulté de la question
    idutilisateur_auteur_rel   
    validation
    idutilisateur_validateur_rel 
    datecreation
    datevalidation   
    textevalidation
     
    Table qcm_choix :
    idchoix
    visible
    idquestion_rel -> identifiant de la question à laquelle se réfère le choix de réponse
    titre -> 1ere partie du libelle du choix de réponse à la question
    intitule -> 2eme partie du libelle du choix de réponse à la question
    vraifaux -> réponse vrai : 1 fausse : 0
    valeur -> score attribué pour ce choix (valeur négative et positive)
     
     
    Table qcm_reponse :
    idreponse 
    visible
    idutilisateur_rel -> identifiant de l'utilisateur ayant répondu à la question 
    idchoix_rel -> si la question est de type unique, unique_liste, multiple ou multiple_liste, identifiant du choix de réponse retenu par l'utilisateur
    datereponse
    mot  -> si la question est de type mot, mot de réponse de l'utilisateur
    texte -> si la question est de type texte, texte de réponse de l'utilisateur
    idutilisateur_correcteur_rel -> si la question est de type mot ou texte, identifiant de l'utilisateur correcteur de la question
    datecorrection  
    textecorrection
    idquestion_rel -> identifiant de la question correspondante (cf. <a href="http://www.developpez.net/forums/showthread.php?t=204948" target="_blank">Recherche d'une question sans réponse dans un QCM</a>)


    Je peux décrire les autres tables si vous le souhaitez mais elles ne sont pas nécessaires à la compréhension du système de QCM. Je peux aussi prendre le temps d'expliquer comment je conçois plus en détail l'utilisation de ces tables si vous le souhaitez.

    J'espère que cette exemple sera utile à votre réflexion.

  11. #11
    Candidat au Club
    Bonjour Eternel7, etes vous encore sur developpez.com?
    si oui vos explications m’intéressent beaucoup je suis vraiment dans l'ennui pour un qcm

    Merci par avance pour votre réponse

  12. #12
    Expert éminent sénior
    Pour en avoir le coeur net, il suffit de cliquer sur son nom, puis "voir ses messages" et vous constaterez que sa dernière contribution date de 2007...
    Par contre, rien ne vous empêche de créer un nouveau sujet pour poser vos questions.
    Ce sera beaucoup plus efficace que de rebondir sur un sujet antédiluvien dont la solution a été trouvée dans un contexte qui n'est de toutes façon plus applicable et dont les contributeurs se sont perdus dans les limbes

###raw>template_hook.ano_emploi###