Soy un poco nuevo en la programación (actualmente estoy tomando un curso) y nuestra tarea durante el fin de semana es construir un sitio web (realmente básico) donde tengamos que resolver la suma de 2 números aleatorios. Pude crear esos números aleatorios, pero con qué es, para crear algo así como un campo que el usuario (en este caso yo) tiene que completar y "enviar"; y luego el sitio web debe mostrar mi propia respuesta y la correcta. El problema que estoy enfrentando además es que cuando creo una función de envío, el sitio web se actualiza y esos números aleatorios cambian cada vez.

Mi código se ve así (perdóname por usar términos en alemán):

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

Realmente agradecería una solución "simple", busqué en Google este problema durante una hora, pero la mayoría de las soluciones son demasiado complicadas para mí en este momento, y termino sin entender de qué se trata el código. Para resumir, me gustaría saber cómo crear un campo de envío que no actualice el sitio web para que los números aleatorios permanezcan y un campo que "verifique" la respuesta y diga su verdadero / falso.

-3
Mikail Kilic 26 oct. 2019 a las 16:18

3 respuestas

La mejor respuesta

Aunque, si se le permitiera usar JS, sería mucho más simple. Sin embargo, dado que lo quería solo en PHP, el siguiente código debería funcionar. Siéntase libre de modificarlo según sus necesidades

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

NOTA Si está utilizando la versión debajo de PHP 7, simplemente use <?php echo isset($_POST['Usereingabe'])? $_POST['Usereingabe'] : ''; ?> en lugar de <?php echo $userSolution ?? ''; ?>

2
MD.Tabish Mahfuz 26 oct. 2019 a las 14:02

Por lo tanto, puede mantenerlos en una variable _SESSION y cuando envían la respuesta, puede comparar la variable _POST con la _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 oct. 2019 a las 14:59

Puede usar dos etiquetas de entrada adicionales en su forma de type="hidden" que contienen los números aleatorios en sus campos de valor, y verificar si están vacías. Si lo están, genere nuevos, de lo contrario, mantenga los viejos.

-1
Entcraft44 26 oct. 2019 a las 13:29