compteur qui ne marche pas

Petit nouveau ! | 2 Messages

12 sept. 2005, 22:28

Bonjour, à tous et merci d'avance à ceux qui voudront bien m'aider :smile:.
J'essaie actuellement de faire une script de qcm en php mais je n'arrive pas à faire marcher le compteur pour la note.

Les réponses se présentent avec ce formulaire :
   
<form method="post"> 
 <input type="checkbox" name="A" /><span class="réponse">Réponse A</span> :  
 <?echo htmlentities(${'reponseA'.$numero});?>

<span class="right"><input type="checkbox" name="B" /><span class="réponse">Réponse B</span> :  
<?echo  htmlentities(${'reponseB' . $numero});?></span></a><br />   

<input type="checkbox" name="C" /><span class="réponse">Réponse C</span> : <? echo htmlentities(${'reponseC'.$numero}); ?>

<span class="right"><input type="checkbox" name="D" /><span class="réponse">Réponse D</span> : <?
         echo htmlentities(${'reponseD' . $numero});?></span>
</form>
Pour ensuite retenir la note je fais :
$numero = intval($_GET['page']);

if ($numero == 1)
{
 $compteur = 0;
 }
if ($numero > 1)
{
 $compteur = $_POST['compteur'];
 }

 if (isset($_GET['page']))
       {
       if ($numero == 1)
       {
         if (($_POST['A'] == 'on' AND $_POST['D'] == 'on') AND ($_POST['B'] == NULL AND $_POST['C'] == NULL))  
           {  
           $compteur++;
           }
         else
           {
           $compteur = 0;
           }
       }
       elseif ($numero == 2)
       {
         if ($_POST['D'] == 'on')
           {
           $compteur++;
           }
         
       }
       elseif ($numero == 3)
       {
         if (($_POST['D'] == 'on' AND $_POST['A'] == 'on' AND $_POST['B'] == 'on' AND $_POST['C'] == 'on'))
           {
           ++$compteur;
           }
           
       }
        
       elseif ($numero == 4)
       {
         if (($_POST['A'] == 'on' AND $_POST['B'] == 'on') AND ($_POST['C'] == NULL AND $_POST['D'] == NULL))
           {
           ++$compteur;
           }
       }
}
else
{
$numero = 1;
}
Ensuite, pour retenir le score et le transmettre sur la 2e page, je fais un champ caché et je l'affiche:

     <form method="post">
     <input type="hidden" name="compteur" value="<?echo htmlentities($compteur)?>" />
     </form>
     <?
     echo 'Votre score actuel est de : ' . $compteur;
     ?>
Je ne comprends pas ce qui ne marche pas le score reste toujours à 0.
Merci à tous de votre aide :wink:.
Mic
Modifié en dernier par micmac le 13 sept. 2005, 19:12, modifié 3 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

12 sept. 2005, 22:45

sans regarder le code PHP, le formulaire me parait bizarre....

dans une balise "checkbox" il y a normalement un attribut "value" qui contient la valeur qui sera transmise et récupérée
or ici il n'y en a pas

par contre il y a une balise <a> fermée, mais pas ouverte, qui semble ne servir à rien

à mon avis, il y a déjà ça à revoir ;)

Petit nouveau ! | 2 Messages

12 sept. 2005, 22:51

Bonsoir,
J'avais lu là : http://siteduzero.com/php/formulaires.php#elements
que si on ne mettait pas d'attribut value et que la case était cochée ça renvoyait "on".
Pour le a fermé sans avoir été ouvert, c'était une erreur sur la version que je pensais avoir corrigée, mais je l'ai laissée donc ça y est elle est fixée.
Tu me conseilles de mettre l'attribut value="" pour mes checkbox?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

12 sept. 2005, 23:31

non si tu gères avec ON ça devrait aller

met des "echo" de contrôle, pour voir si tu entres dans la bonne condition

essaye avec ce test plutôt !
$_POST['A'] == 'on'
pour comparer avec une chaîne de caractères (on) ilvaut mieux mettre des guillemets ou des quotes