Designed by NoKi !
48 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/12/09 15:40 de tilte
bonjour ,je viens d'installer ce qcm en php et lorsqu...
 Lire  13/06/09 18:09 de sibuno
re bonjour c'est encore moi, bon je suis vraiment sat...
  • 13/06/09 18:49 de DB77 Tu devrais aller voir là : http://www.asp-...
  •  Lire  12/06/09 16:23 de sibuno
    er c'est encore moi, donc ça y est j'ai enfin réussi,...
     Lire  12/06/09 15:33 de sibuno
    merci pour l'info, j'ai regardé un peu ce que veut di...
     Lire  11/06/09 20:30 de sibuno
    re, merci de m'avoir répondu, en fait le problème ven...
  • 11/06/09 23:24 de lolo5971 si tu nous montrez tes lignes ou se t...
  • 12/06/09 10:01 de sibuno bonjour à tous, mille excuses lolo5971, ...
  • 12/06/09 10:24 de lolo5971 deja tu peux faire un copier/coller d...
  • 12/06/09 11:17 de sibuno oui ok, pourras tu me dire comment tu fa...
  • 12/06/09 11:36 de lolo5971 Essaie ceci (fais un copier/coller de...
  • 12/06/09 11:38 de lolo5971 pour le surlignage en bleu, je ne fai...
  • 12/06/09 14:36 de DB77 Pour tester ce genre de choses, il faut déj...
  •  Lire  11/06/09 16:30 de sibuno
    bonjour, et merci pour ce code, j'ai une question car...
  • 11/06/09 16:53 de DB77 Ici : http://www.asp-php.net/tutorial/asp-...
  •   v1.3p © ASP-PHP.net 2002  

    Jacky le 14/09/2003 (215 941 hits)
    Didier Téléchargez gratuitement et légalement des logiciels Microsoft ! Si, si ;)
    • Visual Studio 2010
    • Office 2010
    • Expression Studio 3
    • SQL Server 2008
    • et d'autres...
    Au fil des news  
    Magazines - Le N°128 de Programmez est disponible
    Magazines - Le N°127 de Programmez est disponible
    Dreamweaver CS4 + Php + Mysql - Trucs et Astuces - Part 6
    Pour continuer dans le même style, je vous propose une suite au précédent article. Rechercher tous ...
    Adobe - Adobe Photoshop.com Mobile pour iPhone 1.1
    JavaScript - Ajouter une page dans vos favorites
    Dreamweaver CS4 + Php + Mysql - Trucs et Astuces - Part 5 -
    Je vous propose cette fois deux astuces. Comment exporter une feuille de style avec l'aide de ...
    SharePoint Personalization Site Links - Les liens personnalisés des MySite SharePoint
    Nous avons vu dans les articles précédents comment agrémenter les pages de recherche afin de ...
    Magazines - Le n°126 de Programmez est disponible
    Outils - Traducteur en ligne automatique pour site web
    Adobe - Adobe Photoshop.com Mobile pour Iphone
    Magazines - Le n°125 de Programmez est disponible
    Adobe - Adobe AIR 2 et Flash Player 10.1version bêta
    Les conférences autour des technologies Microsoft - Liste non exhaustive des grands évènements
    Nous allons essayer de regrouper un grand nombre des évènements autour des technologies Microsoft ...
    Magazines - Le n°124 de Programmez est disponible
    PHP - Forum PHP 2009
    Composants - eFace - XAML en Java
    WPF - Désactiver le bouton de réduction d'une fenêtre
    Magazines - Le n°123 de Programmez est disponible
    Magazines - Le n°122 de Programmez est disponible
    Auditer une ferme SharePoint - Assurer le bon fonctionnement de SharePoint
    Dans le cadre de la bonne gestion de son environnement SharePoint, il est utile de faire un ...
    SQL Server 2008 Report Builder 2.0 - Installation et utilisation de Report Builder 2.0
    Dans le cadre de la création de rapports pour SQL Server Reporting Services 2008, un outil est ...
    Magazines - Le HS N° 1 de Web Design est disponible
    Adobe - Adobe propose en Open Source les frameworks.....
    Outils - EntityBuilder
    CSharp - Sérialisation XML de vos objets
    Magazines - Le n°121 de Programmez est disponible
    Adobe - Adobe annonce MAX 2009 !
    Outils - WhoIs
    [MAJ] Dreamweaver MX + Php + MySql - Les formulaires - partie 3
    Mise à jour du code, par DB 77, affichage du code erreur, dans la page erreur.php, traduction des ...
    PHP - News avec photo - Système de gestion - affichage
    Gestion - Administration - Affichage d'une "News", "Actualité", "Info", ... avec : - mise en forme ...
    Outils - Crypt
    Dreamweaver Php Mysql - Région répétée imbriquée
    Je rebondis, sur un post du forum, pour vous montrer comment obtenir grâce à l'extension Simulated ...
    Magazines - Le n° 120 de Programmez est disponible
    Gérer les bases de contenu SharePoint - Gérer la croissance du volume des données
    Dans le cadre de la gestion quotidienne de ferme SharePoint, il existe une partie qu'il faut ...
    PHP - Le Coach PHP sur Visual Studio
    .NET - Ecrire une application .NET utilisant MySQL
    PHP - Utilisation de PHP dans le monde Microsoft
    Magazines - Le n° 119 de Programmez est disponible
    Adobe - Adobe annonce Photoshop Marketplace
    [MAJ] Tutoriel AJAX simple - En avant vers le WEB2.0
    Mis à jour le 20/04/2009
    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
    v3b © Didier 2003   
     

    Corpo Sciences de Reims Partitions gratuites Carte, météo, annonces
     MVP TechNet DotNet Project ASP-magazine Groupes Utilisateurs Microsoft