banner

2.1 Keuzes maken in PHP

In het vorige hoofdstuk moest je je naam en leeftijd invullen en op de knop klikken. Nu willen we het voorbeeld zó aanpassen, dat je naam en leeftijd alleen weergegeven wordt als je leeftijd hoger is dan 15. Ben je 15 jaar of jonger, dan komt er in beeld te staan: "Sorry, je bent te jong om deze pagina te mogen bezoeken."

Voorbeeldje met IF en ELSE

We zullen eerst het kant-en-klare voorbeeld geven. Daarna wordt uitgelegd hoe het werkt.

<html>
<head> <title>Weergeven.php met voorwaarde</title> </head>
<body>

  <?php

    if($_POST['leeftijd'] > 15 )
    {
      echo
'Wees welkom, '.$_POST['naam'].'<br />';
      echo
'Je bent '.$_POST['leeftijd'].' jaar oud!';
    }

    else
    {
      echo
'Sorry, je bent te jong om deze pagina te mogen bezoeken!';
    }

  
?>

</body>
</html>

Je ziet, dat er heel wat code bij is gekomen. Er wordt gebruik gemaakt van een zogenaamde voorwaarde: de code om de naam en leeftijd op het scherm te zetten mag namelijk alleen uitgevoerd worden als aan de voorwaarde wordt voldaan dat de leeftijd groter is dan 15. Als niet aan deze voorwaarde wordt voldaan, wordt er een andere tekst op het scherm gezet.

De voorwaarde maken we met een zogenaamde if-else-constructie. Hieronder zie je hoe deze constructie in elkaar zit:

if($_POST['leeftijd'] > 15)
{
  
// hier komen de instructies die uitgevoerd moeten worden als $_POST['leeftijd'] groter is dan 15
}

else
{

  // deze code wordt uitgevoerd, als $_POST['leeftijd'] kleiner of gelijk is aan 15
}

// hier staat code die altijd uitgevoerd wordt (buiten de if-else-constructie)

De code werkt als volgt:

  • achter het woordje if komt tussen ronde haakjes, dus ( en ), een voorwaarde te staan.
  • Daarna komen tussen accolades, dus { en }, de instructies te staan die uitgevoerd moeten worden als de voorwaarde waar is.
  • Daarna volgt meestal het woordje else.
  • Hierachter staan tussen accolades de instructies die uitgevoerd moeten worden als er niet aan de voorwaarde wordt voldaan.
OPDRACHT 3
  1. Maak een nieuw bestand index.php en sla het op in de map opdracht 3
  2. Voorspel wat onderstaande code als uitvoer zal geven (dus niet uitproberen, maar doe net alsof jij de computer bent!).
  3. <html>
    <head> <title>Oefening 3</title> </head>
    <body>

      <?php

      $getal_a
    = 6;
      $getal_b = 9;

        if(
    $getal_a == $getal_b-3 )
        {
          echo
    'Deze opgave is niet moeilijk.';
        }

        else
        {
          echo
    'PHP is eigenlijk best logisch.';
        }

      
    ?>

    </body>
    </html>
  4. Controleer je antwoord door de code uit te proberen. Doe dit niet door de code te kopiëren en te plakken maar door de code zelf te maken in je index.php-bestand.

Vergelijkingsoperatoren

Je kunt in de if-else-constructie verschillende vergelijkingsoperatoren gebruiken om te bezien hoe twee variabelen zich tot elkaar verhouden:

if( $a == $b )
  // $a moet gelijk zijn aan $b

if( $a < $b )
  // $a moet kleiner zijn dan $b

if( $a <= $b )
  // $a moet kleiner of gelijk zijn aan $b

if( $a > $b )
  // $a moet groter zijn dan $b

if( $a >= $b )
  // $a moet groter of gelijk zijn aan $b

if( $a != $b)
  // $a mag niet gelijk zijn aan $b

Let vooral op het dubbele ==teken, dat gebruikt wordt in de eerste constructie.
De dubbele == wordt altijd gebruikt om twee variabelen te vergelijken.
Het enkele =teken wordt gebruikt om een variabele een bepaalde waarde toe te kennen:

if( $a == $b)  // $a moet gelijk zijn aan $b (let op het dubbele =-teken!)
{
  $a = 3;  // $a krijgt de waarde 3
  $b = 4;  // $b krijgt de waarde 4
}
OPDRACHT 4

Stel je voor dat je een website moet maken voor de "Jan-vereniging". Dit is een vereniging bij jou uit de buurt van mensen die allemaal de voornaam Jan hebben. Natuurlijk mag je alleen op de website als je zelf ook Jan heet. Daarom moet je als je op de website komt eerst je voornaam invullen en vervolgens op een knop drukken. Als de gebruiker inderdaad Jan heet, komt er een passende welkomstgroet op het scherm. Is het echter een indringer met een andere voornaam, dan krijgt deze bezoeker te zien dat hij geen toegang krijgt tot de website.

  1. Maak een index.html pagina en een login.php pagina die ervoor zorgen dat bovenstaande gaat werken. Sla de bestanden op in de map opdracht 4. Ook in deze oefening zul je gebruik moeten maken van een if-else-constructie.
    Let alleen wel op: een naam is een rij van letters (bijvoorbeeld de 'J', de 'a' en de 'n'). Zo'n rij van letters noemen we in 'computertaal' een string. Om een string staan altijd aanhalingstekens. Je moet in deze oefening de ingetypte naam dus vergelijken met 'Jan' (mét aanhalingstekens) en niet met Jan (zonder aanhalingstekens). Als je de aanhalingstekens vergeet, werkt het script niet goed.

De woorden AND en OR

Hierboven heb je steeds gecontroleerd of twee waarden aan elkaar gelijk zijn, de ene waarde groter of kleiner is dan de ander etc. Het kan ook voorkomen dat er gecontroleerd moet worden op twee of meer voorwaarden. Een voorbeeld daarvan is een inlogsysteem waarbij een user zijn gebruikersnaam en wachtwoord in moet vullen. De user mag het systeem pas betreden wanneer hij aan twee voorwaarden voldaan heeft:

  • De voornaam moet gelijk zijn aan (bijv.) "Eric" EN
  • het wachtwoord moet voldoen aan (bijv.) "pindakaas"
Wanneer beide voorwaarden waar moeten zijn dan kun je ze verbinden met het woordje AND.
Een andere schrijfwijze is ook toegestaan: &&

Een voorbeeldje:

if( $a == $b AND $c == $d )
{

  // $a moet gelijk zijn aan $b EN $c gelijk aan $d
}

Bij een situatie waarbij twee voorwaarden betrokken zijn kan het ook zo zijn dat er slechts aan één van de twee voorwaarden voldaan hoeft te worden. In dat geval dien je de twee voorwaarden te combineren van het woordje OR. Hierbij moet de ene voorwaarde waar zijn OF de andere voorwaarde.
Ook hier is een andere schrijfwijze toegestaan: ||

Ook hier weer een voorbeeld:

if( $a == $b OR $c == $d )
{

  // $a moet gelijk zijn aan $b OF $c gelijk aan $d
}
vervolg OPDRACHT 4
  1. Breid opdracht 4a zo uit, dat je 'Jan' moet heten EN minstens 16 jaar oud moet zijn.
  2. Breid opdracht 4b zo uit, dat je 'Jan' of 'jan' moet heten EN tussen de 16 en 35 jaar oud moet zijn.