Avatar billede hobbittend Novice
14. oktober 2011 - 23:39 Der er 8 kommentarer og
1 løsning

empty() siger empty selvom der er noget i

Hej.

Jeg har lidt brug for hjælp her:

Kode:
$Besked = $_POST['Besked'];
if(empty($Besked));
{
    print "<BR>Du har ikke indtastet nogen besked.";
    $Gyldig = "False";
}

if ($Gyldig == "False")
{
    print '<BR>Ugyldig ' . $besked;
}



Udfaldet heraf bliver (hvis jeg indtaster 123abc i besked feltet:

Du har ikke indtastet nogen besked
Ugyldig 123abs


Hvorfor siger den den er tom når den ikke er?
Det er et multiline tekstfelt (hvis det har nogen betydning)
Avatar billede NielsErikP Mester
15. oktober 2011 - 00:09 #1
Hej..
Kan du ikke skrive den sådan :
[div]


if(!isset( $_POST($Besked) ) );
{
    echo "<br>" . "Du har ikke indtastet nogen besked.";
}
else {
    echo "<br>" . "Ugyldig " . $besked;

}
Avatar billede erikjacobsen Ekspert
15. oktober 2011 - 00:10 #2
Du skal nok fjerne et semikolon

    if(empty($Besked))
    {
        print "<BR>Du har ikke indtastet nogen besked.";
        $Gyldig = "False";
    }

Dertil kommer et http://php.net/empty er en spøjs, ofte uanvendelig funktion, da et indtastet "0" også er empty. Skal du ikke bare fjerne foran- og bagvedstillede mellemrum, og så se om det giver en ikke-tom streng?
Avatar billede danco Nybegynder
15. oktober 2011 - 12:47 #3
Jeg tænker, har du sikret dig at du, i din html, har givet textfeltet det rigtige navn? Altså bruger name="Besked"

Det er muligt at du har gjort det rigtigt, men jeg har selv siddet i par gange og fejlfundet på netop samme fejl og fundet ud af at det er HTML'en der er fejl i.

men som Erik skriver, du bør for alt i verden fjerne det semikolon, ifølge PHP syntax skal der ikke semikolon der efter en IF-statement.
Avatar billede hobbittend Novice
16. oktober 2011 - 13:40 #4
Do'h!
Semikolon er bare lykken ved PHP...

Det var selvfølgelig det der drillede. Havde jeg overset... Tak for det. Erik du må lige smide et svar :)
Avatar billede erikjacobsen Ekspert
16. oktober 2011 - 13:47 #5
Jeg samler slet ikke på point, tak.

Forklaringen er blot, at når du sætter et semikolon på det sted, så afslutter du if-sætningen. Det er ikke ulovligt, ikke en syntaks-fejl, og du får ingen advarsel. Og det er sådan i "alle" afledte sprog fra klassikeren C.

De efterfølgende to linier vil derfor altid blive udført.
Avatar billede hobbittend Novice
16. oktober 2011 - 13:54 #6
ja det er jeg med på =)
Havde bare overset det...
Man kommer sommetider til at stirre sig blind på det, når man ikke helt ved hvad man leder efter :)


Nå så er der en anden der kan smidde et svar ;)
Avatar billede NielsErikP Mester
16. oktober 2011 - 14:06 #7
Hej...
Da jeg tror du lige så godt kunne have skrevet den som i #1, Smider jeg et svar ;-)

Og med hensyn til #1, så siger Erik jo egentligt også i #2, at du måske skulle prøve på en anden måde med sætningen :

Dertil kommer et http://php.net/ (...) er en spøjs, ofte uanvendelig funktion, da et indtastet "0" også er empty. Skal du ikke bare fjerne foran- og bagvedstillede mellemrum, og så se om det giver en ikke-tom streng?

Undskyld, hvis jeg tager dit ord i munden,Erik!!
Avatar billede hobbittend Novice
16. oktober 2011 - 14:15 #8
Det er fint :)

Var godt klar over det med 0 også, men nu er det et beskedfelt med tekst, så det er fint hvis den brokker sig over et nul også ;)

fortsat god søndag til alle
Avatar billede NielsErikP Mester
16. oktober 2011 - 14:30 #9
Hej...
jaameen.. Tak for point :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester