PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 17-06-2013 13:53:16

mkenay
Membre
Inscription : 17-06-2013
Messages : 4

création d'un qcm

salut à tous
j'ai besoin d'aide sur une application php que je suis entrain de concevoir ces derniers temps. Au fait je suis entrain de mettre en oeuvre un examen en ligne(qcm) sur mon site web. Je dispose de 3 questions reparties dans 3 formulaires qui au final doivent envoyer les informations dans une seule table et créer un seul enregistrement dans ma table. Le problème à partir du deuxième formulaire il créé un nouveau en enregistrement.  Que dois-je faire

Hors ligne

#2 17-06-2013 13:57:40

mkenay
Membre
Inscription : 17-06-2013
Messages : 4

Re : création d'un qcm

Voici le code mis dans chaque formulaire
<?php
if(isset($_POST['q1']))      $q1=$_POST['q1'];
else      $q1="";
if(isset($_POST['nom']))      $nom=$_POST['nom'];
else      $nom="";

if(!empty($q1))
{
$cx=mysql_connect('localhost','root','');
mysql_select_db('concours',$cx);
$req="INSERT INTO jeux (nom,q1) VALUES('$nom','$q1')";
mysql_query($req);
header('Location:qcm_2sciences.php');
mysql_close();
}
else
{
echo "Vos champs sont vise !";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans nom</title>

<link href="styles_qcm/styles.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="page" class="bloc">
<div class="chrono"><p><span id="Minutes">00</span> : <span id="Secondes">30</span></p></div>
<h2>EXAMEN : Test</h2>
<form method="post" action="qcm_1sciences.php" id="quizz">
<div class="qcm">
<p class="qcm_q">Une semaine ouvrable comporte :</p>
<p class="qcm_q">&nbsp;  </p>
<p>
  <label>
  <input type="radio" name="q1" value="pain"  />
    Pain</label>
  <br />
  <label>
  <input type="radio" name="q1" value="maman"  />
    Maman</label>
  <br />
</p>
<p class="qcm_q">  <br />
</p>
</div>
<div class="qcm">
<p class="qcm_q">Quel est votre nom?</p>
<input name="nom" type="text" />
</div>
<div class="qcm">
<p class="qcm_q">Quelle est la couleur du cheval blanc de Napol&eacute;on ?</p>

</div>
<input type="submit" value="Valider" />
</form>
<script type="text/javascript">
//<![CDATA[
window.setTimeout('compteARebours()', 1000);
//]]>
        function compteARebours()
        {
        // RECUPERATION DES VALEURS DU COMPTE A REBOURS
        var minutes = document.getElementById('Minutes').innerHTML;
        var secondes = document.getElementById('Secondes').innerHTML;
        // CONVERSION DES CHAINES DE CARACTERES EN VARIABLES NUMERIQUES
        minutes = parseFloat(minutes);
        secondes = parseFloat(secondes);
        // MODIFICATION DES VALEURS DU COMPTE A REBOURS
        if(secondes == 0)
        {
        if(minutes == 0)
        {
        document.getElementById('quizz').submit();
        }
        else
        {
        secondes = 59;
        minutes = minutes - 1;
        }
        }
        else
        {
        secondes = secondes - 1;
        }
        // CONVERSION DES VARIABES NUMERIQUES EN CHAINES DE CARACTERES
        minutes = minutes.toString();
        secondes = secondes.toString();
        // METTRE DES ZEROS INITIAUX POUR L'ESTHETIQUE
        if(minutes.length == 1)
        {
        minutes = '0' + minutes;
        }
        if(secondes.length == 1)
        {
        secondes = '0' + secondes;
        }
        // REMPLACER LES VALEURS DANS LE COMPTE A REBOURS
        document.getElementById('Minutes').innerHTML = minutes;
        document.getElementById('Secondes').innerHTML = secondes;
        // RELANCER LA FONCTION APRES 1 SECONDE DE DELAI
        window.setTimeout(compteARebours, 1000);
        }
</script>
</body>
</html>

Hors ligne

#3 19-06-2013 07:41:17

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : création d'un qcm

Bonjour,

Soit vous stockez côté php les réponses de vos 3 formulaires et vous envoyez une seule requête INSERT pour créer votre enregistrement en BD, soit vous validez en BD à chaque soumission de votre formulaire avec un INSERT puis un UPDATE pour chaque autre formulaire. La différence est importante si vous êtes en transactionnel côté BD.
De plus votre gestion du timer est plus que largement insuffisante pour être efficace et jouer son rôle pleinement.
A ce titre je vous rappelle qu'en cas de contrôle des temps de réponses, ce sont les temps enregistrés en BD qui font foi en cas de litige éventuel. Par conséquent, le timer affiché côté client doit correspondre exactement à celui persisté en BD pour chaque réponse. Il faut de plus convenir d'une règle en cas d'indisponibilité réseau ou serveur si l'utilisateur réponds dans la dernière seconde également. Soit l'opération est validée côté serveur même s'il reçoit l'information 3s plus tard soit elle est rejetée et notifiée au client.

Cordialement,

Jc.

Dernière modification par Jc (19-06-2013 07:47:13)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#4 20-06-2013 13:21:06

mkenay
Membre
Inscription : 17-06-2013
Messages : 4

Re : création d'un qcm

merci JC pour ta réponse ça marche. Un deuxième problème pour enregistrer les données j'utilise le nom  donc l'internaute est obliger de saisir plusieurs fois son nom pour pour que l'or de l'envoi que les informations soient stockées sur la même ligne mais j'aimerai stocker ce nom et le stocker puis le faire appel pour les enregistrements afin que l'utilisateur n'est pas à saisir plusieurs fois son nom que dois-je faire?

Hors ligne

#5 20-06-2013 17:01:14

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : création d'un qcm

Bonjour,

On travaille avec l'ID de l'utilisateur jamais son nom. Il faut être en mesure de gérer sa connexion à l'application et son authentification via les sessions + BD et son ID.
Je vous conseille de lire des tutos concernant les différentes méthodes pour y parvenir, ensuite à vous de choisir ce qui vous conviendra le mieux.

Cordialement,

Jc


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#6 15-07-2013 15:08:04

mkenay
Membre
Inscription : 17-06-2013
Messages : 4

Re : création d'un qcm

merci beaucoup et est il possible que tu me donne un tuto sur ce que tu m'a suggérer?

Hors ligne

Pied de page des forums