begin process at 2010 02 10 09:11:25
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Formulaire

 > QUESTIONNAIRE SUPPORTANT DIFF. TYPES DE QUESTIONS

QUESTIONNAIRE SUPPORTANT DIFF. TYPES DE QUESTIONS


 Information sur la source

Note :
6,33 / 10 - par 3 personnes
6,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Formulaire Classé sous :questionnaire, quiz, choix, multiples, question Niveau :Initié Date de création :31/12/2005 Date de mise à jour :04/11/2009 20:14:31 Vu / téléchargé :18 807 / 731

Auteur : PhiL666

Ecrire un message privé
Site perso
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Voici un questionnaire personnalisable(j'espère) qui supporte différents types de questions à la fois :
choix multiples, Vrai ou Faux, Avec Saisie, ...

la partie à modifier pour l'utiliser, cest avec le tableau questions (v Voici la struct. d'une question v)
questions[0] = new Array() <-- Création du tableau
    questions[0][0]  = "Quelle album le groupe Metallica a sorti en 1986 ?"; <-- La question
    questions[0][1]  = "Master of the Puppets,...And Justice for All,Reload"; <-- La réponse ou les choix
    questions[0][2]  = "0"; <-- Le ou les bon(s) choix (optionnel)

En regardant l'exemple, vous devriez tout comprendre...

