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 !
' 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 %>
' 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>
<? // 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>