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
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
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
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 :-)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: