Átnézitek mi a hiba? (PHP)
<html>
<header>
</header>
<body>
<?php
$uralkodok = array(
array("Mátyás", "1000-1045"),
array("Lipót", "1000-1001"),
array("Horthy", "1000-1544"),
array("IV. Károly", "1000-1545"),
array("I. István", "1000-1123"));
$error_data = false;
$a=rand(0, 4);
$b=rand(0,1);
$kiirt=$uralkodok[$a][$b];
echo $uralkodok[$a][$b];
print "<br/>";
?>
<form method="POST">
<br/>
<i>(pl.: 1921-1931)</i>
<br/>
<br/>
<input type="text" id="input" name="input">
<br/>
<br/>
<input type="submit" id="submit" name="submit">
<br/>
<br/>
</form>
<?php
$feltetelek0='/^[0-9\-]/';
$feltetelek1='/^[a-zA-Z0-9\.\ \-]/';
if($b==1){
$b--;
}
else{
$b++;
}
$kiirt=$uralkodok[$a][$b];
if(isset( $_POST["submit"] ) ) {
$input=$_POST["input"];
$submit=$_POST["submit"];
if($input){
if($input==$kiirt){
$error_data = false;
} else{
$error_data =true;
}
if($error_data==true){
echo "Nem helyes";
} else{
echo "Helyes";
}
}
}
?>
</body>
</html>
Amikor beirom az input mezőbe a megfelelő választ akkor nem az annak megfelelő infót írja ki. Pl.: helyes megoldásnál azt írja, hogy "Helytelen".
Egyébként a feltételek, amik megállapítják és/vagy kiírják hogy milyen a megoldás, az isset függvényen belül van, de mégis a gomb megnyomása előtt már kiírja, hogy Helyes vagy Helytelen.
Bár kipróbálni nem tudom, de szerintem a hiba ott van, hogy sorsolsz ugye két random értéket az elején, elkészíted a formot, majd ha volt post ellenőrzöd.
A gond ott van, hogy a post után újra elkészíted a két random $a és $b értékét, és ezzel akarod összehasonlítani a postolt értéket, tehát a $a és $b értéke ismét véletlenszerű lesz, nem pedig az, amit a kérdésben leraktál, ezért lesz többnyire helytelen a válasz.
Rakd le mondjuk hidden inputokba a $a és $b-t és ha volt post, akkor az ellenőrzésnél azokat használda válasznál.
Vagy rakhatod sessionbe, bármi, csak tárold el hogy mi volt a kérdés :)
Remélem segítettem.
Akkor íme egy példa:
tegyük fel, hogy a random a-nak 3-at, b-nek 0-t sorsol.
Ekkor ugye kirakod, hogy "IV. Károly", és az input mezőt, a válaszra várva.
A user beírja a helyes megoldást: 1000-1545 a tömböd alapján és rányom a gombra.
Ilyenkor újra lefut a php kódod, tehát a-nak ismét ad egy random értéket, pl. 2 b-nek pl. 1.
Tehát te az ellenőrzésnél az $uralkodok[2][0]-t fogod nézni, ami helytelen.
Ez azért történt, mert a postolás után elveszett az eredeti a=3 és b=1 érték, hiszen újra lefutott az egész kód.
Így már érthető?
De lehet úgy is,hogy két kódba rakod az egészet.
<form action="ellenorzes.php" method="post">
és akkor az ellenorzes.php ba rakod a megfelelő részt.
Ott pedig kiírod az eredményt majd vagy egy formmal vagy sima linkként visszairányítod a kerdes.php-ra..
Hupsz!
Értem, és valózsínüleg ez a gond, de nem tudom megvalósítani.
<input type="text" id="input" name="a_value" value="ide echozd a $a-t">
<input type="text" id="input" name="b_value" value="ide echozd a $b-t">
és az if($b==1){ részt tedd az isset részbe és a POST-ból vedd a-és b értékét:
if(isset( $_POST["submit"] ) ) {
$b = $_POST["b_value"];
$a = $_POST["a_value];
if($b==1){
$b--;
}
else{
$b++;
}
stb...
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!