Designed by Maunakea !
79 en ligne   Boutique | Sites | Bar | Forum | PhpBB | Actu | Glossaire | Codes | Tips | Liens | Livres | Lettre  


 Recherche

 NewsLetter





   

QCM 1.01 (1/2)

Un Questionnaire à Choix Multiples en ASP ou PHP





Jacky
Vous avez été nombreux à le demander... alors voici un petit script permettant de proposer un QCM ! La v1.02 en cours d'écriture permettra un tirage aléatoire des questions... Patience !

Page 1  2  SUITE >> 
Tester la démo - Télécharger l'exemple complet (BD incluses)


Le script du QCM - Edition en ligne de la base - Version PHP



qcm.asp 
<% ' QCM 1.0 © Jacky 2002

' Chemin absolu de la base
datapath = server.mapPath("qcm.mdb")
' Création des objets
Set Conn = Server.CreateObject("ADODB.Connection")
Set RS = Server.CreateObject("ADODB.Recordset")
Set RS2 = Server.CreateObject("ADODB.Recordset")
' Connexion
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & datapath

' Sélection de toutes les questions
SQL ="SELECT * FROM questions"
RS.Open SQL,Conn,3,3
%>


<html><head><title>QCM</title>
   <STYLE type="text/css"><!--
      body,td,th { font:normal 10pt Verdana }
   --></STYLE>
</head><body>

<center><font size=4>QCM 1.0</font><br><font size=1>


<% ' === Page 1 : AFFICHAGE DES QUESTIONS ===

' si le formulaire n'a pas été validé
if request.form.count=0 then
%>

   Veuillez répondre à ces <%=RS.recordCount%> questions</font>
   <br><br>

<table><tr><td>
<form method="post" action="qcm.asp">
<ol>
<%while not RS.eof%>
   <b><li><%=RS("QUEST")%></b><br>   
   <% ' Sélection des réponses possibles
   SQL = "SELECT * FROM reponses WHERE NQ=" & RS("NQ")
   RS2.Open SQL,Conn,3,3
   while not RS2.eof%>

      <dd><input type="checkbox" name="<%=RS("NQ")%>" value="<%=RS2("NR")%>">
      <%=RS2("REP")%>
      <%RS2.MOVENEXT
   wend
   RS2.close%>

   <br><br>
   <%RS.MOVENEXT
Wend
%>

</ol>
<center><input type="Submit" value="Envoyer"></center>
</form>
</td></tr></table>


<% ' === Page 2 : VERIFICATION DES REPONSES ===
else
%>
   
   Vérification des réponses</font>
   <br><br>

<table>
<% ' Affichage des questions 
score=RS.recordcount
while not RS.eof
   nbr_fausse=0 %>

   <tr><td colspan=2><b><%=RS("QUEST")%></b></td></tr>

   <% ' Affichage des réponses après vérification
   SQL = "SELECT * FROM reponses WHERE NQ=" & RS("NQ")
   RS2.Open SQL,Conn,3,3
   while not RS2.eof%>

      <tr>
         <td align=right><%=RS2("REP")%>...</td>
         <td><input type="checkbox" DISABLED
         <% ' si la case est cochée alors
         if inStr(request.form(cStr(RS("NQ"))),cStr(RS2("NR"))) >0 then %>

            CHECKED>

            <% ' si la case cochée devait être cochée alors
            if RS2("RESULTAT") then %>

               <font color=blue>VRAI !</font>
            <% ' sinon la case cochée ne devait pas être cochée
            else
               nbr_fausse=nbr_fausse + 1 %>

               <font color=red>Et bien Non !</font>
            <%end if

         ' sinon la case n'est pas cochée 
         else
            ' si la case non cochée devait être cochée alors
            if RS2("RESULTAT") then
               nbr_fausse=nbr_fausse + 1 %>

               ><font color=red>Et bien Si !</font>
            <% ' sinon la case non cochée ne devait pas être cochée
            else%>

               ><font color=blue>OK !</font>
            <%end if

         end if
         RS2.MOVENEXT %>

      </td></tr>
   <%wend
   RS2.close%>


   <tr><th colspan=2><font color=red>
   <% ' s'il y a une réponse fausse on diminue le score de 1
   if nbr_fausse>0  then 
      score= score-1 %>
               
      Réponse fausse !
   <%else%>
      Réponse correcte !
   <%end if%>
   <br><br></th></tr>
   <%RS.moveNext         
wend%>

</table>

<h3>Votre score est de <%=score%> sur <%=RS.recordcount%></h3>
<center><button onclick="location.replace('qcm.asp')">Rejouer</button></center>

<% ' === BAS DE PAGE ===
end if
RS.close
' deconnexion
Conn.close
%>

</body></html>


qcm.php 
<? // QCM 1.0 © Didier 2003 - www.ASP-PHP.net

