Маленькая игра в кости, которая не воспроизводится должным образом

Это игра в кости, когда пользователь выбирает число и нажимает «Отправить», на странице случайным образом отображается число на кубике, и если пользователь угадал правильно, он должен сказать «да, вы все сделали правильно», иначе он скажет «извините, вы ошиблись». Но это не будет эхом "вы угадали!" когда число совпадает. В чем проблема? Он говорит, извините, это неправильно, несмотря ни на что. Большое спасибо!

<html>
<body>
<h1>Dice Game!</h1>

<h1>"Please guess a number on the dice!"</h1>


<?php
if ($_POST['subBtn']) {
    $num = $_POST['number'];

    if ($num == "$roll") {
        $comment = "you guessed right!";
    } else if ($num != "$roll") {
        $comment = "sorry it's wrong!";
    } 
}
?>

<p>     
<form name="number" action="activity-dice-game.php" method="post">
<select name="number">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
</select>
<input type="submit"name="subBtn" value="submit"/></input>
</form>
</p>

<?php
$roll = rand(1,6); 
echo "<p>You rolled a " . $roll . ". </p>";
echo "<img src=\"images/die" . $roll . ".gif\" alt=\"die image\">";
?>

</b> <? echo $comment; ?><br />

</body>
</html>

person meowwwwww    schedule 13.04.2016    source источник
comment
у вас также, похоже, много конечных тегов, и вы также использовали короткие теги php в конце файла (в какой-то момент ваш мир взорвется).   -  person DevDonkey    schedule 13.04.2016
comment
Вы должны увидеть ОШИБКИ, если потрудитесь заглянуть в свой журнал ошибок PHP. Вы не работаете $roll до тех пор, пока ПОСЛЕ того, как вы не попытаетесь проверить его на выбранном   -  person RiggsFolly    schedule 13.04.2016
comment
Если вы запустите его, вы получите уведомление о неопределенной переменной, потому что вы пытаетесь сослаться на переменную ($roll) до того, как она была определена.   -  person Henders    schedule 13.04.2016
comment
if ($num == "$roll") { Неопределенная переменная $roll   -  person Daan    schedule 13.04.2016


Ответы (2)


Проблема в том, что когда вы загружаете форму $roll, ничего не устанавливается, когда вы проверяете, равен ли $num, отправленный пользователем, ей! Это означает, что несмотря ни на что

if($num == $roll)

Эквивалентно:

if($num == null)

Что никогда не будет правдой!

Просто поместите $roll = rand(1,6) в начало скрипта.

person Keeleon    schedule 13.04.2016
comment
Эээ... Где вы видите if($num == $rand) в коде? - person RiggsFolly; 13.04.2016
comment
@RiggsFolly, мой плохой! У меня ранд застрял в голове. Отредактировано - person Keeleon; 13.04.2016

Это должно работать:

<html>
<body>
<h1>Dice Game!</h1>

<h1>"Please guess a number on the dice!"</h1>


<?php
if ($_POST['subBtn']) {
    $num = $_POST['number'];
    $roll = rand(1,6); 

    if ($num == "$roll") {
        $comment = "you guessed right!";
    } else if ($num != "$roll") {
        $comment = "sorry it's wrong!";
    } 
}
?>

<p>     
<form name="number" action="activity-dice-game.php" method="post">
<select name="number">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
</select>
<input type="submit"name="subBtn" value="submit"/></input>
</form>
</p>

<?php
echo "<p>You rolled a " . $roll . ". </p>";
echo "<img src=\"images/die" . $roll . ".gif\" alt=\"die image\">";
?>

</b> <? echo $comment; ?><br />

</body>
</html>
person Ger Smits    schedule 13.04.2016