Autor | Zpráva | ||
---|---|---|---|
Joan Profil |
Zdravím,
tady jsem se před nedávnem ptala, co je potřeba vědět k udělání zatím jednoduchého školního testu. Nakonec jsem se pustila do toho PHP, modul PHP ve spolupráci s Apache serverem na localhostu mi šlape a dopracovala jsem "školní test" do stadia, kdy jakž takž funguje podle mých představ: HTML kód: <form action="hodnoceni.php" method="post"> <p><fieldset> <legend><b>Kolik hran má krychle?</b></legend> <input type="radio" name="otazka1" value="a"> 6<br> <input type="radio" name="otazka1" value="b"> 12<br> <input type="radio" name="otazka1" value="c"> 8<br> </fieldset></p> <p><fieldset> <legend><b>Jaká je chemická značka zinku?</b></legend> <input type="radio" name="otazka2" value="a"> Zk<br> <input type="radio" name="otazka2" value="b"> Zi<br> <input type="radio" name="otazka2" value="c"> Zn<br> </fieldset></p> <input type="submit" value="Odešli"> </form> PHP kód: <?php if ($otazka1 == "b") {echo "Výborně!<br />";} else {echo "Chyba<br />";} if ($otazka2 == "c") {echo "Výborně!<br />";} else {echo "Chyba<br />";} ?> <?php if (($otazka1 == "b") && ($otazka2 == "c")) {echo "Jsi pašák!<br />";} else {echo "Příště to bude určitě lepší.<br />";} ?> <p><a href="testy.html">Skoč zpátky na zadání</a></p> ale pouze pokud je z každého <fieldset> vybrána položka. Pokud se zapomene, dostanu opakovaně hlášku Notice: Undefined variable: otazka2 in C:\ComplexWebServer\http_docs\testiky\hodnoceni.php on line 8 a to i když úplně na začátek skriptu vložím (pro každý <fieldset>) if (isset ($_POST['$otazka1']) && !empty($_POST['$otazka1'])) tak je mi to houby platné. Na těchto pro mě vzorových stránkách lze i vynechat některé z otázek a ve výsledku je vypsáno, kolikrát se neodpovědělo. Líbí se mi, že při rekapitulaci se v testu zobrazí zvýrazněná správná odpověď a současně moje volby. Dá se vůbec ECHO formátovat pomocí CSS? Aspoň aby se správná/špatná odpověď zobrazila vedle konkrétní otázky. Googlím, googlím (i v angličtině) ale asi se špatně ptám... |
||
mattyZEM Profil |
Joan:
„(isset ($_POST['$otazka1']) && !empty($_POST['$otazka1']))“ $otazka1? if(isset($_POST['otazka1'])){} Ten dolar značí proměnnou, máš ho už u $_POST, mezi apostrofy nepatří. |
||
Joan Profil |
#3 · Zasláno: 5. 4. 2010, 18:00:56
mattyZEM:
Hm, tak ani toto bohužel "undefined variable" neřeší: <?php if (isset($otazka1) && !empty($otazka1)) { if ($otazka1 == "b") {echo "Výborně!<br />";} else {echo "Chyba<br />";} } if (isset($otazka2) && !empty($otazka2)) { if ($otazka2 == "c") {echo "Výborně!<br />";} else {echo "Chyba<br />";} } ?> <?php if (($otazka1 == "b") && ($otazka2 == "c")) {echo "Jsi pašák!<br />";} else {echo "Příště to bude určitě lepší.<br />";} ?> <p><a href="testy.html">Skoč zpátky na zadání</a></p> |
||
panther Profil |
#4 · Zasláno: 5. 4. 2010, 19:06:03
Joan:
„Hm, tak ani toto bohužel "undefined variable" neřeší:“ porovnej si ty dva zápisy. Ten, který je ti nabízen [#2] a ten, který používáš ty. Jsou to dvě různé proměnné. if(isset($_POST['otazka1'])){} // proměnná POST s indexem otazka1 if(isset($otazka1)){} // proměnné otazka1 |
||
Joan Profil |
#5 · Zasláno: 5. 4. 2010, 20:25:41 · Upravil/a: Joan
panther:
Ó, díky, já se navíc ještě koukám do knížky od Jiřího Brázy "PHP 5 začínáme programovat" a zapomněla jsem, že zdůraznil, že ten zápis bez toho $_POST používá kvůli přehlednosti kódu (a register_globals mám samosebou vypnuté). A začínám mít guláš v tom, co vlastně je u mě proměnná, já měla za to, že otazka1 a otazka2. A Ty píšeš, že je to index, ne proměnná... Tento kód mi už relativně začíná fungovat <?php if (isset($_POST['otazka1'])) { if ($otazka1 == "b") {echo "Výborně!<br />";} else {echo "Chyba<br />";} } if (empty($_POST['otazka1'])) {echo "Nevyplněno...<br />";} if (isset($_POST['otazka2'])) { if ($otazka2 == "c") {echo "Výborně!<br />";} else {echo "Chyba<br />";} } if (empty($_POST['otazka2'])) {echo "Nevyplněno...<br />";} if (($_POST['otazka1'] == "b") && ($_POST['otazka1'] == "c")) {echo "Jsi pašák!<br />";} else {echo "Příště to bude určitě lepší.<br />";} ?> <p><a href="testy.html">Skoč zpátky na zadání</a></p> ale dost dobře nechápu, proč se zase zjevuje hláška o nedefinovaném indexu otazka1 (pro upřesnění: CO je u mě vlastně proměnná?). Ale pouze tehdy, když vyplním druhou část testu nebo žádnou. Když vyplním první a druhou ne, je vše kupodivu OK. Nevyplněno... Nevyplněno... Notice: Undefined index: otazka1 in C:\ComplexWebServer\http_docs\testiky\hodnoceni.php on line 21 Příště to bude určitě lepší. Skoč zpátky na zadání P.S.: Až se tímto prokoušu, je proveditelné výsledky nějak nastylovat do HTML dokumentu, aby bylo zřejmé, ke které otázce byla která odpověď? Moc děkuji za trpělivost :-) |
||
Časová prodleva: 14 let
|
0