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 ookm onderdeel uit van Laravel en van het examan.
Boolean
Een boolean is een data type in vrijwel 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. Dat betent 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 gan we nog meer oefenen met if statements.
Vergelijkingen
Een vergelijking resulteert altijd in een boolean (true of flase). PHP kent de volgende belangijkste 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 type casten 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
- 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 voorstpellen 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 konden we met het prompt commando de gebruiker om input vragen. Dat kan met PHP niet en dat komt omd at 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 natuutlijk niets aan.
PHP kan alleen met de gebruiker communiceren door html naar de browser te sturen en de broser kan alleen met de server communiceren door met firmulieren (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="test.php" method="get">
Name: <input type="text" name="userName"><br>
Geboortejaar: <input type="text" 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 test.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 vaiabelen worden afgedrukt. Je kan nu uitrekenen hoe oud de persoon is.
Opdracht
$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
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
Kopieer de code uit test.php in je huiswerk op Teams.
--