Vraag over if en else if

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Wouter W

Wouter W

17/10/2012 12:24:47
Quote Anchor link
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?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?PHP
$type
= $_POST['trial'];

if($type = 'EES')
                {

                echo 'dit is EES';
                }

                else if($type = 'EAV')
                {

                    echo 'dit is EAV';
                }

?>
 
PHP hulp

PHP hulp

23/12/2024 14:29:23
 
Chris PHP

Chris PHP

17/10/2012 12:27:57
Quote Anchor link
Doe het eens zo

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?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.
Gewijzigd op 17/10/2012 12:28:29 door Chris PHP
 
Q S

Q S

17/10/2012 12:29:58
Quote Anchor link
@Chris NVT

moet dit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if($type = 'EES')
?>


niet dit zijn?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if($type == 'EES')
?>
 
Ozzie PHP

Ozzie PHP

17/10/2012 12:32:07
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?PHP
$type
= $_POST['trial'];
if($type == 'EES') {
  echo 'dit is EES';
}
elseif ($type == 'EAV') {
  echo 'dit is EAV';
}

?>
 
Chris PHP

Chris PHP

17/10/2012 12:36:09
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?PHP
$type
= $_POST['trial'];

if($type == 'EES')
                {

                echo 'dit is EES';
                }

                else {
                    echo 'dit is EAV';
                }

?>
 
Wouter W

Wouter W

17/10/2012 13:09:03
Quote Anchor link
geweldig! dit werkt als een tierelier. bedankt voor jullie reacties!
 
Stefan WM

Stefan WM

17/10/2012 13:12:14
Quote Anchor link
@Chris, oneens misschien kan $type ook nog andere waardes bevatten maar wil je daar alleen op EES en EAV checken.
 
Wouter W

Wouter W

17/10/2012 13:20:58
Quote Anchor link
in dit geval gaat het maar om 2 waardes
 
- Mark -

- Mark -

17/10/2012 13:23:21
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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.';
        
        }


?>
 
Wouter W

Wouter W

17/10/2012 13:50:29
Quote Anchor link
@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?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?PHP
if(in_array($_POST['type'], $options['EES']))
?>
 
Ozzie PHP

Ozzie PHP

17/10/2012 14:13:01
Quote Anchor link
Nee, je moet de code van Mark aanhouden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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.';
        
        }


?>
Gewijzigd op 17/10/2012 14:13:30 door Ozzie PHP
 
Wouter W

Wouter W

17/10/2012 14:16:45
Quote Anchor link
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?
 
Stefan WM

Stefan WM

17/10/2012 14:18:19
Quote Anchor link
En stel nu dat iemand je script probeerd te hacken en de value veranderd in de html (met bijvoorbeeld firebug).
 
Kris Peeters

Kris Peeters

17/10/2012 14:26:09
Quote Anchor link
[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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$type
= $_POST['trial'];
if($type === 'EES') {
?>

kan je ook schrijven als
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if($type = $_POST['trial'] === 'EES')
?>

[/een beetje offtopic]
Gewijzigd op 17/10/2012 14:26:50 door Kris Peeters
 
Wouter W

Wouter W

17/10/2012 14:55:30
Quote Anchor link
@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.
 
Stefan WM

Stefan WM

17/10/2012 16:01:22
Quote Anchor link
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.
 
Wouter W

Wouter W

17/10/2012 16:03:24
Quote Anchor link
ok, hoe adviseer jij dan hoe ik het bovengenoemde voorbeeld moet aanpakken?
 
Chris PHP

Chris PHP

19/10/2012 07:41:02
Quote Anchor link
@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!)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?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.';}
?>
 
Ozzie PHP

Ozzie PHP

19/10/2012 08:32:46
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?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!');
}

?>


Toevoeging op 19/10/2012 08:37:37:

óf

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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!');
}

?>
Gewijzigd op 19/10/2012 09:16:02 door Ozzie PHP
 
Stefan WM

Stefan WM

19/10/2012 08:45:13
Quote Anchor link
Inderdaad ik zou ozzie's manier kiezen.. of..

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
if ( $_POST['type'] == 'EES' )
{

    //doe iets
}
elseif ( $_POST['type'] == 'AEV' )
{

    //doe iets
}
else
{
    // fout
}
?>
 
Chris PHP

Chris PHP

19/10/2012 08:48:09
Quote Anchor link
Persoonlijk zou ik voor een switch gaan, maar dat ligt natuurlijk wat de TS zelf fijner vind.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.