Problème d'addition

matton14 Messages postés 7 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 16 juin 2009 - 7 juil. 2008 à 12:26
Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 - 7 juil. 2008 à 14:14
Bonjour!
Je ne comprends pas pourquoi le script suivant ne marche pas:
<HTML>
Remplis la case avec le bon nombre pour que le calcul soit correct&nbsp;:
<?php
$ok=0;
if (isset($a)) {
  echo "Tu viens d'essayer $a+$c=$b.
\n";
  if ($a+$c==$b) {
    echo "C'est exact. Bravo!";
    $ok=1;
  } else {
    echo "C'est faux, essaie encore.";
  }
} else {
  $b=rand(50,500);
  $a=rand(0,$b);
}
if ($ok==0) {
?>
<FORM METHOD="post">
<?php echo $a;?>+=<?php echo $b;?>
 &nbsp;&nbsp;
">
">
</FORM>
<?php
}
    echo "<CENTER><FORM METHOD="post">"
        ."</FORM>"
        ."</CENTER>\n";
?>
</HTML>

Le serveur affiche bien la question mais ne corrige pas la réponse et passe dirctement à la question suivante..
Merci pour votre aide.

5 réponses

Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
7 juil. 2008 à 12:40
if (isset($a)) {

et

Ca risque de coincer
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
7 juil. 2008 à 13:30
Hello,

@Bling 182 >  "> ^^

Arf ... marcheras pas ton code ! Tu ne récupère pas les données de $a, $b, et $c ...
Il faut utiliser $_POST['a'], $_POST['b'] et $_POST['c']

Ce qui donne :

<?php

$ok = false;

if( isset($_POST['a'], $_POST['b'], $_POST['c']) )
{
  $a = intval ($_POST['a']);
  $b = intval($_POST['b']);
  $c = intval ($_POST['c']);
  // On force le type INT (numerique) grâce à la fonction intval() = protection ;)

  if( $a + $c == $b )
  {
    echo 'Bravo !';
    $ok = true;
  }
  else
  {
    echo 'Ooops !';
  }
}
else
{
  $b = rand(50, 500);
  $a = rand(0, $b);
}
?>
<form action="?" method="POST">
 
  <?php echo $a; ?> + /> = <?php echo $b; ?>
  " />
  " />
 

</form>

Voila ^^ J'ai en plus corrigé le (X)Html, mis un type="text" à ton

<hr />Si ma reponse te convient, merci de l'accepter ! 
0
Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
7 juil. 2008 à 13:35
Je crois que le but est de récupérer la valeur "c" qui contient le résultat de l'addition affichée...
J'ai bien vu que a et b sont passés en hidden.

On peut récuperer la valeur des champs si register_globals est à on dans la config.
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
7 juil. 2008 à 14:01
^^

J'avais mal lu ;)

Je me bats juste contre cette façon de coder ^^ (portabilité maximum pour moi). On ne code plus comme ça aujourd'hui ... si on l'active c'est (normalement) pour tester des codes (ou on utilise des extract() et Cie)
Mais je me souviens plus si register_globals est on par défaut ...

<hr />Si ma reponse te convient, merci de l'accepter ! 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
7 juil. 2008 à 14:14
Chez moi il est off
Et tu as bien raison de te battre ;)
0
Rejoignez-nous