NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: PHP-problem v programu

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
jirka.skop
Člen
Avatar
jirka.skop:9.10.2015 21:30

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"</br>";
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
Člen
Avatar
Numero:9.10.2015 22:03

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):9.10.2015 23:14

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
9.10.2015 23:14
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
jirka.skop
Člen
Avatar
jirka.skop:12.10.2015 9:11

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.