Source

  • <HTML>
  • <HEAD>
  • <TITLE>Questionnaire</TITLE>
  • <SCRIPT language="Javascript" type="text/javascript">
  • var aff_courant;
  • var nbFaites = 0;
  • var correction_auto = 1; //Possibilité de revenir en arrière (0)
  • var separateur = ","; //Séparateurs des choix de réponse
  • function init() //Initialisation
  • {
  • nbFaites = 0;
  • aff_courant = 0;
  • affichage(aff_courant);
  • document.getElementById("btnPrec").disabled = true;
  • document.getElementById("btnSuiv").disabled = false;
  • }
  • //Données Question, Choix de réponses
  • questions = new Array()
  • questions[0] = new Array() //Questions à choix multiples
  • questions[0][0] = "Quel album le groupe Metallica a sorti en 1986 ?";
  • questions[0][1] = "Master of the Puppets,...And Justice for All,Reload";
  • questions[0][2] = "0";
  • questions[1] = new Array() //Question à saisie de texte
  • questions[1][0] = "Quel groupe a composé la chanson ''Hellbound''?";
  • questions[1][1] = "Pantera";
  • questions[2] = new Array() //Questions à choix combinés
  • questions[2][0] = "Lesquels de ces albums sont de AC/DC?";
  • questions[2][1] = "T.N.T.,Back in White,Highway to Hell";
  • questions[2][2] = "0,2";
  • questions[3] = new Array() //Vrai-Faux
  • questions[3][0] = "Ce script a été conçu par Philippe A****.";
  • questions[3][1] = "Vrai,Faux";
  • questions[3][2] = "0";
  • reponses = new Array()
  • function affichage(index) //Changement de l'affichage d'une question
  • {
  • //Affichage du numero de question
  • titre = "<H4>Question " + (index + 1) + " de " + (questions.length) + "</H4>";
  • document.getElementById("question").innerHTML = titre;
  • var main;
  • main = "<LI> " + questions[index][0] + "</LI><BR>";
  • //Affichage des choix ou texbox
  • choix = questions[index][1].split(separateur);
  • if (choix.length > 1) //Si il y a plusieurs choix
  • {
  • if (questions[index][2].split(separateur).length>1) //S'il y a plus d'un élément à choisir
  • {
  • for (x=0;x<choix.length;x++)
  • {
  • main += "<INPUT type='checkbox' id='rep" + x + "' value='"+x+"'> " + choix[x] + "<BR>";
  • }
  • }
  • else //S'il y a un seul élément à choisir
  • {
  • for (x=0;x<choix.length;x++)
  • {
  • main += "<INPUT type='radio' name='rep' id='rep"+x+"' value='"+x+"'";
  • if (x == 0) //Le choix selectionné par default est le 1er
  • {
  • main += " checked";
  • }
  • main += "> " + choix[x] + "<BR>";
  • }
  • }
  • }
  • else //Dans le cas d'une réponse courte
  • {
  • main += "<INPUT type='text' id='reponse'>";
  • }
  • document.getElementById("main").innerHTML = main;
  • rafraichir_details("courrant");
  • }
  • function aff_resultat()//Afichage des résultats
  • {
  • //Affichage du Titre
  • titre = "<H4>Résultats</H4>";
  • document.getElementById("question").innerHTML = titre;
  • var main;
  • main = "<TABLE border='1' cellpadding='5' cellspacing='0'>";
  • main += "<TR>";
  • main += "<TD><B>Vos Réponses</B></TD> <TD><B>Les Réponses</B></TD>";
  • main += "</TR>";
  • for (x=0;x<reponses.length;x++) //Affichage Question-Réponse
  • {
  • //Affichage de la question
  • main += "<TR><TD colspan='2'><I>"+(x+1)+". "+(questions[x][0])+"</I></TD></TR>";
  • main += "<TR>";
  • main += "<TD><B>";
  • //Affichage des réponses entrées
  • if (questions[x].length > 2)
  • {
  • numeros1 = reponses[x].split(separateur)
  • textes = questions[x][1].split(separateur)
  • for (y=0;y<numeros1.length;y++)
  • {
  • main += textes[numeros1[y]] + ", "
  • }
  • main = main.substring(0,main.length-2);
  • main += "</B></TD> <TD><B>"
  • numeros2 = questions[x][questions[x].length-1].split(separateur)
  • for (y=0;y<numeros2.length;y++)
  • {
  • main += textes[numeros2[y]] + ", "
  • }
  • main = main.substring(0,main.length-2);
  • }
  • else //Affichage à coté de la bonne réponse
  • {
  • if (reponses[x] == "") reponses[x]='""';
  • main += reponses[x] + "</B></TD> <TD><B>" + questions[x][questions[x].length-1]
  • }
  • main += "</B></TD>";
  • main += "</TR>";
  • }
  • main += "</TABLE>";
  • main += "<BR><INPUT type='button' value='Recommencer' onclick='init()'>"
  • document.getElementById("main").innerHTML = main; //Copie du code dans le div Main
  • rafraichir_details("final");
  • }
  • function rafraichir_details(moment) // Rafrachis les informations dans la barre du bas
  • {
  • if (aff_courant > nbFaites)
  • {
  • nbFaites = aff_courant
  • }
  • nbBonneRep = 0;
  • if (correction_auto == 1 || moment == "final")
  • {
  • for (x=0;x<nbFaites;x++)
  • {
  • if (reponses[x] == questions[x][(questions[x].length-1)]) //Addition des bonne réponses
  • {
  • nbBonneRep += 1
  • }
  • }
  • var details;
  • details = "Score " + moment + " : " + nbBonneRep + " / " + nbFaites;
  • if (aff_courant != 0)
  • {
  • details += " (" + Math.round((nbBonneRep/nbFaites*100)*10)/10 + "%)";
  • }
  • }
  • else //dans le cas d'une correction non-automatic le résultat n'est pas affiché
  • {
  • details = " ";
  • }
  • document.getElementById("details").innerHTML = details;
  • }
  • function suiv() //Bouton Suivant
  • {
  • enregistre_rep()
  • if (aff_courant < questions.length - 1)
  • {
  • aff_courant += 1; //Changement du compteur de la question courrante
  • affichage(aff_courant); //Changement de l'affichage de la question
  • if (correction_auto == 1)
  • {
  • document.getElementById("btnPrec").disabled = true;
  • }
  • else //Dans le cas où la correction nest pas automatisé, l'utilisateur peut tjrs revenir à la question précédente
  • {
  • document.getElementById("btnPrec").disabled = false;
  • }
  • }
  • else if (aff_courant == questions.length-1)//S'il s'agit de la dernière question les 2 boutons sont bloqués
  • {
  • aff_courant += 1;
  • aff_resultat();
  • document.getElementById("btnPrec").disabled = true;
  • document.getElementById("btnSuiv").disabled = true;
  • }
  • }
  • function prec() //Bouton Précédant
  • {
  • enregistre_rep()
  • if (aff_courant > -1)
  • {
  • aff_courant -= 1; //Changement du compteur de la question courrante
  • affichage(aff_courant); //Changement de l'affichage de la question
  • document.getElementById("btnSuiv").disabled = false;
  • if (aff_courant == 0)
  • {
  • document.getElementById("btnPrec").disabled = true;
  • }
  • }
  • }
  • function enregistre_rep() //Enregistrement des réponses saises ...
  • {
  • rep = "";
  • if (aff_courant != questions.length)
  • {
  • choix = questions[aff_courant][1].split(separateur);
  • if (choix.length > 1)
  • {
  • for (x=0;x<choix.length;x++) //Ajout de ou des l'index des réponses
  • {
  • if (document.getElementById("rep"+x).checked)
  • {
  • rep += x + ",";
  • }
  • }
  • rep = rep.substring(0,rep.length-1); //Enleve la vergule de trop
  • }
  • else
  • {
  • rep += document.getElementById("reponse").value
  • }
  • reponses[aff_courant] = rep //Stockage de la réponse
  • }
  • }
  • </SCRIPT>
  • </HEAD>
  • <BODY onload="init();">
  • <FORM name="form">
  • <TABLE width="50%" border="0">
  • <TR>
  • <TD colspan="3"><DIV id="question"></DIV></TD>
  • </TR>
  • <TR>
  • <TD colspan="3"><HR></TD>
  • </TR>
  • <TR>
  • <TD><INPUT type="button" id="btnPrec" value="<" onclick="prec();" disabled="true"></TD>
  • <TD><DIV id="main"></DIV></TD>
  • <TD align="right"><INPUT type="button" id="btnSuiv" value=">" onclick="suiv();"></TD>
  • </TR>
  • <TR>
  • <TD colspan="3"><HR></TD>
  • </TR>
  • <TR>
  • <TD colspan="3"><DIV id="details"></DIV></TD>
  • </TR>
  • </TABLE>
  • </FORM>
  • </BODY>
  • </HTML>
