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';
}
?>
Doe het eens zo


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

if($type = 'EES')
                {
                echo 'dit is EES';
                }
                else {
                    echo 'dit is EAV';
                }
?>


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.
@Chris NVT

moet dit

<?php
if($type = 'EES')
?>

niet dit zijn?
<?php
if($type == 'EES')
?>
<?PHP
$type = $_POST['trial'];
if($type == 'EES') {
echo 'dit is EES';
} elseif ($type == 'EAV') {
echo 'dit is EAV';
}
?>
LOL, ja sorry helemaal over het hoofd gezien!!

Maar zoiezo is die else if niet nodig wanneer je maar twee waardes verwacht.

Zo zou het dus moeten werken.


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

if($type == 'EES')
                {
                echo 'dit is EES';
                }
                else {
                    echo 'dit is EAV';
                }
?>


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
Het is maar net wat je wilt, nu heb je eigenlijk een standaard waarde voor als het fout gaat. Je hoeft nu geen foutmelding weer te geven maar dat is natuurlijk niet altijd gewenst.

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.

<?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.';

}

?>

@Mark, bedankt. goede tip. ik ga dat is proberen met een array.

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?

<?PHP
if(in_array($_POST['type'], $options['EES']))
?>
Nee, je moet de code van Mark aanhouden:

<?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.';

}

?>

Reageren