// Connexion
$local=($SERVER_NAME=="localhost"); // en local ?
$host = ($local) ? "localhost" : "";
$user = ($local) ? "root" : "login";
$pass = ($local) ? "" : "password"; 
$bdd = ($local) ? "qcm" : "qcm"; 
mysql_connect($host,$user,$pass); 
mysql_select_db($bdd);

// Sélection de toutes les questions
$SQL ="SELECT * FROM questions";
$RS = mysql_query($SQL);
?>


<html><head><title>QCM</title>
   <STYLE type="text/css"><!--
      body,td,th { font:normal 10pt Verdana }
   --></STYLE>
</head><body>

<center><font size=4>QCM 1.0</font><br><font size=1>


<? // === Page 1 : AFFICHAGE DES QUESTIONS ===

// si le formulaire n'a pas été validé
if(!$HTTP_POST_VARS) {
?>

   Veuillez répondre à ces <?echo mysql_num_rows($RS)?> questions</font>
   <br><br>

<table><tr><td>
<form method="post" action="qcm.php">
<ol>
<? while($val=mysql_fetch_array($RS)) {?>
   <b><li><?echo htmlentities($val["QUEST"])?></b><br>   
   <? // Sélection des réponses possibles
   $SQL = "SELECT * FROM reponses WHERE NQ=" . $val["NQ"];
   $RS2 = mysql_query($SQL);
   while($val2=mysql_fetch_array($RS2)) {?>

      <dd><input type="checkbox" name="<?echo $val["NQ"]?>[]" value="<?echo $val2["NR"]?>">
      <?echo htmlentities($val2["REP"]);
   } ?>

   <br><br>
<? } ?>
</ol>
<center><input type="Submit" value="Envoyer"></center>
</form>
</td></tr></table>


<? // === Page 2 : VERIFICATION DES REPONSES ===
} else {
?>
   
   Vérification des réponses</font>
   <br><br>

<table>
<? // Affichage des questions 
$score = mysql_num_rows($RS);
while($val=mysql_fetch_array($RS)) {
   $nbr_fausse=0; ?>

   <tr><td colspan=2><b><?echo htmlentities($val["QUEST"])?></b></td></tr>

   <? // Affichage des réponses après vérification
   $SQL = "SELECT * FROM reponses WHERE NQ=" . $val["NQ"];
   $RS2 = mysql_query($SQL);
   while($val2=mysql_fetch_array($RS2)) {?>

      <tr>
         <td align=right><?echo htmlentities($val2["REP"])?>...</td>
         <td><input type="checkbox" DISABLED
         <? // si la case est cochée alors
         if(strpos(" ,".@implode(",",$HTTP_POST_VARS[$val["NQ"]]).",",",".$val2["NR"].",")) {?>

            CHECKED>

            <? // si la case cochée devait être cochée alors
            if($val2["RESULTAT"]) { ?>

               <font color=blue>VRAI !</font>
            <? // sinon la case cochée ne devait pas être cochée
            } else {
               $nbr_fausse++; ?>

               <font color=red>Et bien Non !</font>
            <? }

         // sinon la case n'est pas cochée 
         } else {
            // si la case non cochée devait être cochée alors
            if($val2["RESULTAT"]) {
               $nbr_fausse++; ?>

               ><font color=red>Et bien Si !</font>
            <? // sinon la case non cochée ne devait pas être cochée
            } else {?>

               ><font color=blue>OK !</font>
            <? }

         }?>

      </td></tr>
   <? } ?>

   <tr><th colspan=2><font color=red>
   <? // s'il y a une réponse fausse on diminue le score de 1
   if($nbr_fausse) {
      $score--; ?>
               
      Réponse fausse !
   <?} else {?>
      Réponse correcte !
   <? } ?>
   <br><br></th></tr>
<? } ?>
</table>

<h3>Votre score est de <?echo $score." sur ".mysql_num_rows($RS)?></h3>
<center><button onclick="location.replace('qcm.php')">Rejouer</button></center>

<? // === BAS DE PAGE ===
}
// deconnexion
mysql_close();
?>

</body></html>
Page 1  2  SUITE >> 

Pour pouvoir écrire dans ce forum, identifiez-vous !

 Lire  24/06/08 17:19 de TiPunK
Une petite remarque : le lien permettant de tester la...
 Lire  24/06/08 17:11 de quiz
bases des données
  v1.3p © ASP-PHP.net 2002  

Jacky le 14/09/2003 (109 988 hits)
Didier Téléchargez 1200 Partitions Gratuites !!!
Au fil des news  
Listes liées (dépendantes) : avec ou sans XMLHTTPR - Les délires «Ajax or not Ajax»
Comme toujours, c'est à la suite d'un coup de pouce que je me suis décidé à faire ce tuto. Merci à ...
Amélioration du Search MOSS : Les scopes - Quelques possibilités d'amélioration du Search
Lorsqu'on installe le moteur de recherche de MOSS et qu'on le configure basiquement, on veut ...
SharePoint - Lister les templates utilisés - Identifier les définitions utilisées par vos sites
Un site SharePoint est créé à partir d'un modèle ou définition de site. Mais comment savoir après ...
PowerShell - Profile avec la participation de mon ami Tigrou :)
Adobe - Lancement de la CS4, tous à vos agendas !
[MAJ] PHP - Fonctions de redimensionnement d'images - BD : redimensionner image + picto après upload
Ajout de FONCTIONS de redimensionnement.
PHP - Tchat PHP V2.1 sans base de donnée
SharePoint et les statistiques d'utilisation - Comment obtenir des statistiques depuis SharePoint
La mise en place de ferme SharePoint doit s'accompagner d'une notion de gouvernance. Cette notion ...
Adobe - Nouvelles annonces Adobe sur le salon IBC 2008
PHP - PHP TV emission 2 (septembre 2008)
PHP - PDO ADMIN
[MAJ] Inscription contrôlée à une NewsLetter ou Service - Abonnement avec confirmation et désabonnement
Correction d'un point-virgule manquant (merci de m'avoir obligé à chercher JPierre) dans le module ...
PHP - Premier lundi d'une semaine et d'une année
JavaScript - Premier lundi d'une semaine et d'une année
ASP - Premier lundi d'une semaine et d'une année
Alphabet Radio et Code Morse - Alpha Zulu appelle Tango Charlie !
Encoder-Décoder en "Alphabet Radio" ... "Alpha Zulu appelle Tango Charlie !" ou en Code Morse ... ...
Filtrer les modèles de site SharePoint - Filtrer l'affichage des modèles de site SharePoint
Je vous propose de découvrir à l'aide de cet article quels mécanismes peuvent vous permettent de ...
ASP/PHP - Méthode de cryptage - par table de correspondance
(ASP/PHP) Une méthode de cryptage de données par l'utilisation d'une "table de correspondance ...
PHP - Listes liées (1 table) - version2
JavaScript - Rendre Visible ou Invisible des éléments d'un form
PHP - Listes liées (1 table) - version1
JavaScript - Intercepter le click sur vidéo WMP ou flash SWF
[MAJ] Une base de données sans base de données - Comment travailler avec des fichiers texte ?
Modification du paramétrage du dossier à scanner dans le popup qui permet de sélectionner l'image.
Jeux de l'été (et de 5) - Un jeu de Motus (mots de 8 lettres)
C'est reparti pour un tour... Comme je venais de proposer un jeu de Mastermind, je me suis dit que, ...
PowerShell - Extraire toutes les collections SharePoint en CSV
PowerShell - Lister les collections pour une WebApp SharePoint
PowerShell - Lister les utilisateurs d'un site SharePoint
PowerShell - Connaître le code version de votre SharePoint
Connaître la version de SharePoint installée - Comment savoir la version de SharePoint en cours
Dans le cadre de la maintenance de plusieurs fermes SharePoint, il est indispensable de connaître ...
PowerShell - Travailler avec une base de données SQL Server
.NET - Visual Studio 2008 sur Facebook : çà rock's
PowerShell - Ajouter des liens sur deux niveaux dans SharePoint
Un petit annuaire perso avec photo - en PHP et MySQL
Avoir des copains et des amis c'est bien que dis-je c'est même vital pour le bien être de chacun. ...
Une base de données sans base de données - Comment travailler avec des fichiers texte ?
Suite à une question sur le forum (les habitués me connaissent), je propose une mini-gestion de ...
ASP/PHP : Affichage de données en tableau html - Afficher des données (BD, Array) dans un tableau
Création d'un tableau "à la volée" pour afficher ses données. Affichage "en ligne" ou "en ...
PowerShell - Ajouter une liste dans un site SharePoint
Annuaire d'entreprise en PHP - Très pratique pour ne plus rien perdre
Mon petit annuaire d'entreprise, je m'en sers tous les jours alors autant vous en faire profiter. ...
PHP-MySQL : Formulaire - pour le script 'Bon anniversaire' de DB77
Formulaire et script d'enregistrement pour le script « Bon anniversaire » de DB77 en PHP/MySQL ...
.NET - Introducing Microsoft Silverlight 2.0, 2nd Edition
PHP5 - Upload de fichiers - Classe PHP
Tutorial : HTML | Scripting | ASP-PHP | ASP.net | SQL Server | XML
Sharepoint | XAML | Pocket | Dreamweaver | VML | Divers
  Scripts : Scripting | ASP-PHP | ASP.net | Divers
  Boutique | Annuaire | Bannières | Météo | Tribune | Partenariats
v3 © Didier 2003   
 

Corpo Sciences de Reims Partitions gratuites Carte, météo, annonces
 ASP-magazine CodePPC DotNet Project Codes Sources Groupes Utilisateurs Microsoft MVP Wygwam El Roubio The Inquirer FR TechNet