<HTML>
<HEAD>
    <TITLE>Questionnaire</TITLE>

<SCRIPT language="Javascript" type="text/javascript">

    var aff_courant;
    var nbFaites = 0;
    
    var correction_auto = 1; //Possibilité de revenir en arrière (0)
    var separateur = ","; //Séparateurs des choix de réponse
    
    function init() //Initialisation
    {
        nbFaites = 0;
        aff_courant = 0;
        affichage(aff_courant);
        document.getElementById("btnPrec").disabled = true;
        document.getElementById("btnSuiv").disabled = false;
    }
    
    //Données Question, Choix de réponses
    questions = new Array()
    questions[0] = new Array() //Questions à choix multiples
        questions[0][0]  = "Quel album le groupe Metallica a sorti en 1986 ?";
        questions[0][1]  = "Master of the Puppets,...And Justice for All,Reload";
        questions[0][2]  = "0";
    questions[1] = new Array() //Question à saisie de texte
        questions[1][0]  = "Quel groupe a composé la chanson ''Hellbound''?";
        questions[1][1]  = "Pantera";
    questions[2] = new Array() //Questions à choix combinés
        questions[2][0]  = "Lesquels de ces albums sont de AC/DC?";
        questions[2][1]  = "T.N.T.,Back in White,Highway to Hell";
        questions[2][2]  = "0,2";
    questions[3] = new Array() //Vrai-Faux
        questions[3][0]  = "Ce script a été conçu par Philippe A****.";
        questions[3][1]  = "Vrai,Faux";
        questions[3][2]  = "0";
    
    reponses = new Array()
   
    function affichage(index) //Changement de l'affichage d'une question
    {
        //Affichage du numero de question
        titre = "<H4>Question " + (index + 1) + " de " + (questions.length) + "</H4>";
        document.getElementById("question").innerHTML = titre;
        
        var main;
        main = "<LI> " + questions[index][0] + "</LI><BR>";
        
        //Affichage des choix ou texbox
        
        choix = questions[index][1].split(separateur);
        if (choix.length > 1) //Si il y a plusieurs choix
        {
            if (questions[index][2].split(separateur).length>1) //S'il y a plus d'un élément à choisir
            {
                for (x=0;x<choix.length;x++)
                {
                    main += "<INPUT type='checkbox' id='rep" + x + "' value='"+x+"'> " + choix[x] + "<BR>";
                }
            }
            else //S'il y a un seul élément à choisir
            {
                for (x=0;x<choix.length;x++)
                {
                    main += "<INPUT type='radio' name='rep' id='rep"+x+"' value='"+x+"'";
                    if (x == 0) //Le choix selectionné par default est le 1er
                    {
                        main += " checked";
                    }
                    main += "> " + choix[x] + "<BR>";
                }
            }
        }
        else //Dans le cas d'une réponse courte
        {
                main += "<INPUT type='text' id='reponse'>";
        }
        document.getElementById("main").innerHTML = main;
        
        rafraichir_details("courrant");
    }
    function aff_resultat()//Afichage des résultats
    {
        //Affichage du Titre
        titre = "<H4>Résultats</H4>";
        document.getElementById("question").innerHTML = titre;
        var main;
        main = "<TABLE border='1' cellpadding='5' cellspacing='0'>";
        main += "<TR>";
        main += "<TD><B>Vos Réponses</B></TD>  <TD><B>Les Réponses</B></TD>";
        main += "</TR>";

        for (x=0;x<reponses.length;x++) //Affichage Question-Réponse
        {
            //Affichage de la question
            main += "<TR><TD colspan='2'><I>"+(x+1)+". "+(questions[x][0])+"</I></TD></TR>";
            main += "<TR>";
            main += "<TD><B>";
            
            //Affichage des réponses entrées
            if (questions[x].length > 2)
            {
                numeros1 = reponses[x].split(separateur)
                textes = questions[x][1].split(separateur)
                for (y=0;y<numeros1.length;y++)
                {
                    main += textes[numeros1[y]] + ", "
                }
                main = main.substring(0,main.length-2);
                main += "</B></TD>  <TD><B>"
                
                numeros2 = questions[x][questions[x].length-1].split(separateur)
                for (y=0;y<numeros2.length;y++)
                {
                    main += textes[numeros2[y]] + ", "
                }
                main = main.substring(0,main.length-2);
            }
            else //Affichage à coté de la bonne réponse
            {
                if (reponses[x] == "") reponses[x]='""';
                main += reponses[x] + "</B></TD>  <TD><B>" + questions[x][questions[x].length-1]
            }
            main += "</B></TD>";
            main += "</TR>";
        }
        main += "</TABLE>";
        main += "<BR><INPUT type='button' value='Recommencer' onclick='init()'>"
        document.getElementById("main").innerHTML = main; //Copie du code dans le div Main
        
        rafraichir_details("final");
    }
    function rafraichir_details(moment) // Rafrachis les informations dans la barre du bas
    {
        if (aff_courant > nbFaites)
        {
            nbFaites = aff_courant
        }
        nbBonneRep = 0;
        if (correction_auto == 1 || moment == "final")
        {
            for (x=0;x<nbFaites;x++)
            {
                if (reponses[x] == questions[x][(questions[x].length-1)]) //Addition des bonne réponses
                {
                    nbBonneRep += 1
                }
            }
            var details;
            details = "Score " + moment + " : "  + nbBonneRep + " / " + nbFaites;
            if (aff_courant != 0)
            {
                details += " (" + Math.round((nbBonneRep/nbFaites*100)*10)/10 + "%)";
            }
        }
        else //dans le cas d'une correction non-automatic le résultat n'est pas affiché
        {
            details = " ";
        }
        document.getElementById("details").innerHTML = details;
    }
    function suiv() //Bouton Suivant
    {
        enregistre_rep()
        
        if (aff_courant < questions.length - 1)
        {
            aff_courant += 1; //Changement du compteur de la question courrante
            affichage(aff_courant); //Changement de l'affichage de la question
            
            if (correction_auto == 1)
            {
                document.getElementById("btnPrec").disabled = true;
            }
            else //Dans le cas où la correction nest pas automatisé, l'utilisateur peut tjrs revenir à la question précédente
            {
                document.getElementById("btnPrec").disabled = false;
            }
        }
        else if (aff_courant == questions.length-1)//S'il s'agit de la dernière question les 2 boutons sont bloqués
        {
            aff_courant += 1;
            aff_resultat();
            document.getElementById("btnPrec").disabled = true;
            document.getElementById("btnSuiv").disabled = true;
        }
    }
    function prec() //Bouton Précédant
    {
        enregistre_rep()
        if (aff_courant > -1)
        {
            aff_courant -= 1; //Changement du compteur de la question courrante
            affichage(aff_courant); //Changement de l'affichage de la question
            
            document.getElementById("btnSuiv").disabled = false;
            
            if (aff_courant == 0)
            {
                document.getElementById("btnPrec").disabled = true;
            }
        }
    }
    function enregistre_rep() //Enregistrement des réponses saises ...
    {
        rep = "";
        if (aff_courant != questions.length)
        {
            choix = questions[aff_courant][1].split(separateur);
            if (choix.length > 1)
            {

                for (x=0;x<choix.length;x++) //Ajout de ou des l'index des réponses
                {
                    if (document.getElementById("rep"+x).checked)
                    {
                        rep += x + ",";
                    }
                }
                rep = rep.substring(0,rep.length-1); //Enleve la vergule de trop
            }
            else
            {
                    rep += document.getElementById("reponse").value
            }
            reponses[aff_courant] = rep //Stockage de la réponse
        }
    }
    </SCRIPT>
