Hjælp til at forstå php isset() og empty()

Tags:    php isset empty

Hej

Jeg sidder og roder med en formular og kan ikke rigtig få det til at spille som jeg gerne vil have det når formularen bliver submitted !

Min erfaring med php er nærmest ikke-eksisterende, da jeg er i gang med at lære det på mit hovedeforløb som WebIntegrator.

Fejlen er klart min egen, da jeg gerne vil gøre det på min måde og derfor kommer jeg nok til at overtræde nogle regler for den korrekte syntax.

Mit ene problem er med isset()

Fold kodeboks ind/udPHP kode 


Her er mit problem, at den giver et positivt resultat selvom feltet email ikke udfyldt

Har prøvet at erstatte isset() med !empty() og så virker det.

2. så er mine syntax problemer:

Jeg vil jo gerne teste om flere af formens indtastningsfelter er udfyldte og derfor prøvede jeg med at indsætte flere variabler ind i !empty():

Fold kodeboks ind/udPHP kode 


men det må man vist ikke - tænkte at jeg kunne spare lidt tid på denne måde i stedet for at skulle lave en masse if-statements.

Så har jeg laget mærke til at når man ser eksempler på brugen af f.eks. isset(), så indsættes superglobalen $_POST[] og det forstår jeg ikke hvorfor man gør ? - jeg har jo lavet en variabel (f.eks. $email) til at holde på det der står i variablen, for jeg tænker således:

1. modtag information fra formular feltet med navnet email
2. overfør information til siden hvor den skal bruges ved hjælp af POST metoden
3. udtræk information fra $_POST['email'] og indsæt det i variablen $email - og så er jeg herefter klar til at kunne benytte den.

Men i mange eksempler ser jeg, at de bruger noget i stil med:

Fold kodeboks ind/udPHP kode 


Nå, jeg håber nogle er jer hang på så længe.




8 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
ah sorry havde ikke lige set den der assignment sorry :)







Indlæg senest redigeret d. 02.02.2014 20:32 af Bruger #17610
Her er nogle af scenarierne for isset() og empty() - resultaterne gælder også for array.

Fold kodeboks ind/udPHP kode 


Mere info kan læses i dokumentationen:
http://dk1.php.net/isset
http://dk1.php.net/empty



Grunden til at isset giver dig et positivt resultat i dit eksempel, er at dine variabler bliver sat uanset om der er noget indhold i din $_POST eller ej.
Hvis der ikke står noget i $_POST['email'] svarer det til at skrive $email = "";. Det vil sige at variablen er sat (isset) men er tom (empty).



Hej

Jeg har arbejdet lidt videre med min formular og sidder i skrivende stund og undre mig over hvorfor jeg får en syntax error fordi jeg blot ønsker at teste om nogle tomme eller ej.

Kan det virkelig passe at man ikke må teste mere end én variabel ad gangen i empty() således:

Fold kodeboks ind/udPHP kode 


Jeg har set et eksempel på W3Schools hvor de bruger et hav af empty() og det kan jeg sådan set godt forstå, hvorfor de gør i det tilfælde, men jeg vil jo bare teste om mindst én af mine variabler er tomme og derfor tænkte jeg at man "bare lige" kunne skrive det sådan lidt med "shorthand", men kan ikken det ?.

Jeg har tænk på om alternativet til at skrive mange if-statements er at lave en case (har hørt om det, men aldrig brugt det selv !), men måske bliver det lige en tand for avanceret for mig...

Så er også lige problemet omkring at bruge superglobalen $_POST - jeg får så mange warnings i min editor (netbeans 7.4) når jeg bruger føromtalte supergobal og det var også grunden til, at jeg brugt en $min_variabel i empty()







Indlæg senest redigeret d. 02.02.2014 13:49 af Bruger #16670
Du får syntaks fejl på linje 4, fordi det du laver, kan man ikke.

Det skal skrives a la:
Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 02.02.2014 14:41 af Bruger #10216
Michael man kan faktisk godt gøre det, men

Fold kodeboks ind/udPHP kode 


er ikke det samme som

Fold kodeboks ind/udPHP kode 




@Dan

Ved ikke om du forveksler empty() med isset(), eller om jeg misforstår. :)

Hvad jeg skriver ifht. udgangspunkt, er jeg udemærket klar over ikke ens. I forhold til udgangspunkten, så må jeg se min ændring mere korrekt i forhold til det forventede respons:
Fold kodeboks ind/udPHP kode 


Og nedestående er du selvfølgelig klar over man ikke kan skrive, grundet syntaksfejl af OR-operator før Assignment operator, der tillige bruges som parameter til et funktionskald.
Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 02.02.2014 17:01 af Bruger #10216
t