Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem zadávání jména do formuláře a vypisování

Dobrý den. Uvažujme následující kód:

<?

echo "<form action=\"index.php\" method=\"get\"><input type=\"text\" name=\"jmeno\"><input 

type=\"submit\" name=\"odeslat\" value=\"Odeslat jméno\"></form>";



if($jmeno=="" || $odeslat==1)

{echo "Zadej svoje jméno.";}

else{echo "Vaše jméno je ".$jmeno.".";}

?>

Dělá mi to to, že když do formuláře nic nezadám a kliknu na "Odeslat jméno" vypíše se: "Zadejte svoje jméno". Když zadám do formuláře jméno, tak se vypíše "Vaše jméno je $jmeno". Tedy je všechno v pořádku.

Přijde mi to trochu divné, protože if($jmeno=="" || $odeslat==1) - logičtější by mi tam přišlo && (a zároveň), ale když tam dám && a nezadám do formuláře nic, tak se vypíše: "Vaše jméno je ."(samozřejmě jen ta tečka, protože jsem nic nezadal), když do něj naopak něco zadám, tak se vypíše už všechno správně: "Vaše jméno je $jmeno."

Mají tyto operátory || a && v PHP snad jiný význam než v C? Proč to teda jde "jakoby obráceně"?

Mimochodem narazil jsem na kód na programujte.com, který by odpovídal mé úvaze, ale také jim nefunguje:


if($GLOBALS["poslano"]==1)://pokud byl formular odeslan  

if($GLOBALS["jmeno"]!=""):// [i][b]a pokud[/b][/i] bylo vyplneno jmeno  

echo "Vase zadane jmeno je ".$GLOBALS["jmeno"];//tak ho zobrazime  

else:  

echo "Nevyplnil jste jmeno";//pokud jmeno nebylo vyplneno, upozornime na tuto skutecnost  

endif;  

endif;

Je vlastně trochu jiný zápis toho mého(teda alespoň myslím - dokonce jsem si to už i zkopíroval a dělalo to co mě, tedy to co nechci). Pořád to vypisuje: "Vaše jméno je $jmeno" (když nic nezadám, tak samozřejmě nic, ale nikdy vlastně nedojde na kód pod else).

Děkuji za pomoc.

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny