Designed by Maunakea !
78 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/2008 de TiPunK
Une petite remarque : le lien permettant de tester la...
 Lire  24/06/2008 de quiz
bases des données
 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 (105 925 hits)
Didier Ils l’ont fait avec SQL Server. Découvrez comment !
Concours de programmation Flash !
Au fil des news  
ASP - Redimensionner Image + Picto après Upload - Galerie photos, revue de presse, ...
But : Proposer aux visiteurs de charger des images sans se soucier du "poids" de l'image, puisqu'on ...
Exporter et Importer un site SharePoint - Comment déplacer un site SharePoint
Une question est très régulièrement posée à tout responsable de ferme SharePoint : Comment ...
Bon anniversaire - Comment le souhaiter à ses membres ?
Avoir un site, c'est bien. Avoir des inscrits, c'est mieux. Souhaiter leur anniversaire, c'est ...
Audio & Vidéo - Multimédia dans ses pages web
AUDIO/VIDEO : QuickTime, MediaPlayer, RealPlayer, FlashPlayer, ... : Du multimédia dans ses pages ...
Magazines - Le Hors-Série .Net de Programmez !
PHP - Administrer en ligne - Protection des pages
Protéger ses pages pour administrer son site en ligne en (relative) sécurité (PHP).
Communautés - Concours de programmation Flash !
[MAJ] Afficher ses images à la taille voulue - Utilisation du composant IMGSIZE
Ajout de la vérification de l'existence du fichier et d'un test d'erreur de retour du composant ...
Protéger ses Images - Propriété intellectuelle - Vie privée
Je me suis penché sur la question en tant qu'artiste moi-même, et concepteur de site web pour ...
Création de miniatures - Fonction php de création
Cette fonction sert à créer des miniatures.
ASP - ADMINISTRER en ligne - Protection des pages
Protéger ses pages pour administrer son site en ligne en (relative) sécurité (ASP).
JavaScript - Numéros de ligne à gauche d'un textarea
Protection - Sécurité - Mise au point - Précautions - Solutions
Même sans être paranoïaque, on a tous entendu parler de failles de sécurité, piratage informatique, ...
AspSmartUpload - Mode d'Emploi
Le composant ASPSmartUpload (gratuit) permet de gérer les téléchargements de FICHIERS ou de ...
JavaScript - Contrôler une date saisie dans un formulaire
HTML - Ajouter un fichier multimédia dans une page web
HTML - Musique de Fond sur son site
Afficher ses images à la taille voulue - Utilisation du composant IMGSIZE
Devant la diversité des formats d'image actuels, il est parfois nécessaire de connaître les ...
CSS - Icône Personnalisée sur son site
JavaScript - Interdire Clic Droit et message d'alerte
CSS - Curseur Personnalisé sur son site
JavaScript - Fenêtre à la Dimension de l'Ecran
La gouvernance SharePoint - Partie 1 - Première partie sur la gouvernance dans Sharepoint
Un projet de mise en place de ferme SharePoint est un projet important pour toute structure ...
ASP - Redimensionner Image + Picto après Upload
ASP - Administration en ligne : Protection des Pages
PHP - Administration en ligne : Protection des Pages
PHP - Redimensionner Image + Picto après Upload
ASP - Boutons ON OFF pour tout type de musique
PHP - Boutons ON OFF pour tout type de musique
SharePoint et OpenSearch - Utiliser l'option OpenSearch avec SharePoint
Nous avons maintenant un site SharePoint fonctionnel associé à un moteur de recherche efficace. Il ...
Magazines - Le n°109 de Programmez est disponible
SharePoint et PowerShell - Utilisation de PowerShell pour un script d'admin
PowerShell est le nouveau moteur de script de Microsoft. Il permet tout comme VBScript de créer des ...
[MAJ] [PHP] - Validation de formulaire - Gestion des erreurs via style CSS
Ajout de la sécurité anti sql injection de premier niveau.
Adobe - Adobe propose 3 nouvelles versions bêta publiques
VBScript - Interroger un serveur MYSQL
Divers - Web developpement
PHP5 - Copie de fichiers distants
Les stratégies de Backup dans WSS V3 - Quelles sont les différentes solutions de BackUp
Nous avons vu au travers des précédents articles différents sujets pour Windows SharePoint Services ...
Création d'une solution de déploiement SharePoint - Créer la solution pour notre composant SharePoint
Après avoir suivi toutes les étapes pour la création de notre composant (Feature) SharePoint, il ...
Magazines - Le n°108 de Programmez est disponible
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
 CodePPC Codes Sources DotNet Project MVP TechNet El Roubio Wygwam ASP-magazine Groupes Utilisateurs Microsoft The Inquirer FR