[php] if ($name == 0

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Paul_
  • Registratie: Juni 2001
  • Laatst online: 13-11-2021
Ik heb een probleem met een simpele php commando. Maar ik weet niet hoe het heet en kan er niet opzoeken.

Als een pagina wordt bezocht en het ID is gedefineerd (index.php?ID=1) dan dient ID=1 weergegeven worden. Is dat niet het geval dan dient iets anders weergegeven te worden. Dat doe ik met if ($ID == 0) {iets anders} en anders dus datgene met het ID.

Dat werkt. Alleen hetzelfde trucje werkt niet als ik ipv ID een voornaam gebruik. Want als ik dan bv dit doe (index.php?voornaam=Paul) dan laat het niet voornaam=Paul zien maar voert het de regels uit van voornaam=0. Blijkbaar is dus voornaam== 0 gelijk aan voornaam==paul. Hoe kan ik dit nu oplossen?

Want met

code:
1
2
3
4
5
6
7
8
IF ($voornaam == 0)
{
Laat iets zien, voornaam is niet gedefineerd
}
ELSE
{
$voornaam heeft een waarde. Laat voornaam zien.
}

Doet het het niet. Tenzijn voornaam een getal is.

Ik denk dat het een simpel probleem is. Alleen ik zie de oplossing over het hoofd. Iemand een suggestie?

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 16:28

Bosmonster

*zucht*

PHP:
1
2
if (isset ($_GET['ID']))
    echo $_GET['ID'];

;)

Gebruik isset() in combinatie met de superglobals (_GET/_POST/etc) en je zit altijd goed, zelfs met errorreporting op E_ALL en register_globals uit.

[ Voor 65% gewijzigd door Bosmonster op 28-06-2003 12:02 ]


Acties:
  • 0 Henk 'm!

  • Elroy
  • Registratie: April 2000
  • Laatst online: 08-08 16:20

Elroy

Zelda!!!

oops Bosmonster was me voor :)

BTW als voornaam geen waarde heeft dan is het if($voornaam="")

[ Voor 139% gewijzigd door Elroy op 28-06-2003 12:06 ]

Specs Computer


Acties:
  • 0 Henk 'm!

  • Paul_
  • Registratie: Juni 2001
  • Laatst online: 13-11-2021
Bosmonster schreef op 28 June 2003 @ 12:01:
PHP:
1
2
if (isset ($_GET['ID']))
    echo $_GET['ID'];

;)

Gebruik isset() in combinatie met de superglobals (_GET/_POST/etc) en je zit altijd goed, zelfs met errorreporting op E_ALL en register_globals uit.
Bedankt ik ben eruit.

Acties:
  • 0 Henk 'm!

Verwijderd

Elroy schreef op 28 June 2003 @ 12:04:
oops Bosmonster was me voor :)

BTW als voornaam geen waarde heeft dan is het if($voornaam="")
Als het geen waarde heeft maak er dan if($voornaam == null) van.

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 28 June 2003 @ 12:23:

Als het geen waarde heeft maak er dan if($voornaam == null) van.
Gebruik dan eerder is_null ( $voornaam ) of empty ( $voornaam )

Acties:
  • 0 Henk 'm!

Verwijderd

Nog even het educatieve gedeelte: dit komt dus doordat $voornaam een variabele is van het type string. 0 daarentegen is van het type int (dus een positief geheel getal).

Als je de twee gaat vergelijken, zet hij $voornaam om in een int (dit heet typecasting), en gaat ze dan vergelijken. Aangezien hij van "Paul" geen nummer kan maken, krijgt $voornaam als int de waarde 0. Dus "paul" is in PHP gelijk aan 0.

Als je echter $voornaam bijvoorbeeld de waarde "10" geeft, en $voornaam wordt gecast naar een int, dan krijgt $voornaam de waarde 10. Dus als je $voornaam de waarde "10" meegeeft (of een ander getal natuurlijk) dan zal de code onder if($voornaam == 0) niet worden uitgevoerd, omdat de int-waarde van $voornaam niet gelijk is aan 0.

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op 28 June 2003 @ 12:42:
0 daarentegen is van het type int (dus een positief geheel getal).
0 is helemaal geen positief getal ;)
Althans, het is ook een negatief getal

Een integer is gewoon een geheel getal, niet een positief geheel getal (tenzij je een unsigned int gebruikt ofzo, maar dat kan php toch niet).
Pagina: 1