2017-09-29 2 views
0

Donc, je construis un programme simple qui nécessite que l'utilisateur saisisse un nombre qui est ensuite affiché et généré en plusieurs nombres similaires aléatoires. Le programme demande alors à l'utilisateur de choisir la bonne variable, qui sera ensuite validée par le programme.PHP Q: Variables dans <?php ?> non accessible dans if/else

Je rencontre des problèmes avec ce que je pense être une variable n'étant pas 'disponible' faute d'un meilleur mot dans l'instruction if/else. J'ai l'impression de faire une erreur vraiment simple/stupide.

<?php 
$numb = $_GET["number"]; 
switch ($numb) { 
    case 1: 
     echo "1x<br>"; 
     $ans = 1; $n1 = rand(($ans - 5), ($ans + 5)); $n2 = rand(($ans - 5), ($ans + 5)); $n3 = 1; $n4 = rand(($ans - 5), ($ans + 5)); 
    break; 
    case 2: 
     echo "2"; 
    break; 
    case 3: 
     echo "3"; 
    break; 
} echo $ans; 

if(isset($_POST['submit'])) 
{ 
    $rb = $_POST['radio']; 
    if($rb == $ans){echo "test";} 
    else{echo "fail";} 
} 
?> 

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> 
<input type="radio" name="radio" value="<?php echo $n1; ?>"><?php echo $n1 ?> 
<input type="radio" name="radio" value="<?php echo $n2; ?>"><?php echo $n2 ?> 
<input type="radio" name="radio" value="<?php echo $n3; ?>"><?php echo $n3 ?> 
<input type="radio" name="radio" value="<?php echo $n4; ?>"><?php echo $n4 ?> 
<input type="submit" name="submit" value="submit" /> 
</form> 
+0

Vous obtenez toujours "échouer"? Changement de paramètre 'Request' après' Submit'. Après 'Submit',' $ ans' n'a pas de valeur. Vous devez changer le paramètre 'action' ou choisir une autre façon de conserver la valeur' $ ans'. –

Répondre

0

Vous devez définir les variables avant de les utiliser dans le commutateur/boîtier.

// Check if get is used 
if (isset($_GET['number'])){ 

$numb = $_GET["number"]; 
// predefine Variables here 
$ans = ''; 
$n1 = ''; 
$n2 = ''; 
$n3 = ''; 
$n4 = ''; 
switch ($numb) 
{ 
    case 1: 
     echo "1x<br>"; 
     $ans = 1; 
     $n1 = rand(($ans - 5), ($ans + 5)); 
     $n2 = rand(($ans - 5), ($ans + 5)); 
     $n3 = 1; 
     $n4 = rand(($ans - 5), ($ans + 5)); 
     break; 
    case 2: 
     echo "2"; 
     break; 
    case 3: 
     echo "3"; 
     break; 
} 
echo $ans; 

if (isset($_POST['submit'])) 
{ 
    $rb = $_POST['radio']; 
    if ($rb == $ans) 
    { 
     echo "test"; 
    } 
    else 
    { 
     echo "fail"; 
    } 
} 
?> 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> 
    <input type="radio" name="radio" value="<?php echo $n1; ?>"><?php echo $n1 ?> 
    <input type="radio" name="radio" value="<?php echo $n2; ?>"><?php echo $n2 ?> 
    <input type="radio" name="radio" value="<?php echo $n3; ?>"><?php echo $n3 ?> 
    <input type="radio" name="radio" value="<?php echo $n4; ?>"><?php echo $n4 ?> 
    <input type="submit" name="submit" value="submit"/> 
</form> 
<?php 
} else { 
    echo "Number not set in get!"; 
} 
0

Ceci est mon avis.

<?php 
$numb = $_GET["number"]; 
switch ($numb) { 
    case 1: 
     echo "1x<br>"; 
     $ans = 1; 
     $n1 = rand(($ans - 5), ($ans + 5)); 
     $n2 = rand(($ans - 5), ($ans + 5)); 
     $n3 = 1; 
     $n4 = rand(($ans - 5), ($ans + 5)); 
    break; 
    case 2: 
     echo "2"; 
    break; 
    case 3: 
     echo "3"; 
    break; 
} echo 'Answer : [' . $ans . ']<br>'; 

if(isset($_POST['submit'])) 
{ 
    $rb = $_POST['radio']; 
    echo 'PostAnswer : [' . $ans . ']<br>'; 
    if($rb == $ans) 
    { 
     echo "Good!"; 
    } 
    else 
    { 
     echo "Bad!"; 
    } 
} 
?> 

<form action="<?php echo $_SERVER['PHP_SELF']; ?>?number=1" method="POST"> 
<input type="radio" name="radio" value="<?php echo $n1 ?>"><?php echo $n1 ?> 
<input type="radio" name="radio" value="<?php echo $n2 ?>"><?php echo $n2 ?> 
<input type="radio" name="radio" value="<?php echo $n3 ?>"><?php echo $n3 ?> 
<input type="radio" name="radio" value="<?php echo $n4 ?>"><?php echo $n4 ?> 
<input type="submit" name="submit" value="submit" /> 
</form> 

Votre page change après avoir appuyé sur le bouton submit.

ex :) url_php = test.php paramètre de demande: nombre = 1

1) inputing /test.php?number=1

2) $ans = 1

3) Après avoir appuyé sur le bouton submit

4) $ans = ""

Comme ça! Vous devez maintenir ? Number = 1 ou le réparer!

+0

J'ai commencé à construire le programme pour inclure plus de cas de commutation et cela fonctionnera uniquement avec le cas/numéro 1. Le programme est le même que l'ajout du code du commutateur 1 au commutateur 2-10. Le programme va comme je l'ai dit travailler avec le cas 1 mais quand vous essayez 2-10 chaque choix sera incorrect. – endrillion

+0

Maintenant, je ne peux pas comprendre clairement ce que vous avez dit. Je pense que vous ne pouvez pas obtenir les données publiées en utilisant '$ _GET'. Que signifie "entrer un nombre"? –