</HEAD>
<BODY onload="init();">

<FORM name="form">
<TABLE width="50%" border="0">
<TR>
    <TD colspan="3"><DIV id="question"></DIV></TD>
</TR>
<TR>
    <TD colspan="3"><HR></TD>
</TR>
<TR>
    <TD><INPUT type="button" id="btnPrec" value="<" onclick="prec();" disabled="true"></TD>
    <TD><DIV id="main"></DIV></TD>
    <TD align="right"><INPUT type="button" id="btnSuiv" value=">" onclick="suiv();"></TD>
</TR>
<TR>
    <TD colspan="3"><HR></TD>
</TR>
<TR>
    <TD colspan="3"><DIV id="details"></DIV></TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>

 Conclusion

Merci de faire des commentaires sur le fonctionnement du script ...
il a sans doutes plusieurs trucs à optimiser.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

31 décembre 2005 05:16:32 :
Ajout du script zippé
04 janvier 2006 04:28:58 :
Ajout d'un générateur (interface simple pour en créer rapidement)
04 novembre 2009 20:14:32 :
nom masqué

 Sources du même auteur

Source avec Zip Source avec une capture (OBJET) SCROLLBAR
Source avec Zip GALERIE D'IMAGES - GESTION DE DESCRIPTIONS ET DES MINIATURES

 Sources de la même categorie

