3 Vergelijkingen en forms
Vergelijkingen, bijvoorbeeld met if-then-else gaan min of meer hetzelfde als in PHP. We gaan in deze les een praktijk opdracht doen en gaan daarbij gebruik maken van forms. Let op forms zijn erg belangrijk en komen telkens terug, ze maken ook onderdeel uit van Laravel en van het examen.
Boolean
Een boolean is een data type in bijna alle programmeertalen en kent twee waarden true of false. Soms staan deze waarden gelijk aan 1 en 0; 1 is dan true en 0 is dan false. In PHP geldt dat alle waarden behalve een 0 of een lege waarde zijn true. Dit kan belangrijk zijn omdat een if-statement altijd met een boolean werkt.
Dus: alles is true behalve een 0, een lege object/string, of de boolean false
Dat bekent dus bijvoorbeeld dat:
<?php
if ( 1 ) { ...... // dit is true en de if wordt uitgevoerd
if ( "" ) { ..... // dit is false en de if wordt niet uitgevoerd
if ( 3-3 ) { .... // dit is false en de if wordt niet uitgevoerd
if ( "Hallo" ) .. // dit is true en de if wordt dus uitvevoerd
Later gaan we nog meer oefenen met if statements.
Vergelijkingen
Een vergelijking resulteert altijd tot een boolean (true of flase). PHP kent de volgende belangrijkste vergelijkingen.
Vergelijkings Operator | Betekenis | Voorbeeld |
== | is gelijk aan | $teller==3 of $naam=="John" |
<> of != | is ongelijk aan | $teller!=3 of $naam<>"John" |
< | is kleiner dan | $nummer<10 |
> | is groter dan | $nummer>10 |
<= | is kleiner dan of gelijk aan | $nummer<=10 |
>= | is groter dan of gelijk aan | $nummer>=10 |
We kunnen een variabele ook typecasten naar een boolen met (bool) of met (boolean). Met vardump kunnen we dan het type variabele en de waarde afdrukken.
<?php
var_dump(1==1);
$naam="";
var_dump( (bool)$naam );
$naam="Maria";
var_dump( (bool)$naam );
?>
Opgave 1
Je kunt deze opgave maken door het Word document te downloaden en in te vullen.
- Bepaal van de volgende waarden of ze true of false zijn en laat zien welke code je daarvoor hebt gebruikt. Probeer van te voren te voorspellen wat de uitkomst (true of false) is.
Opgave | Vergelijking | true of false? |
1 | ( "ROC" ) | |
2 | ( "true" ) | |
3 | ( "false ") | |
4 | ( 0 ) | |
5 | ( 1 ) | |
6 | ( "0" ) | |
7 | ( "1" ) | |
8 | ( 3+3 ) | |
9 | ( 12-12 ) | |
10 | ( 201*0 ) | |
11 | ( 12<12 ) | |
12 | ( 1201 != 1200 ) | |
13 | ( 1201 >= 1201 ) |
Als $a=0 en $b=1 wat is dan de uitkomst van de volgende statements?
Opgave | Vergelijking | true of false? |
14 | ($a==1( ) | |
15 | ($b==1) | |
16 | ($a==1 or $b==1) | |
17 | ($a==0 and $b<>1) | |
18 | ($a<>1 and $b<>0) | |
19 | ($a+$b==1 and $a*$b==0) | |
20 | ($a+$b==1 or $a*$b==0) | |
21 | ($a) | |
22 | ($b) | |
23 | ($a and $b) | |
24 | ($a or $b) | |
25 | ($a or $b*$a) | |
26 | ( ($a+2)*10>5 and $a ) |
If-statement
Het if statement in PHP is hetzelfde als in JavaScript. Ook de && en || zijn ook hetzelfde, maar mogen ook als and en or worden geschreven. Dus:
if ( $leeftijd > 21 && $leeftijd < 30 ) { ...
// dit is hetzelfde als
if ( $leeftijd > 21 and $leeftijd < 30 ) { ...
if ( $naam == "" || $naam == "leeg" ) { ...
// dit is hetzelfde als
if ( $naam == "" or $naam == "leeg" ) { ...
Het if statement is verder ook hetzelfde als in JavaScript:
if ( $command == "execute" ) {
// ......hier komt code voor als de gebruiker execute heeft gekozen.
} elseif ( $command == "cancel" ) {
// ......hier komt code voor als de gebruiker cancel heeft gekozen.
} else {
// ......hier komt code voor als de gebruiker geen execute of cancel heeft gekozen.
}
User input
Met JavaScript kondenkunnen we met het prompt commando de gebruiker om input vragen. Dat kan met PHP niet en dat komt, omdat PHP niet in de browser draait. PHP draait op de server en als je een venster zou openen dan zou dat venster op de server openen en daar heb je natuurlijk niets aan.
PHP kan alleen met de gebruiker communiceren door html naar de browser te sturen en de browser kan alleen met de server communiceren door met formulieren (forms) iets te posten.
Dat werkt als volgt:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<!-- Hier begint het form -->
<form action="actio.php" method="get">
Name: <input type="text" name="userName"><br>
Geboortejaar: <input type="number" min="1900" max="2030" name="geboorteJaar"><br>
Jarig geweest (ja/nee)? <input type="text" name="jarigGeweest"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
Dat is een heel stuk code maar waar het om gaat, is het formulier op regel 12 tot en met 17. De rest is een standaard HTML template en kun je vaak met een editor in één keer intoetsen bijvoorbeeld met !-tab
De user input wordt door het form gevraagd en wordt naar de php file test.php gestuurd. Maak en een action.php en zet daar het volgende in:
<?php
$thisYear=date("Y");
echo "Naam: ".$_GET['userName'];
echo "<br>";
echo "Geboortejaar: ".$_GET['geboorteJaar'];
echo "<br>";
echo "Al jarig geweest?: ".$_GET['jarigGeweest'];
echo "<br>";
echo "Huidig jaar: ".$thisYear;
echo "<br>";
?>
Kijk wat er gebeurt als je het form post. Als het goed is zie je dat alle variabelen worden afgedrukt. Je kan nu uitrekenen hoe oud de persoon is.
Wat denk je dat het type van de variabele $_GET['geboortejaar']
is? Check meet var_dump
welk van welk type de variabele $_GET['geboortejaar']
is.
Opgave 2
$leeftijd = .... - ....;
if ( strtoupper($_GET['jarigGeweest']) ...... ) {
$leeftijd++;
}
echo $_GET['userName'].", jouw leeftijd is: ".$leeftijd;
Plaats deze code onderaan in test.php en vul de code aan op de plaats van de puntjes.
- Je moet dus de leeftijd berekenen door twee variabelen van elkaar af te trekken.
- en je moet het if-statement afmaken
strtoupper()
Let op dat strtoupper($_GET['jarigGeweest']) de string ja of nee in hoofdletters zet. Dit zorgt ervoor dat als je ja of Ja of JA intypt dit allemaal wordt opgezet in JA. strtoupper zet de string dus op in een string met alleen maar hoofdletters.
Zorg ervoor dat de code werkt en dat dit bijvoorbeeld de output is:
Naam: Ayoub
Geboortejaar: 1996
Al jarig geweest?: Nee
Huidig jaar: 2020
Jouw leeftijd is: 24
Opgave 3
Maak een kleine app waarin je berekent hoeveel iedereen moet betalen als je gezamenlijk heb gegeten en gedronken en de rekening wil verdelen.
Maak een form dat vraagt hoe hoog de rekening was en met hoeveel personen jullie waren. In de action van het form bereken je dan wat iedereen moet betalen.
Dit voorbeeld form is in een (html) table geplaatst om het netjes uitgelijnd te tonen. Probeer zelf ook of je het form in een table kunt zetten.
Dan vul je (bijvoorbeeld) 200 en 5 in en dan moet de volgende output verschijnen:
Succes!
Plaats de volgende bestanden in Teams (huiswerk):
Voor opgave 1, één file: de ingevulde tempate
Voor opgave 2, één file: de aangepaste file action.php
Voor opgave 3, twee files: opgave3.html en opgave3.php. De html-file bevat het form en de action-file bevat de php code.
--