Designed by Derf !
40 en ligne
  Forum | Actu | Glossaire | Codes | Tips | Liens | Livres | Annuaire
 

 Recherche





   

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 !

  v1.3p © ASP-PHP.net 2002  

Jacky le 14/09/2003 (341 025 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  
PHP - Drupagora : 1ère edition
Utiliser Reporting Services pour des NewsLetter - SQL Server Reporting Services et les NewsLetters
Le moteur de rapport inclus dans Microsoft SQL Server permet de créer de nombreux rapports ...
Changer la page d'erreur 401 SharePoint - La page d'erreur d'authentification SharePoint
Avec l'authentification classique des sites SharePoint, l'erreur d'authentification est gérée par ...
PHP - Graphique de l'angle du soleil en fonction du lieu
PHP5 - Graphique de l'angle du soleil en fonction du lieu
Adobe - Disponibilité d'Adobe Creative Suite 5.5
Les Thèmes dans SharePoint 2010 - Gérer les thèmes dans SharePoint 2010
SharePoint 2010 apporte de nombreuses modifications dont certaines dans le principe des thèmes.
JavaScript - fonction qui affiche l'heure à travers javascript
Installer SharePoint Foundation 2010 sur Windows 7 - Installer SP Foundation 2010 sur Windows Seven
Lorsque l'on souhaite développer dans le monde SharePoint, il existe plusieurs solutions. La ...
SharePoint et SQL Server 2008 R2 Report Server - Comment accéder à SharePoint depuis SSRS 2008 R2
Depuis la première version, la solution de rapport proposée par Microsoft "SQL Server Reporting ...
JS - Envoi d'un formulaire après chargement d'une image
Divers - Bannir une ip dans le global asax
Dreamweaver CS5 - Nouvelle version Dreamweaver CS5
Déjà plus de 6 mois que le produit est sorti, il fallait bien que je vous en parle un peu. Je vous ...
SharePoint Output Caching dans un site Intranet - Comment utiliser le cache dans un site Publishing
Afin de permettre l'amélioration des performances de sa ferme MOSS utilisée pour le site portail ...
Adobe - Adobe lance le Musée Adobe des Médias Numériques
Adobe - Adobe lance HTML5 Pack pour Illustrator CS5
PHP - Forum PHP 2010 : Le programme
Magazines - Le numéro 133 de programmez est disponible
Adobe - Adobe lance des applications Photoshop Express....
PHP - Détermination de l'intersection entre 2 segments
Magazines - Le N°132 de Programmez est disponible
Les alertes dans SharePoint 2007 - Comment SharePoint 2007 gère les User Alerts
Une des fonctionnalités de base de SharePoint, aussi bien dans Windows SharePoint Services (WSS) ...
Adobe - Photoshop.com Mobile pour Android 1.2
Adobe - Adobe dévoile une technologie de lecture.......
PHP - Experts PHP : participez au Forum PHP 2010 !
PHP - Fobec.com - Code source PHP & javascript
Foliotage alphabétique - Lister sur la première lettre d'un champ
Pour faire suite à l'article de JPierre sur la pagination alphabétique, voici, en ASP et en PHP, ...
Dreamweaver CS4 + Php + Mysql - Pagination alphabétique
Je vous propose la création d'une barre de navigation ou pagination alphabétique pour filtrer les ...
Adobe - HTML5 dans Dreamweaver CS5
VBScript - Déterminer si un chemin est absolu ou relatif
VBScript - Lire/écrire un fichier texte
Magazines - Le N°130 de Programmez est disponible
Hebergement - Hébergement à prix libre
Adobe - Adobe Creative Suite 5
PHP - Calcul de la date de Pâques
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
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
 DotNet Project TechNet Groupes Utilisateurs Microsoft ASP-magazine MVP