Diskuze: PHP-problem v programu

PHP PHP PHP-problem v programu American English version English version

Avatar
jirka.skop
Člen
Avatar
jirka.skop:

Ahoj,mám takový problem v php-proč se mi to předbíhá?Mám 2 náhodná čísla a zapíšu výsledek,ale při odeslání mi to počítá už s dalšímy čísly.
První stánka(index):
<?php
$cislo1 = rand(1,10);
$cislo2 = rand(1,10);
$znak = "+";
echo('<table border="10"><tr>');
echo('<td>' . htmlspecialchar­s($cislo1) . '</td>');
echo("<td>" . htmlspecialchar­s($znak) . "</td>");
echo("<td>" . htmlspecialchar­s($cislo2) . "</td>");
echo("</table>");
?>
<form action ="soucet.php" method="POST">
Zapiš výsledek: <input type="text" name="vysledek" />
<input type="submit" />

Druhá stránka(php):
<?php

require_once("in­dex.php");
$soucet = $cislo1 + $cislo2;
$vysledek = $_POST["vysledek"];

echo"";
if ($soucet == $vysledek) {
echo"<mark>Správ­ně</mark>";
} else {
echo"<mark>Špat­ně</mark>";
}

?>
Co dělám blbě?

 
Odpovědět 9.10.2015 21:30
Avatar
Numero
Redaktor
Avatar
Numero:

Index.php

<?php
$cislo1 = rand(1,10);
$cislo2 = rand(1,10);
$znak = "+";
echo('<table border="10"><tr>');
echo('<td>' . htmlspecialchars($cislo1) . '</td>');
echo("<td>" . htmlspecialchars($znak) . "</td>");
echo("<td>" . htmlspecialchars($cislo2) . "</td>");
echo("</table>");
?>
<form action ="soucet.php" method="POST">
Zapiš výsledek: <input type="text" name="vysledek" />
<input type="submit" />

Soucet.php

<?php
require_once("index.php");
/* Voláním index.php se ti znova provede soubor index.php
 * a znova se ti změní proměnné $cislo1 a $cislo2 (opět si projdou rand(0,10))
 */
$soucet = $cislo1 + $cislo2;
$vysledek = $_POST["vysledek"];

echo"";
if ($soucet == $vysledek) {
echo"<mark>Správně</mark>";
} else {
echo"<mark>Špatně</mark>";
}

?>

Co si ty proměnné uložit / poslat v <input type="hidden">

Kdyby si dosadil za proměnou cislo1 a 2 nějaké stále číslo a pak to otestoval, tak by ti to fungovalo, ale tam dělá "bordel" ten rand, který se znova provede při odeslání formuláře

Nahoru Odpovědět 9.10.2015 22:03
Co si člověk neudělá sám to nemá...
Avatar
Odpovídá na jirka.skop
Martin Konečný (pavelco1998):

zdar,
to je proto, že když odešleš formulář, tak se při tom includu znovu načte soubor, tzn. vygenerují se nová náhodná čísla.
Jestli to vážně chceš zpracovávat v jiném souboru, pak asi nejlepší bude si ta čísla hodit do session

session_start();
$_SESSION["cislo1"] = $cislo1 = rand(1, 10);
$_SESSION["cislo2"] = $cislo2 = rand(1, 10);

druhý soubor

session_start();
$cislo1 = $_SESSION["cislo1"];
$cislo2 = $_SESSION["cislo2"];
 
Nahoru Odpovědět  +2 9.10.2015 23:14
Avatar
jirka.skop
Člen
Avatar
jirka.skop:

Díky,toto mě nenapadlo.

 
Nahoru Odpovědět 12.10.2015 9:11
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.