Ahoj, mám ačátečnický dotaz. Udělal jsem si palinkej sript.
kod:
Začátečnický dotaz
<?php
$jmeno = $_POST["jmeno"];
$pivo = $_POST["pivo"];
if ($jmeno and $pivo>=10) {
echo "".$jmeno."by se měl léčit!".$pivo." kusů je opravdu hodně.";
}else{
echo "Tak to ještě jde, ale víc už nechlastej!";
}
?>
<form action="" method="post">
jmeno:<input type="text" name="jmeno" size="4">
počet piv:<input type="text" name="pivo" size="4">
<input type="submit" value="odeslat">
</form>
Ale při zobrazení mě to píše text s else. Jinak to funguje. Nevím jak docílím čistého formuláře, bez textu else na ním.?
Předem díky za pomoc :)
Musíš to rozdělit do dvou souborů:
- zobrazení formuláře
- vyhodnocení formuláře
Spoustu dalších vychytávek najdeš v knize
http://www.kosek.cz/php/php-tvorba-interaktivnich-internetovych-aplikaci.pdf
mno, mně to žádný elze neukazuje...
blahapet: Neřeš to. Až to poiu spraví tak možná uvidíš nejen else, ale i elze.
palinkej sript má blbě podmínku
co je větší $jmeno nebo 10?
co dá $jmeno and $pivo?
<HTML>MzM, je lépe se zeptat: co je opakem "jméno and pivo >= 10"?
Přeci "not jméno or pivo < 10". A když je stránka načtená načisto, je jméno prázdné, tedy podmínka v else je splněna. Doporučil bych tazateli mrknout se na elseif.</HTML>
$jmeno and $pivo>=10
má stejný význam jako:
a) ($jmeno and $pivo)>=10
b) $jmeno and ($pivo>=10)
Raději bych tam ty závorky dal, aby nebyly pochybnosti.
<HTML>Kit: porovnávače mají vyšší prioritu, závorky nejsou třeba.</HTML>
and má vyšší prioritu, než >=.
Nepleteš si to s &&?
<HTML>A neplete si to PHP? :)</HTML>
http://www.php.net/manual/cs/language.operators.precedence.php
Nipal má pravdu. Porovnávače mají vyšší prioritu.
No dobrá, už jsem to zjistil taky. Poiu mezitím řeší rozdělení skriptů. Tak, jak nám to tady předhodil ve svém prvním příspěvku, to nemůže fungovat správně.
Možná by to mohlo vypadat takto i bez dělení skriptů:
$jmeno = $_POST["jmeno"];
$pivo = $_POST["pivo"];
if (!$jmeno)
echo "...formulář..."
elseif($pivo>=10) {
echo "".$jmeno."by se měl léčit!".$pivo." kousků je opravdu hodně.";
}else{
echo "Tak to ještě jde, ale víc už nechlastej!";
}
s puvodnim dotazem to moc nesouvisi, ale s tou prioritou jo.
jeste do vcerejska jsem si myslel, ze && je totez co and a || totez co or. ale neni tomu tak:
"||" has a greater precedence than "=" which has a greater one than "or"
// same as ($e = (false || true)),
// expression is true and $e ist assigned to true
$e = false || true;
// same as (($e = false) or true),
// expression is true but $e is assigned to false
$f = false or true;
"&&" has a greater precedence than "=" which has a greater one than "and"
// same as ($e = (true && false)),
// expression is false and $e ist assigned to false
$g = true && false;
// same as (($e = true) and false),
// expression is false but $e is assigned to true
$h = true and false;
http://www.php.net/manual/en/language.operators.logical.php
zvlaste zakerne je to v pripade, kdy pisete:
$vysledek = /* nejaky (dlouhy) vyraz s and a or */ ;
if($vysledek) { ... }
Tonik: Když se podíváš na odkaz, který jsem dodal, tak je to tam vidět.
V kontextu mají logické operátory stejný význam. Rozdíl je pouze v prioritě.
Ale aby ses nedivil, tak já jsem to taky nevěděl a určitě taky většina ostatních. U složité logiky to jistím vždy závorkami, takže je mi v podstatě jedno, jestli použiji and nebo &&.
http://peter-mlich.wz.cz/x/ww/js/operatory.htm
o zbytek prispevku pozadejte wz.cz , opet mne to odhlasilo. Maji forum pokazene.
<HTML>Požádalo jsem se samo - zbytek příspěvku nestojí za řeč. Fórum pokažené není, jenom nemá rádo některé pomalejší uživatele.</HTML>
no ale neni feeer :)
napriklad jsem vygoogloval 2 dalsi dobre linky s operatory k PHP, tohle je k JS.
Chjo, to je fakt takovej problém zmáčknout to tlačítko "zpět"? :-(
R.U.R.: Neprovokuj Petu. Mimoto v IE a ve Firefoxu má tlačítko zpět i jako mazací vlastnost. Tedy, když dáš zpět, tak to cos tam předtím napsal nenávratně zmizí. Jediná Opera si to pamatuje. Jenže Peta prej Operu nepovažuje za plnohodnotný prohlížeč (viz dávné vlákno), tak ho k tomu nepřinutíš.
=Tomík=
Z tebe zase čiší skálopevný uživatel Opery :) - MFirefox (i mozilla suite) i IE si data vyplněné ve formuláři (po tlačítku zpět) pamatují
(ale pouze pokud..
a) formulář nebyl vytvořen javascriptem, nemění se javascriptem nějak hodnoty např po onload a podobně ;)
b) neprobíhá moc přesměrování na serveru.. (do dvou location headeru to funguje spolehlive snad všude, s více jak kdy..)
)
</flame>
peta: i malé děcko, které by nedostalo hračku, by už za ten čas, co to tady řešíš, dalo pokoj. Vezmi to prostě jako fakt.
Co ti brání sepisovat delší příspěvky v nějakém oblíbeném editoru a pak je sem kopírovat?. Co ti brání registrovat si tady nějaký HELPDESK a ukládat příspěvky tam a z fóra na ně jen odkazovat? Co ti brání před odesláním označit text a zmáčknout CtrlC, když už jsi takový psavec a chceš psát dlouhé příspěvky?
Freeze: No to jsem ;) Ale jako kóder používám i zmiňované, ale né tak často. Takže neznám všechny jejich zvyky. Na druhou stranu, když už jsem v nich (Firefox) musel být, tak vždy mazal obsah formuláře po přechodu zpět. Nehledě na to, že Peta to též říká, že obsah je nenávratně pryč. Takže kdo ví, jak to skutečně je.
R.U.R. (jsrosa.wz.cz)
Ja tlacitko zpet ZMACKL!
To ti prave smaze prispevek a zobrazi se hlaska o prihlaseni. Pouzivam default nastaveny FF. Na jinych strankach mi to tlacitko funguje bez problemu. Jen tady to maji pokazene.
Pri zmacknuti tlacitka zpet se stane nasledovne.
wz.cz zjisti, ze nejsem prihlasem, odstrani z php kodu formular a zobrazi mi hlasku o prihlaseni.
Ty mas totiz jinak nastavene kesovani. Pak se nediv, kdyz te na nekterych strankach neodhlasi a nekdo tam bude psat na tve jmeno prispevky jenom zmacknutim tlacitka zpet.
Myslíš, že mně to neodhlašuje? Pokud překročím dobu, tak je jasný, že mně to odhlási. No co. Jdu tlačítkem zpět (tady ostatní selhávají), zkopíruji to co jsem napsal, přihlásím se, vložím to zpátky, klik a je to. A pokud jde o to "blbý kešování", pak se mýlíš. Sice zobrazí to, co bylo předtím, ale pokud pak na něco klikneš, tak tě to dál nepustí, protože jsi už dávno odhlášenej. Ten blbeček sice uvidí, co jsem napsal, ale nemůže se za mne už vydávat.