Autor | Zpráva | ||
---|---|---|---|
MaxDJs Profil * |
#1 · Zasláno: 3. 11. 2010, 20:54:32
Zdravím,
bylo by možno mi poradit, proč mi nefunguje rozhodování? Ať do proměnné peníze zadám jakoukoli částku vypisuje mi to pouze "Můžete si dát kávu." Tady je kód: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Untitled Document</title> </head> <body> <h1> Automat </h1> <p>Nabídka nápoju:</p> <ul> <li>Káva: 6,- Kc</li> <li>Caj: 10,- Kc</li> <li>Kakao: 25,- Kc</li> </ul> <p>Zadejte obnos peněz:</p> <p> <?php $kava = 6; $caj = 10; $kakao = 25; $penize = 10; if ($penize >= $kava): echo "Mužete si dát kávu."; elseif ($penize >= $caj): echo "Můžete si dát čaj."; elseif ($penize >= $kakao): echo "Můžete si dát kakao."; else echo "Dal jste do automatu málo peněz"; ?> </p> </body> </html> |
||
Davex Profil |
#2 · Zasláno: 3. 11. 2010, 21:01:59
Tak
elseif funguje. Při splnění první podmínky se další větve neprovádějí. Aby se provedlo poslední else , tak by peněz muselo být méně jak 6.
|
||
HajekJirka Profil |
#3 · Zasláno: 3. 11. 2010, 21:04:15
MaxDJs:
Správně by to bylo bez else. Pouze if(podmínka), if (podmínka), atd. Potom Ti to vypíše co vše si za své peníze můžeš koupit. |
||
Keeehi Profil |
#4 · Zasláno: 3. 11. 2010, 21:04:53 · Upravil/a: Keeehi
To co používáš je alternativní syntaxe. (Doporučil bych ji nepoužívat)
Struktura vypadá takto: <?php if ($a == 5): echo "a equals 5"; echo "…"; elseif ($a == 6): echo "a equals 6"; echo "!!!"; else: echo "a is neither 5 nor 6"; endif; ?> Lepší je verze se závorkami: <?php if ($a > $b) { echo "a is bigger than b"; } elseif ($a == $b) { echo "a is equal to b"; } else { echo "a is smaller than b"; } ?> A jelikož je v nich je jeden příkaz, můžou se vynechat. Ale to bych spíše nedoporučoval. Později tam řádek přidáš a pak tu chybu hledej. Ale je to možné. Viz <?php if ($a > $b) echo "a is bigger than b"; elseif ($a == $b) echo "a is equal to b"; else echo "a is smaller than b"; ?> A za další, ta logika je špatně. EDIT: viz [#2] a [#3] |
||
Tori Profil |
#5 · Zasláno: 3. 11. 2010, 21:14:08 · Upravil/a: Tori
mohlo by to být pořadím:
if ($penize >= $kakao): echo "Můžete si dát kakao."; elseif ($penize >= $caj): echo "Můžete si dát čaj."; elseif ($penize >= $kava): echo "Mužete si dát kávu."; else: echo "Dal jste do automatu málo peněz"; endif; "Jakoukoli částku" znamená zřejmě "jakoukoli vyšší nebo rovno ceně kafe" (při $penize==0 by se mělo objevit "málo peněz")? Taky pokud je první podmínka splněna, další (elseif) se přeskočí. edit: pardon, všimla jsem si nových příspěvků, ale ruka byla rychlejší |
||
Nox Profil |
#6 · Zasláno: 3. 11. 2010, 21:24:56
Keeehi:
„Později tam řádek přidáš a pak tu chybu hledej“ Že píšeš 2. řádek a nemáš tam závorky si všimneš (pokud nejsi zvyklý na endif nebo python), vynechávám kde můžu a ikdyž dělám kvanta nepozorností, tak toto se mi ještě nestalo |
||
Keeehi Profil |
#7 · Zasláno: 3. 11. 2010, 21:54:06
Nox:
Taky je vynechávám, ale jelikož začíná tak bych rozhodně doporučil závorky psát všude. Až bude zkušenější, klidně ať si je vynechává. |
||
Nox Profil |
#8 · Zasláno: 3. 11. 2010, 22:04:18
Oka
|
||
AM_ Profil |
#9 · Zasláno: 3. 11. 2010, 22:25:51
Keeehi:
„To co používáš je alternativní syntaxe. (Doporučil bych ji nepoužívat)“ mohu vědět, proč? sám ji občas použivám (např. když mám podmínku nebo cyklus na výpis většího úseku HTML) - tam mi přijde přehlednější mít <?php endif?> místo <?php }?> |
||
Keeehi Profil |
#10 · Zasláno: 3. 11. 2010, 23:01:52 · Upravil/a: Keeehi
AM:
Už jenom třeba pro to, že některé programy zvýrazňují závorky patřící k sobě. Ano, odsazováním je také vidět, která závorka ke které patří, ale při delším kódu, kde se musí scrollovat už se může člověk lehce ztratit. Konstrukce if(){ } Moje doporučení tedy není kvůli tomu, že by alternativní syntaxe by byla pro php script nějak náročná (rychlost, paměť, atd.). |
||
Časová prodleva: 13 let
|
0