Computers ain't that smart, Whatever man built could be taken apart
wat er gebeurt is ditKnEuTeR schreef op 17 november 2002 @ 21:08:
argh ik ben een beetje in de war met dit n00b-achtige probleem, ik heb een stuk code en die mag alleen uitgevoerd worden als een variabele a, b, c of d is, maar ik kom echt niet meer uit de controle?!
PHP:
1 if ($HTTP_POST_VARS["vraag1"] == "a" or "b" or "c" or "d")
dit is dus altijd TRUE
moet ik het met AND doen ofzo?!
1
2
3
4
5
| $HTTP_POST_VARS["vraag1"] == "a" // = True als $HTTP_POST_VARS["vraag1"] dus "a" is. anders false "b" // = Altijd True, een lege string is volgens mij False en de rest True // voor de rest zie b |
en dan
1
| if(False/True or True or True or True) |
daar komt idd altijd true uit
zo zou ik het doen
1
| if ($HTTP_POST_VARS["vraag1"] == "a" or $HTTP_POST_VARS["vraag1"] == "b" or $HTTP_POST_VARS["vraag1"] == "c" or $HTTP_POST_VARS["vraag1"] == "d") |
Ik raad je ook aan eens een boek te gaan lezen over programmeren
1
2
3
4
5
| $allowed_values = array ("a", "b", "c", "d"); if (in_array($HTTP_POST_VARS["vraag1"], $allowed_values)) { //--- joepie } |
HTH!
Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."
Verwijderd
1
2
3
4
5
6
7
8
9
10
11
12
| switch($HTTP_POST_VARS['vraag1']) { case 'a': case 'b': case 'c': case 'd': // $HTTP_POST_VARS['vraag1'] is a, b, c of d break; default: // $HTTP_POST_VARS['vraag1'] is iets anders break; } |
Duidelijker, leesbaarder en de snelheid is vergelijkbaar met een if.
1
2
3
4
5
6
7
8
| if ($HTTP_POST_VARS["vraag1"] == "a" or $HTTP_POST_VARS["vraag1"] == "b" or $HTTP_POST_VARS["vraag1"] == "c" or $HTTP_POST_VARS["vraag1"] == "d") { //code antwoord is goed } else { //code antwoord is fout } |
maar nog word er ALTIJD de code uitgevoerd dat hij goed is

Computers ain't that smart, Whatever man built could be taken apart
helpt nietVerwijderd schreef op 17 november 2002 @ 21:27:
Gebruik || ipv van or.
hoe kan dit nou weer?!
Computers ain't that smart, Whatever man built could be taken apart
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."
nope, werkt ook niet, het moet ook werken als er helemaal NIKS is ingevuld, en al zou dat bij jouw oplossing erin zitten, het werkt alsnog zowieso niet.thomaske schreef op 17 november 2002 @ 21:30:
werkt mijn in_array oplossing niet?
dit erbij zetten:
1
| or !isset($HTTP_POST_VARS["vraag1"]) |
werkt ook niet
Computers ain't that smart, Whatever man built could be taken apart
1
2
3
4
5
6
7
8
| if(in_array($HTTP_POST_VARS["vraag1"],range('a','d')) { return true; } else { return false; } |
Klaar voor een nieuwe uitdaging.
Verwijderd
1
2
3
4
5
6
7
8
| <? if(in_array($HTTP_POST_VARS["vraag1"], {"a", "b", "c", "d"})) { print "goed"; } else { print "fout"; } ?> |
zou toch moeten werken
Weet je zeker dat het een POST var en geen GET var is? (maw heb je in je formpje wel neergezet METHOD="POST")
Verwijderd
Dat komt omdat het ook gewoon syntaxtische suiker is voor een if/else. Talen die (pre)compilen zullen een switch dan ook omzetten naar het equivalent if/else statementVerwijderd schreef op 17 november 2002 @ 21:21:
Mooier, maar bloaterIk zou voor een switch gaan:
Duidelijker, leesbaarder en de snelheid is vergelijkbaar met een if.
Verwijderd
$_POST['vraag1'];
eens ipv
$HTTP_POST_VARS['vraag1 '];
En haal je de data uit een form met: method="post" ?
Zoja, bestaat 'vraag1' als veld?
Verwijderd
Dat bedoelde ik ookGlimi schreef op 18 November 2002 @ 20:21:
[...]
Dat komt omdat het ook gewoon syntaxtische suiker is voor een if/else. Talen die (pre)compilen zullen een switch dan ook omzetten naar het equivalent if/else statement