Problème script qcm en php

Problème script qcm en php - PHP - Programmation

Marsh Posté le 08-09-2005 à 21:21:00    

Bonjour à tous,
 
je cherche à faire un script pour un qcm, mais j'ai des soucis avec le compteur.
Les réponses se présentent sous cette forme:  

Code :
  1. <input type="checkbox" name="A" /><span class="réponse">Réponse A</span> :
  2. <?echo htmlentities(${'reponseA'.$numero});?> </a>
  3. <span class="right"><input type="checkbox" name="B" /><span class="réponse">Réponse B</span> :
  4. <?echo  htmlentities(${'reponseB' . $numero});?></span></a><br /> 
  5.  
  6. <input type="checkbox" name="C" /><span class="réponse">Réponse C</span> : <?if ($numero<=4)
  7.                                                           {echo htmlentities(${'reponseC'.$numero});} ?>
  8. <span class="right"><input type="checkbox" name="D" /><span class="réponse">Réponse D</span> : <?if ($numero<4)
  9.                                            {echo htmlentities(${'reponseD' . $numero});}?></span>


 
Pour ensuite calculer la note, je fais :

Code :
  1. $numero = intval($_GET['page']);
  2. if (isset($_GET['page']))
  3.   {
  4.   if ($numero == 1)
  5.   {
  6.     if (($_POST['A'] == "on" AND $_POST['D'] == "on" ) AND ($_POST['B'] == NULL AND $_POST['C'] == NULL))
  7.           {
  8.    ++$compteur;
  9.           }
  10.         else
  11.           {
  12.           $compteur = 0;
  13.           }
  14.       }
  15.   elseif ($numero == 2)
  16.   {
  17.     if ($_POST['D'] == "on" )
  18.    {
  19.    ++$compteur;
  20.    }
  21.   }
  22.   elseif ($numero == 3)
  23.   {
  24.     if (($_POST['D'] == "on" AND $_POST['A'] == on AND $_POST['B'] == on AND $_POST['C'] == on))
  25.    {
  26.    ++$compteur;
  27.    }
  28.   }
  29.  
  30.   elseif ($numero == 4)
  31.   {
  32.     if (($_POST['A'] == on AND $_POST['B'] == on) AND ($_POST['C'] == NULL AND $_POST['D'] == NULL))
  33.    {
  34.    ++$compteur;
  35.    }
  36.   }
  37.   }
  38.     else
  39.   {
  40.   $numero = 1;
  41.   }


 
Ensuite , pour retenir le score, je fais un champ caché et je l'affiche:

Code :
  1. if ($numero > 1)
  2.   {
  3.   $compteur = $_POST['compteur'];
  4.   }
  5. <form method="post">
  6. <input type="hidden" name="compteur" value="<?echo htmlentities($compteur)?>" />
  7. </form>
  8. <?
  9. echo 'Votre score actuel est de : ' . $compteur;
  10. ?>


 
Je ne comprends pas ce qui ne marche pas le score reste toujours à 0 (je pense que ça doit être la transmission de variable ou son affectation
qui est fausse car le isset doit toujours affecter 0 à $compteur).
Merci d'avance à ceux qui prendront la peine de lire ce pavé et de m'aider car je ne vois vraiment pas quoi faire.


Message édité par rhcp_oasis le 11-09-2005 à 17:20:04
Reply

Marsh Posté le 08-09-2005 à 21:21:00   

Reply

Marsh Posté le 08-09-2005 à 21:33:43    

C'est où que tu balances un 'compteur' par POST ?
 
Sinon y'a de belles choses,  

Code :
  1. $compteur = $compteur++;


 
ou encore mieux

Code :
  1. $compteur = $compteur;


 
[:mlc]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 08-09-2005 à 21:37:42    

oups , c'était en fait dans la version précédente ou j'avais mis $compteur1= $compteur++
else
$compteur1 = $compteur
 
et ensuite je faisais afficher un value="(${'compteur' . $numero})"
que j'ai oublié d'enlever.
J'édite tout de suite.

Reply

Marsh Posté le 08-09-2005 à 21:39:48    

A ton avis, ça fait quoi,

Code :
  1. $compteur1= $compteur++

?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 08-09-2005 à 21:43:11    

je pensais que ça incrémentait $compteur d'un.

Reply

Marsh Posté le 08-09-2005 à 21:45:52    

C'est le cas, et ça copie l'ancienne valeur dans $compteur1.
 
C'est ce que tu veux faire ? Pourquoi utiliser 42 compteurs différents ?
 
Honnêtement j'ai lu ton code en diagonale et j'ai pas vraiment cherché à comprendre, mais ça a pas l'air bien beau. :/


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 08-09-2005 à 21:48:29    

A ce point? Mais comment faire pour incrémenter la valeur sans créer de nouvelle variable contenant la valeur puisque $compteur = $compteur++ n'est pas correct syntaxiquement.
Merci d'accepter de m'aider :).

Reply

Marsh Posté le 08-09-2005 à 21:54:46    

Merci ;)
Sinon est ce que mon code est à ce point mal fait?

Reply

Marsh Posté le 09-09-2005 à 08:12:41    

up svp personne n'a une idée?

Reply

Marsh Posté le 09-09-2005 à 08:12:41   

Reply

Marsh Posté le 09-09-2005 à 08:59:50    

Bon ben on va y aller doucement... -_-
 
D'où sort le $compteur que tu testes avec isset (début de la deuxième partie de code que tu balances) ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 10-09-2005 à 07:42:26    

Désolé d'avoir répondu si tardivement, mais je ne pouvais pas répondre avant.
En fait, le isset ne sert à rien puisque j'ai mis avant :

Code :
  1. if ($numero == 1)
  2. {
  3. $compteur = 0;
  4. }
  5. if ($numero > 1)
  6. {
  7. $compteur = $_POST['compteur'];
  8. }


Je ne pense pas que ce soit cela qui pose problème mais plutot les conditions sur les checkbox ou la
transmission du compteur.
Merci à tous ceux qui m'aident à progresser ;).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed