Vraag over if en else if
maar als ik onderstaande if en else if laat doorlopen, blijft hij in beiden gevallen de 'dit is EES' tonen.
ik heb ook nog gevarieerd met === en met !=, maar hij blijft hierop hangen.
kan iemand me vertellen wat ik niet goed doe?
Code (php)
Anders kun je ook nog met een switch gaan werken, dat werkt netter dan een if statement, maar voornamelijk wanneer het meer dan 2 is.
Gewijzigd op 17/10/2012 12:28:29 door Chris PHP
moet dit
niet dit zijn?
Maar zoiezo is die else if niet nodig wanneer je maar twee waardes verwacht.
Zo zou het dus moeten werken.
geweldig! dit werkt als een tierelier. bedankt voor jullie reacties!
@Chris, oneens misschien kan $type ook nog andere waardes bevatten maar wil je daar alleen op EES en EAV checken.
in dit geval gaat het maar om 2 waardes
Ik gebruik meestal iets dat lijkt op onderstaande, als je het voor meer opties wilt gebruiken hoef je alleen maar de array aan te vullen. Je kunt op deze manier ook gemakkelijk de boel op het scherm gooien door met bijvoorbeeld foreach door de array te lopen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
# De lijst met opties voor de radio knoppen.
$options = array('EES', 'EAV');
# Selectie controleren.
if(in_array($_POST['type'], $options)){
# Top! Datgene wat de gebruiker heeft gekozen is geldig dus dat gaan we nu weergeven.
echo 'De gebruiker heeft gekozen voor '.$_POST['type'].'.';
}
else{
# Ah Phooey! Ongeldige selectie, foutmelding weergeven.
echo 'Error! Ongeldige selectie.';
}
?>
# De lijst met opties voor de radio knoppen.
$options = array('EES', 'EAV');
# Selectie controleren.
if(in_array($_POST['type'], $options)){
# Top! Datgene wat de gebruiker heeft gekozen is geldig dus dat gaan we nu weergeven.
echo 'De gebruiker heeft gekozen voor '.$_POST['type'].'.';
}
else{
# Ah Phooey! Ongeldige selectie, foutmelding weergeven.
echo 'Error! Ongeldige selectie.';
}
?>
in mijn huidig script doe ik ipv een echo een functie aanroepen. heb ik er niet bijgezet, omdat dat niet relevant was voor mijn vraag. de echo gebruik ik om te testen. dan zie ik hoe ver mijn script komt en waar hij eventueel blijft hangen.
in jou array voorbeeld zou ik dus bij de ene waarde een aantal functies willen uitvoeren en in het geval van de andere waarde, een aantal anderen functies. zou ik dan in jou voorbeeld het zo moeten zetten?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
# De lijst met opties voor de radio knoppen.
$options = array('EES', 'EAV');
# Selectie controleren.
if(in_array($_POST['type'], $options)){
# Top! Datgene wat de gebruiker heeft gekozen is geldig dus dat gaan we nu weergeven.
echo 'De gebruiker heeft gekozen voor '.$_POST['type'].'.';
if ($_POST['type'] == 'EES') {
// voer de functie uit die bij EES hoort
} else {
// voer de functie uit die bij EAV hoort
}
}
else{
# Ah Phooey! Ongeldige selectie, foutmelding weergeven.
echo 'Error! Ongeldige selectie.';
}
?>
# De lijst met opties voor de radio knoppen.
$options = array('EES', 'EAV');
# Selectie controleren.
if(in_array($_POST['type'], $options)){
# Top! Datgene wat de gebruiker heeft gekozen is geldig dus dat gaan we nu weergeven.
echo 'De gebruiker heeft gekozen voor '.$_POST['type'].'.';
if ($_POST['type'] == 'EES') {
// voer de functie uit die bij EES hoort
} else {
// voer de functie uit die bij EAV hoort
}
}
else{
# Ah Phooey! Ongeldige selectie, foutmelding weergeven.
echo 'Error! Ongeldige selectie.';
}
?>
Gewijzigd op 17/10/2012 14:13:30 door Ozzie PHP
ok, er kan alleen geen ongeldige selectie zijn. de gebruiker moet een radiobutton aanklikken. als die dat niet gedaan heeft, komt hij niet bij dit deel van het script. blijft het dan nog steeds if else? ook als ik een derde optie zou willen toevoegen?
En stel nu dat iemand je script probeerd te hacken en de value veranderd in de html (met bijvoorbeeld firebug).
if($type = 'EES') ...
Toch even duiden (voor wie het interesseert).
De = doet twee dingen:
- een waarde toewijzen aan een variabele
- Die zelfde waarde teruggeven (return'en)
Je kan daar gebruik van maken in de if.
bv. dit
kan je ook schrijven als
[/een beetje offtopic]
Gewijzigd op 17/10/2012 14:26:50 door Kris Peeters
@Stefan, ik probeer die hack-kans zo klein mogelijk te maken door met htmlspecialchars en met mysql_real_escape_string te werken. maar als men echt wil en de skils heeft, ben ik van mening dat alles te hacken is.
Dat is niet mijn punt als je een if else kiest ipv een if elseif en iemand wijzigd te value van de radiobutton zal hij altijd in de else komen ;) wat in jouw geval ook een waarde is dan.
ok, hoe adviseer jij dan hoe ik het bovengenoemde voorbeeld moet aanpakken?
Je kunt natuurlijk een switch maken, waar je 2 opties hebt voor EES en EAV en een default als het geen van beide is (error melding/pagina).
Dit zou overigens ook moeten werken volgens mij (corrigeer me als ik erlangs zit!)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Toevoeging op 19/10/2012 08:37:37:
óf
Code (php)
Gewijzigd op 19/10/2012 09:16:02 door Ozzie PHP
Persoonlijk zou ik voor een switch gaan, maar dat ligt natuurlijk wat de TS zelf fijner vind.