met een formpje wil ik de gebruiker laten kiezen tussen 2 radiobuttons, EES of EAV. die waardes komen in mijn $_POST variabelen, gecheckt met een echo.
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?

<?PHP
$type = $_POST['trial'];

if($type = 'EES')
{
echo 'dit is EES';
}
else if($type = 'EAV')
{
echo 'dit is EAV';
}
?>
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).
[een beetje offtopic]
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
<?php
$type = $_POST['trial'];
if($type === 'EES') {
?>
kan je ook schrijven als
<?php
if($type = $_POST['trial'] === 'EES')
?>
[/een beetje offtopic]
@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?
@Wouter W,

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!)

<?php
if ($_POST['trial'] == 'EES' or $_POST['trial'] == 'EAV') {

if($_POST['trial'] == 'EES') {
                $type = 'EES';
                echo 'dit is EES';
                }
if $_POST['trial'] == 'EAV') {
                $type = 'EAV';                 
                echo 'dit is EAV';
                }
} else { echo 'Er is geen goede waarde ontvangen.';}
?>
<?php
$valid_options = array('EES', 'EAV');
if (isset($_POST['type']) && in_array($_POST['type'], $valid_options)){
switch ($_POST['type']) {
case 'EES':
echo 'type = EES';
// voer code uit
break;
case 'EAV':
echo 'type = EAV';
// voer code uit
break;
}
} else {
exit('Ongeldige of lege invoer!');
}
?>

[size=xsmall]Toevoeging op 19/10/2012 08:37:37:[/size]

óf

<?php
if (isset($_POST['type'])){
switch ($_POST['type']) {
case 'EES':
echo 'type = EES';
// voer code uit
break;
case 'EAV':
echo 'type = EAV';
// voer code uit
break;
default:
exit('Ongeldige invoer!');
break;
}
} else {
exit('Invoer is leeg!');
}
?>
Inderdaad ik zou ozzie's manier kiezen.. of..


<?php
if ( $_POST['type'] == 'EES' )
{
	//doe iets
} 
elseif ( $_POST['type'] == 'AEV' )
{
	//doe iets
}
else
{
	// fout
}
?>
Persoonlijk zou ik voor een switch gaan, maar dat ligt natuurlijk wat de TS zelf fijner vind.

Reageren