Source avec Zip Source avec une capture CALCULS RAYNAUX V2 par Ali Bibi
Source avec Zip Source avec une capture VALIDATION D'UN FORMULAIRE par grarestephane
Source avec Zip Source avec une capture CHAT VIRTUEL par grarestephane
Source avec Zip Source avec une capture AJOUTER ET SUPPRIMER DES FICHIERS DANS UNE LISTE par grarestephane
Source avec Zip TEXTAREA : LIMITER LA LARGEUR ET LA HAUTEUR DU TEXTE SAISIE par vilfarfadet

 Sources en rapport avec celle ci

Source avec Zip TEST, QUIZZ, QCM, QUESTIONNAIRE SUR RÉPONSE OUI OU NON AVEC ... par BDFC
Source avec Zip Source avec une capture [CF) CHOIX D'UN FICHIER par bultez
Source avec Zip Source avec une capture QUESTIONNAIRE-QUIZ par Laffrey
Source avec Zip CHOIX DE DESTINATION DE FORMULAIRE par abdelaziz_info
QUIZ COMPLET ET FACILEMENT PERSONNALISABLE par Thypot

Commentaires et avis

Commentaire de johann1 le 02/01/2006 02:19:05

Vraiment très chouette Phil!

Commentaire de glad le 02/01/2006 08:46:26

