2017-09-29 11 views
0

私はユーザ入力に数字を入力して、いくつかのランダムな同様の番号にポストして生成する必要がある簡単なプログラムを構築しています。PHP Q:変数が<?php ?>のif/elseでアクセスできない

このプログラムでは、ユーザーが正しい変数を選択する必要があります。この変数は、プログラムによって検証されます。

私は、if/elseステートメントでは、より良い単語がないために変数が「利用できません」と考えている問題に悩まされています。

私は本当にシンプルな/愚かなミスをしているように感じる。

<?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

常に「失敗」しますか? 'Request'パラメータは' Submit'の後に変更されます。 'Submit'の後、' $ ans'は値を持ちません。 'action'パラメータを変更するか、' $ ans'値を維持するために他の方法を選択する必要があります。 –

答えて

0

変数をスイッチ/ケースで使用する前に定義する必要があります。

// 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

これは私の考えです。

<?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> 

submitボタンを押すとページが変更されます。

EX :) url_php = test.phpをリクエストパラメータ:数=入力環境1

1)/test.php?number=1

2)$ans = 1

3)submitボタンを押した後

4)$ans = "

このように! ?number = 1を維持するか、修正しなければなりません!

+0

私は、より多くのスイッチケースを含むようにプログラムを構築し始めました。これはcase/number 1でのみ機能します。プログラムはスイッチ1からスイッチ2-10にコードを追加する以外に同じです。プログラムは、私がケース1での作業を言ったようになりますが、2-10を試してみると、すべての選択肢が間違っています。 – endrillion

+0

あなたが言ったことをはっきりと理解できません。私は '$ _GET'を使って投稿されたデータを取得できないと思います。 「ユーザーが数字を入力する」とはどういう意味ですか? –

関連する問題