Я в некотором роде новичок в программировании (в настоящее время учусь на курсе), и наша задача на выходных состоит в том, чтобы создать веб-сайт (действительно базовый), в котором мы должны решить добавление двух случайных чисел. Я смог создать эти случайные числа, но с другой стороны, создать нечто вроде поля, которое пользователь (в данном случае я) должен заполнить и «отправить»; и тогда сайт должен показать мой собственный ответ и правильный. В дополнение к этому я столкнулся с тем, что при создании функции отправки веб-сайт обновляется, и эти случайные числа меняются каждый раз.

Мой код выглядит следующим образом (извините за использование немецких терминов):

<?php
$zufallszahl = rand(1,100) . "+";
$zufallszahl1= rand(1,100);
$solution= bcadd($zufallszahl,$zufallszahl1);
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Homework Taschenrechner</title>
</head>
<body>
    <h1>Additionen</h1>
    <hr>
    <h4>Addiere die folgenden Zahlen:</h4>
    <p> <?php echo $zufallszahl; echo $zufallszahl1 ?> <p>
    <form method="post">    
        <input type="number" name="Usereingabe" min="0" placeholder="Deine Antwort">
    </form>
</body>
</html>

Я был бы очень признателен за «простое» решение, я погуглил этот вопрос уже час, но большинство решений слишком сложны для меня сейчас, и я в итоге не понимаю, о чем этот код. Итак, просто подытожив, я хотел бы знать, как создать поле отправки, которое не обновляет веб-сайт, чтобы случайные числа оставались, и поле, которое «проверяет» ответ и говорит, что оно истинно / ложно.

-3
Mike_AZ 26 Окт 2019 в 16:18

3 ответа

Лучший ответ

Хотя, если бы вам разрешили использовать JS, это было бы намного проще. Однако, поскольку вы хотели это только на PHP, приведенный ниже код должен работать. Не стесняйтесь изменять его в соответствии с вашими потребностями

<?php
if(!isset($_POST['zufallszahl']) && !isset($_POST['zufallszahl1'])) {
    $zufallszahl = rand(1,100);
    $zufallszahl1= rand(1,100);
    // $solution= bcadd($zufallszahl,$zufallszahl1);
} else {
    $zufallszahl = $_POST['zufallszahl'];
    $zufallszahl1 = $_POST['zufallszahl1'];
    $solution = bcadd($zufallszahl,$zufallszahl1);
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Homework Taschenrechner</title>
</head>
<body>
    <h1>Additionen</h1>
    <hr>
    <h4>Addiere die folgenden Zahlen:</h4>
    <p> <?php echo $zufallszahl . " + "; echo $zufallszahl1 ?> <p>
    <form method="post">    
        <input type="number" name="zufallszahl" value="<?php echo $zufallszahl; ?>" readonly />
        <input type="number" name="zufallszahl1" value="<?php echo $zufallszahl1; ?>" readonly />
        <input type="number" name="Usereingabe" min="0" placeholder="Deine Antwort" value="<?php echo $_POST['Usereingabe'] ?? ''; ?>">

        <button>Check Answer  </button>

       <?php if(isset($_POST['Usereingabe'])){ ?>
           <?php if($_POST['Usereingabe'] == $solution)
                    echo "Correct Answer";
             else {
                   echo "Wrong Answer. Correct answer is $solution";
            } ?>
       <?php } ?>

    </form>
</body>
</html>

< Сильный > Примечание Если вы используете версию ниже PHP 7, просто используйте <?php echo isset($_POST['Usereingabe'])? $_POST['Usereingabe'] : ''; ?> вместо <?php echo $userSolution ?? ''; ?>

2
MD.Tabish Mahfuz 26 Окт 2019 в 14:02

Таким образом, вы можете хранить их в переменной _SESSION, а когда они отправляют ответ, вы можете сравнить переменную _POST с переменной _SESSION.

<?php
if(isset($_POST['Usereingabe']))
{
   if($_POST['Usereingabe'] == $_SESSION['sol']){
      $check = "correct answer";
     }
   else
    { $check = "wrong answer"; }
}
else {
$zufallszahl = rand(1,100) . "+";
$zufallszahl1= rand(1,100);
$solution= bcadd($zufallszahl,$zufallszahl1);
$_SESSION['zufallszahl1']=$zufallszahl1;
$_SESSION['zufallszahl']=$zufallszahl;
$_SESSION['sol']=$solution;
}
// do anything else u want
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Homework Taschenrechner</title>
</head>
<body>
    <h1>Additionen</h1>
    <hr>
    <h4>Addiere die folgenden Zahlen:</h4>
    <?php if(isset($check)) { echo $check; } ?>
    <p> <?php echo $_SESSION['zufallszahl']; echo $_SESSION['zufallszahl1']; ?> <p>
    <form method="post" action="*your file.php*">    
        <input type="number" name="Usereingabe" min="0" placeholder="Deine Antwort">
        <button type="submit">Submit!</button>
    </form>
</body>
</html>
0
Popescu Ion 26 Окт 2019 в 14:59

Вы можете использовать два дополнительных входных тега в форме type="hidden", которые содержат случайные числа в своих полях значений, и проверить, не являются ли они пустыми. Если они есть, генерируйте новые, в противном случае сохраняйте старые.

-1
Entcraft44 26 Окт 2019 в 13:29