Pourquoi faire simple qd on peut faire compliqué...
Le support d'une base de données ou même un fichier CSV serait le bienvenue.
Bonne année !

Commentaire de PhiL666 le 04/01/2006 04:24:51

Je vois pas ce que tu veux dire GLAD. C'est juste une série de question.
où est le besoin de base de donnée?

Commentaire de Arto_8000 le 04/01/2006 04:40:40

Le générateur marche bien c'est simpa de pouvoir en générer plutôt que de juste voir un questionnaire déjà fait.

Commentaire de glad le 04/01/2006 07:54:24

Bonjour,

Je veux simplement dire, que c'est lourd à maintenir par un non informaticien par exemple, et source d'erreurs.
Une base de données (Mysql, Access, Oracle, ...) serait, à mon avis, la bienvenue.
Cela n'enlève en rien l'utilité de ta source.
Il faut juste continuer son développement.
Je te mets 7/10 pour t'encourager.
à +

Commentaire de PhiL666 le 04/01/2006 21:04:19

là je te saisi  ... et dernière chose pour les fichiers CSV t'aurais-tu un exemple avec un js (lien)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Création d'un quiz...HELP!!!!! [ par JAJ production ] Bonjour à tous,Je suis débutant alors merci de faire en sorte que je comprenne votre réponse! Voici mon problème. Je veux créer un quiz à choix de rép questionnaire test [ par Novaslash ] Je voudrais inclure dans mon site un questionnaire test çàd une série de question avec 3 ou 4 choix, comme ceux que l'on trouve dans certain magazin g question sur la performance du langage [ par baptisteb ] j'utlise java script pour mes loisirs, la question que je voudrais poser est-ce que c'est possible de créer des programmes performant par exemple tabl [n00b] Question sur les variables [ par Blutch ] bijour bijournvoila voila, j'ai un probleme je souhaierai mettre en place une page avec dedans un script ^^ qui seré aléatoire, exemple le lundi ce sc open fenetre... [ par cedric2 ] Question de débutant, mais question...Je souhaite ouvrir une fenetre à partir d'un lien hypertexte, jusque là ça va. Mais je veux que cette fenetre so Tableau a trois dimensions [ par vdormois ] bonjour tout le monde j ai besoin d un tableau a trois dimensions en javascript pour traiter des choix qui decoulent d autres choix dans un select mai recuperation de valeur d'un formulaire dans un autre formulaire [ par super-gregos ] Bonjour,Désolé si ma question vous parait bête mais, en tant que "la plus grosse bille du monde en javascript", j'ai super besoin de votre aide. Alors window.opener [ par iomega ] Bonjour à tous je voudrai savois si l'on peut modifier le chemin d'accès du forms ? merci à tous de votre aide faut-il le changer le nom du répertoir Redimensionnement d'une page dans une iframe [ par Krokodyle ] Salut,Je pense que la question que je vais vous poser est une question bateau mais comme je suis pas un pro encore en iframes, je m'en excuse par avan dot.tk--- LA question!!! [ par Nikita01 ] Nikita01!À L'AIDE! je sais que très peu de gens, même p-ê aucune personne ne vony répondre a ceci mais je suis désesperrée...Bom, Alors je vien de m'i


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,764 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales