Permalänk

empty i PHP Problem...

Tjena, satte och lekte med PHP i natt och stötte på ett problem. hur skall man göra om man vill att det skall komma ett felmeddelande om du inte har skrivit i något alls i textfältet?

<html> <head> <title>Untitled Document</title> </head> <body> Vad är dig favorit mat? <form name="form1" method="post" action="start.php"> <input type="text" name="mat"> <input type="submit" name="Submit" value="Kolla vad jag tycket!"> </form> <?php $p = "pizza"; $h = "hamburgare"; $t = "tacos"; if (isset ($_POST['mat'])) { if (($_POST['mat']) == $p || ($_POST['mat']) == $h || ($_POST['mat']) == $t) { echo "Fy fan va gött!"; } elseif (($_POST['mat']) == empty) { echo "Du måste skriva in något... =("; } else { echo "Fy fan va äkligt!"; } } ?> </body> </html>

Jag har provat med "empty" med det verkar inte fungera..

Permalänk

elseif (($_POST['mat']) == '')

Permalänk
Medlem

elseif(empty($_POST['mat']))

Visa signatur

The difference between stupidity and genius - the latter has limits

Permalänk

Antar att detta borde fungera också:

elseif (($_POST['mat']) == NULL)

Eller kanske

elseif (is_null($_POST['mat']))

Visa signatur

"Knowledge amplification. What he learns, we all learn. What he knows, we all benefit from."

Permalänk
Medlem

hehe en sida som kollar vad för mat du gillar eller?:p

Visa signatur

OMG

Permalänk
Hedersmedlem

Detta brukar jag använda:

elseif (!$_POST['mat'])

Sedan kan du ta bort () runt $_POST-variablerna, de är helt onödiga.

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Medlem

<!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" xml:lang="en" > <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/> <title>Favoriträtt</title> </head> <body> Vilken är din favoriträtt? <form method="post" action=""> <input type="text" name="mat"> <input type="submit" name="Submit" value="Kolla vad jag tycker!"> </form> <?=($_POST['mat']?(in_array($_POST['mat'],array('tacos','pizza','hamburgare','sushi'))?'Mums, '.$_POST['mat']:'Blä.'):'')?> </body> </html>

Visa signatur

i5-4670k | GTX 670 | ASUS Z87-A | 2x4GB Corsair Vengeance 1333 MHz | Corsair VX 450 | 80 GB Intel X25 SSD systemdisk | 256 GB Samsung 840 spel/cachedisk | 2+3 TB WD Green lagringsdiskar | Fractal Define R4 | G2420HDBL (24") + L227WT (22")

Citera för svar!

Permalänk
Medlem

Borde kanske ta och läsa manualen ett par gånger till. Du använder empty() helt fel. empty() är en funktion INTE en konstant eller något annat för den delen. Läs på om empty() och isset(). Annars tycker jag att:

if (0 < strlen(trim($_POST['mat'])))

är ganska bra. Ofta vill man inte ha strängar som bara består av whitespace characters och i andra strängar är man oftast inte intresserad av inledande och/eller avslutande whitespace characters.

Ett alternativ skulle kunna vara:

if ('' != trim($_POST['mat']))

men jag föredrar ändå det första då det känns bättre att jämföra integers än strings. Fråga mig inte varför, det är bara en känsla. Känns mer konstant på något sätt.

Visa signatur

10 RTFM
20 RTFAQ
30 STFW

Permalänk

Tack för alla fina svar, och ja programmet kollar vilken favorit mat du gillar =D

En frågra, spelare det någon roll vilket man använder eller är det bara en smaksak?

och vad gör "trim" igentligen?

Permalänk
Medlem

http://php.net/trim

Lär dig använda manualen. det blir mycket lättare så