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


 Recherche


Acheter - Vendre
neuf et occasion

pda, jeux vidéo, graveur, cd vierges, dvd vierges, matériel informatique, pc, ordinateur portable, logiciel, antivirus, annonces gratuites

 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  15/10/2007 de anatoamour
salut merci pour ce script m je trouve un petit err...
  v1.3p © ASP-PHP.net 2002  

Jacky le 14/09/2003 (97 021 hits)
Didier Téléchargez gratuitement !!!
7 logiciels illimités dont Visual Studio Pro et SQL Server 2005 !
SQL Server 2008 ß !
[gratuit] 11-12-13 février
les MS TechDays 2008 !!!
Au fil des news  
Dreamweaver CS3 + XML + Ajax - Création d'une région détail
Dans cet article, je vais vous montrer comment utiliser la technique région détail, avec Spry
PHP - joli arborescence dynamique
Magazines - Le N°104 de Programmez est disponible
PHP - PhPBB 3.0.0 !!!
[MAJ] Université de Sherbrooke - située dans un beau coin du Québec, l'Estrie...
- Ajout du programme d'imagerie et de médias numérique - Le département de mathématiques et ...
Magazines - Le N°103 de Programmez est disponible
PHP - Calcul jours ouvrables entre dates, gestion fériés
PHP - WampServer 2.0, la nouvelle version de WAMP5 !
SharePoint 2007 et Workflows Designer - Part 2 - Modifions un workflow dans SharePoint 2007
Dans la première partie, nous avons vu comment créer un WorkFlow dans MOSS avec SharePoint ...
Modifier le ruban de Word 2007 avec Open XML -
Open XML est un format de document bureautique flexible : structure basée sur l'Open Packaging ...
La corbeille de SharePoint 2007 - Fonctionnement de la corbeille de SharePoint 2007
Une des nouveautés de SharePoint 2007 est la mise en place de la corbeille pour chaque site. Il est ...
SharePoint 2007 et Workflows Designer - Part 1 - Créer un workflow simple dans SharePoint 2007
L'automatisation de Workflows, ou Flux de travail, résulte d'une volonté d'amélioration de ...
CSS - Dégradé de couleur
Magazines - Le N°102 de Programmez est disponible
Dreamweaver CS3 + Mysql - Formulaire de redirection
Suite au coup de pouce de DB77, je vous propose ce petit script pour améliorer vos pages Internet. ...
[MAJ] Tutoriel AJAX simple - En avant vers le WEB2.0
Mis à jour le 26/10/2007
Magazines - Le Hors-Série .Net de Programmez est disponible
LINQ et vous - Part 2 - Le .NET Framework 3.5 décortiqué !
Ce nouvel article fait suite à mon premier article de cette nouvelle collection « LINQ et vous ». ...
Présentation des KPI dans SharePoint - Présentation des KPI dans SharePoint 2007
Nous verrons au travers de cet article une présentation détaillée de ce qu'est un KPI et dans quel ...
LINQ et vous - Part 1 - Evolutions du .NET Framework - Visual Studio 2008
Voilà plus d'un an que je n'ai plus posté d'articles sur ma communauté préférée. Il était temps ...
Agenda - 21-22 novembre : Le Forum PHP 2007 !
Microsoft - Essayez gratuitement MS Expression Studio !!!
Les Utilisateurs dans SharePoint - La gestion des utilisateurs dans SharePoint
SharePoint dont le coeur est l'outil collaboratif, Windows SharePoint Services. Chaque utilisateur ...
Magazines - Le N°101 de Programmez est disponible
Hebergement - hébergement de forum gratuit - créer un forum.
Revue de presse - Nouvelle mise à jour chez Adobe
PHP - import csv vers bdd avec verification
PHP5 - Csv2array
PHP - Framework PHP5 - PoppyFramework
Le Moteur de Recherche de MOSS 2007 - Installer le moteur de recherche de MOSS 2007
Nous avons vu dans un précédent article comment mettre en place le moteur de recherche dans un site ...
PHP5 - incrementation alphanumerique
Magazines - Le N°100 de Programmez est disponible
Agenda - Adobe vous donne rendez-vous du 4 au 9 septembre..
ABAP leçon 1 : Les variables - Auteur : Jerome Fortias
je me devais de continuer mon travail de vulgarisation à SAP. En parallèle à mon site destiné aux ...
Agenda - Nov 2007 : Les TechEd Developers à Barcelone !
Microsoft - Vista SP1 et XP SP3 pour bientôt !
Le Moteur de Recherche de WSS V3 - Installer le moteur de recherche de WSS V3
Parmi les évolutions de Windows SharePoint Services V3, on trouve le moteur de recherche. Nous ...
PHP - array2xml convertie un array en xml
Revue de presse - Flash Player 9 Update beta
PHP5 - class Timer - ajouter/enlever du temp au time unix
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   
 
 Groupes Utilisateurs Microsoft TechNet Codes Sources ASP-magazine El Roubio CodePPC DotNet Project Wygwam MVP The Inquirer FR