Programmeren1
- Wat is Programmeren?
- Theorie PHP1
- PHP Intro
- PHP1
- PHP2
- PHP3
- PHP4 OOP
- PHP5 PDO
- PHP6 Refresh
- Herhaling Arrays en Loops
Wat is Programmeren?
01 Inleiding
Inleiding
Wat is programmeren?
Programmeren is het het schrijven van instructies in een programmeertaal waarmee een computer taken kan uitvoeren.
Het is als het schrijven van een recept waarbij je de computer vertelt wat het moet doen in kleine stappen, zoals het uitvoeren van berekeningen, het weergeven van informatie op het scherm, het opslaan van gegevens of het uitvoeren van bepaalde acties.
Het si dus belangrijk dat we een opdracht in stapjes leren opdelen.
In deze module leren we:
- Hoe delen we een taak op in stapjes?
- Wat is een programmeertaal?
We gebruiken hiervoor LUA (maar dat is eigenlijk niet belangrijk want alle programmeertalen lijken heel erg veel op elkaar). - Hoe schrijf je code en waar bestaat code uit?
- We leren hoe een computer een programma uitvoert (spoiler stap voor stap).
- We leren wat variabelen zijn en hoe we hier mee kunnen werken.
- We leren hoe we de volgorde van instructies die de computer moet uitvoeren kunnen beïnvloeden.
- We leren een aantal basis elementen van de computertaal en we gaan hiermee aan de slag.
Aan het eind van deze module kun je zelf een paar eenvoudige programmaatjes maken.
Opdracht
We beginnen met een oefening op in stapjes te leren denken.
Stel dat jij pauze hebt en bij de Albert Heijn een broodje gaat kopen. Welke stappen moet je dan uitvoeren. Noem er minimaal 8.
Denk aan betalen, broodje kiezen, naar de AH lopen, terug naar school lopen, de AH inlopen, betalen, naar de broodjes lopen, ......
Inleveren
Een PDF-document opdracht1-<jouw-naam>.pdf , waarin je alle stappen beschrijft in de juiste volgorde.
Voorbeeld: Stel je heet Merouane Alhidi dan heet jouw document dus " opdracht1-MerouaneAlhidi.pd f".
Zorg ervoor dat je jouw Word document ook bewaard als pdf.
--
02 Stappen
Stappen
Stap voor stap in de juiste volgorde
Bij programmeren moet je de computer stap voor stap vertellen wat er moet worden gedaan, omdat computers niet dezelfde manier van denken hebben als mensen. Computers begrijpen alleen heel specifieke en exacte instructies, en ze voeren deze instructies uit in de volgorde waarin ze zijn geprogrammeerd. Dit betekent dat de programmeur heel precies moet zijn en alle stappen die nodig zijn om een bepaalde taak uit te voeren, moet beschrijven.
Als de programmeur een taak wil automatiseren, moet hij of zij deze taak in kleinere stappen opdelen en voor elke stap specifieke instructies voor de computer schrijven. Deze instructies worden in de code geschreven in de programmeertaal van keuze, en elke regel code vertelt de computer wat er moet gebeuren in een bepaalde stap van het proces. De computer voert deze stappen vervolgens uit in de volgorde waarin ze in de code zijn geschreven, en produceert zo het gewenste resultaat.
Daarom is het essentieel om bij het programmeren de computer stap voor stap te vertellen wat er moet worden gedaan, om ervoor te zorgen dat de code correct wordt uitgevoerd en het gewenste resultaat wordt geproduceerd. Zelfs kleine fouten in de code of het ontbreken van een enkele stap kunnen leiden tot ernstige problemen en bugs in de software.
Oefenen
Stel je bent thuis en je wilt naar school, welke stappen voer je dan uit?
- Check hoe laat ik op school moet zijn.
- Bepaal hoe laat ik moet vertrekken van huis.
- Begin 5 minuten voor vertrek mijn spullen in te pakken; laptop, lader, schoolpas, tas, telefoon en natuurlijk mijn OV kaart en jas.
- Vertrek van huis met de spullen op de tijd die is bepaald in stap 2.
- Pak de fiets uit de schuur.
- Sluit het huis en de schuurdeur af.
- Ga naar het busstation (bijvoorbeeld).
- Ik kan 5 minuten voordat de bus vertrek aan op het busstation en zet mijn fiets op slot.
- ....
En ga zo maar door. Snap je?
Opdracht A
Stel, je wilt gaan douchen, welke stappen moet je dan uitveren?
Neem de onderstaande stappen over en zet ze in de juiste volgorde.
- Spoel de shampoo uit je haar met water.
- Spoel je lichaam volledig af met water.
- Maak je haar en lichaam volledig nat met water.
- Zet de douche aan en zorg ervoor dat de temperatuur van het water naar wens is.
- Stap in de douchecabine en sluit de deur of het gordijn.
- Breng shampoo aan op je haar en masseer het in je hoofdhuid.
- Droog jezelf af met een handdoek.
- Breng douchegel of zeep aan op een washandje of spons en was je lichaam.
- Schakel de douche uit en stap uit de douchecabine.
- Spoel het washandje of de spons uit met water en herhaal stap 6 indien nodig.
Maak een document en zet de 10 stappen in de juiste volgorde.
Inleveren (1 bestand)
stappen02a-<jouw-naam>.pdf, met de 10 stappen, in de juiste uitvoeringsvolgorde uit opdracht A .
--
03 Eerste code
Eerste code
Computer code
Voor deze opdracht gaan we code maken die we via een website kunnen testen. De taal die we gebruiken is LUA, maar dat is niet zo belangrijk omdat de meeste computertalen heel erg veel op elkaar lijken.
Ga naar: https://www.lua.org/cgi-bin/demo
Typ het volgende programma van twee regels op de website in en druk op run:
print ( "Hallo" ) print ( "Ik ben de computer en ik spreek LUA" )
Druk op run en je ziet het resultaat:
Het programma wordt regel voor regel uitgevoerd. Eerst regel 1 en dan regel 2.
Opdracht
Voeg zelf een regel toe aan deze code. Verzin zelf een tekst en zorg ervoor dat de tekst op de derde regel wordt afgedrukt.
Inleveren
Een schermafdruk van je gehele browser met de LUA-code en het resultaat. Noem dit document opdracht03-<jouw-naam>.
--
04 Flow control (goto)
Flow control (goto)
Flow contro l is een moeilijk woord voor de code die ervoor zorgt in welke volgorde je code wordt uitgevoerd.
Standaard worden de regels code één voor één uitgevoerd. Eerst de eerste regel, dan de tweede, enzovoorts.
Maar we kunnen met de code de volgorde ook aanpassen. Je kunt bijvoorbeeld aan het eind van het programma zeggen dat de code door moet gaan op regel 1.
Dat ziet er zo uit:
::begin:: print("Hallo") print("Ik ben de computer en ik spreek LUA") goto begin
Op regel 1 zetten we een label, we geven deze regel een naam. Dan voeren we de code op regel 2 en 3 uit. En als we klaar zijn dan staar er op regel 4 dat de code door moet gaan op de regel met de naam ::begin::
Opdracht
Wat doet deze code? Voer de code uit. Als je de code uitvoert dan staat er de tekst "Your program was aborted" (jou programma is afgebroken), waarom is dat?
Dus leg uit wat je code doet en waarom die wordt afgebroken.
Inleveren
Een PDF-document (opdracht04-<jouwnaam>.pdf) waarin je in eigen woorden uitlegt wat het programma doet en waarom het programma is afgebroken.
Je mag overleggen met elkaar, maar je moet je eigen PDF-document maken.
--
05 Variabelen
Variabelen
Een variabele in een programmeertaal wordt gebruikt om een waarde op te slaan die later kan worden gebruikt of gewijzigd. Het is een soort container (of doosje) waarin je gegevens kan opslaan, zoals een getal, een tekst, of een object.
Stel je wilt de computer laten onthouden dat de jouw naam Bob is en dat jij 35 jaar oud bent. Dan kun je twee variabelen maken, name en age, in de variabele name stop je dan de waarde Bob en in de variabele age stop je dan de waarde 35.
De naam ( name en age ) kan je in je code zelf kiezen.
name="Max Bisschop" age=35
Als je deze code uitvoert dan gebeurt er niets. Dat komt omdat er geen output is. Je drukt niets af zoals in de vorige opdrachten.
Opdracht
Bedenk twee eigen variabele en geef die een waarde.
Druk vervolgens de twee variabelen af.
Inleveren
Screenshot van je gehele browser met de opdracht. Noem het bestand opdracht5-<jouw-naam>.png
Voorbeeld
06 Rekenen met variabelen
We kunnen ook rekenen met variabelen. Kijk naar de volgende code:
getal=1
print(getal)
getal=getal+2
print(getal)
Tip: als je in een programmeertaal een = ziet dan kun je dit beter lezen als 'wordt' en dus niet als 'is'.
Regel 1: Deze code maakteen variabele genaamd getal en geeft deze de waarde 1.
In het kort staat er dus: de variabele getal wordt 1
Regel 2: druk de variabel getal af.
Regel 3: Getal wordt getal plus getal. Getal was 1 dus getal wordt 1+2. Getal wordt dus 3.
Regel 4: druk de variabel getal af.
Regel 2 en 4 zijn hetzelfde, maar er wordt toch wat anders afgedruk. Dat komt dus omdat de waarde van de variabele op regel 3 wordt veranderd.
Opdracht
Gebruik de volgende code en vul aan op de plaats van de ....
Zorg ervoor dat op regel 7 het laatste cijfer van jouw studentennummer wordt afgedrukt.
Dat doe je dus door de code over te nemen en alleen op de plaats van de puntjes de code aan te passen.
getal=10
getal=getal-5
print(getal)
getal=getal*2
print(getal)
getal=getal....
print(getal)
Inleveren
Een screendump opgave6-<jouw-naam>.png van je gehele browser met oplossing.
--
07 if-then-else-end
Check deze code:
leeftijd = 18
if leeftijd >= 18 then
print("Je bent volwassen!")
print("Ben er maar trot op!")
else
print("Je bent minderjarig.")
print("Jammer dan.")
print("Maar je wordt vanzelf volwassen ;)")
end
Deze code controleert de waarde van de variabele leeftijd en beslist op basis daarvan welke boodschap moet worden afgedrukt op het scherm.
De if-then-else begint met "if", gevolgd door de voorwaarde die wordt gecontroleerd.
De if-then-else-end heeft 3 delen.
- De voorwaarde op de erste regel
- De stappen die worden uitgevoerd als de voorwaarde waar is, dit staat tussen then en else .
- De stappen die worden uitgevoerd als de voorwaarde niet waar is, dit staat tussen else en end .
Als de voorwaarde waar is, dan wordt de code in de "then"-blok uitgevoerd. In dit geval, als de leeftijd groter of gelijk is aan 18, dan wordt de boodschap "Je bent volwassen!" afgedrukt op het scherm.
Als de voorwaarde onwaar is, wordt de code in de "else"-blok uitgevoerd. In dit voorbeeld, als de leeftijd kleiner is dan 18, dan wordt de boodschap "Je bent minderjarig." afgedrukt op het scherm.
Het "end"-trefwoord sluit de hele if-then-else af.
Opdracht
Maak een variabele temperatuur en geeft deze een waarde.
Maak een if-then-else-end. Als de temperatuur < 19 is dan druk je af dat de kachel aan moet. Als dit niet zo is dan druk je af dat het nog niet zo koud is dat de kachel aan moet.
Inleveren
Een screendump, opdracht7-<jouw-naam>.png van je gehele browser met oplossing.
--
08 Herhalen totdat
Kijk naar het volgende programmaatje:
a=1
::begin::
a=a+1
print(a)
goto begin
Deze code zet de variabele op 1 en telt er dan 1 bij op.
De variabele wordt afgedruk en dan gaar de code weer naar regel 3. Dit gaat eindeloos door. Stel we willen stoppen als a 15 is.
a=1
::begin::
a=a+1
print(a)
if (a == 15) then
print("klaar")
else
goto begin
end
Het wordt al wat ingewikkelder, maar laten dit programma stap voor stap bekijken.
- de variabele a krijgt de waarde 1
- Regel 2 krijgt de naam begin
- de variabele a krijgt de waarde van a plus 1, dus de variabele a wordt 1 hoger.
- de waarde van de variabele a wordt afgedrukt
- De regel is een if-then-else en regel 5 tot en met 9 horen bij elkaar. Op deze regel staan als de waarde van a 15 doe dan wat er na de then staan (dus op regel 6).
- Doe dit als de if op regel 5 waar is. Druk dan klaar af.
- Na de else staat wat er moet gebeuren als de vergelijking op regel 5 NIET waar is.
- Doe dit als de if op regel 5 niet waar is. Ga nu naar de regel met de naam begin (dat is regel 2).
- De end geeft aan dat dit het einde is van het if-then-else-end.
Opdracht
Gebruik het voorbeeld, maar pas het aan:
- gebruik je eigen variabele naam in plaats van a . Bedenk een naam van tenminste 5 letters.
- druk alle getallen van 10 tot en met 20 af.
Inleveren
Een screendump, opdracht8-<jouw-naam>.png van je gehele browser met oplossing.
--
09 While
De vorige opdracht kan je mooier en eenvoudiger uitvoeren met een while .
De while ziet zo uit.
a=1
while( a < 15 )
do
print(a)
a=a+1
end
Alles wat tussen de do en end staat wordt uitgevoerd zolang (while) de vergelijking op regel 2 waar is.
Programmablok en inspringen
De code tussen regel 3 en 6 wordt een programmablok genoemd. Een programmablok wordt altijd ingesprongen. Dat is technisch niet in alle talen verplicht, maar dit maakt de code wel een stuk leesbaarder.
Variabelenamen
De variabelenaam a is slecht gekozen. a zegt niets en in een programma heb je wel 100den variabelen, als die allemaal a, b, c of zo heten dan weet je niet waar dit voor staat. Je zou bijvoorbeeld veel beter de naam optellen of teller of getallen, of .... kunnen gebruiken. Kun jij een goede logische naam bedenken?
Je kunt een while-loop ook in een soort grafiekje weergeven, we noemen dat een flow chart (een diagram die de flow laat zien).
Opdracht
De volgende (hieronder) code is slecht geschreven. Er zit een fout in en de code springt niet juist in.
Pas de code aan zodat de getallen 20 tot en met 1 in aflopende volgorde wordt afgedrukt. Dus de output moet worden 20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1 (maar dan wel onder elkaar.
Vervang de variabele a door een eigen gekozen variabele waarbij de naam van de variabele tenminste 5 lang is.
Dus je doet drie dingen:
- Pas de code aan zodat de getallen 20 tot en met 1 wordt afgedrukt (tip: het plus teken op regel 6 is waarschijnlijk niet juist!).
- Laat de code inspringen zoals het hoort.
- Vervang de variabele-naam a in een zelfgekozen naam van tenminste 5 lang. Gebruik een logische naam.
a=20
while (a>1)
do
print(a)
a=a+1
end
Inleveren
Een screendump, opdracht9-<jouw-naam>.png van je gehele browser met oplossing.
--
10 Tafel
Bekijk de onderstaande code
tafel=8
teller=0
teller=teller+1
print(teller.."X"..tafel.."="..teller*tafel)
teller=teller+1
print(teller.."X"..tafel.."="..teller*tafel)
teller=teller+1
print(teller.."X"..tafel.."="..teller*tafel)
teller=teller+1
print(teller.."X"..tafel.."="..teller*tafel)
Voer deze code (hierboven) uit en bekijk de output.
1X8=8
2X8=16
3X8=24
4X8=32
Het doel is om de code uit te breiden zodat de gehele tafel van 8 wordt afgedrukt, dus:
1X8=8
2X8=16
3X8=24
4X8=32
5x8=40
6*8=48
7*8=56
8*8=64
9*8=72
10*8=80
We kunnen natuurlijk de regel 13 en 14 nog een paar keer kopiëren, Maar stel we zouden door willen gaan tot aan 100*8=8000, dat zou heel veel (stom) werk zijn.
Da moet dus anders kunnen en daarvoor kunnen we de while gebruiken die we in de vorige opdracht hebben geleerd.
Opdracht
Maak een tafel van 12, dus 1x12=12, 2x12=24 enzovoorts. Gebruik daarvoor (delen van) de code die hierboven staat. Gebruik alleen while die je in de vorige les hebt leren gebruiken zodat je efficiëntere code krijgt (= minder regels code).
Inleveren
Een screendump, opdracht10-<jouw-naam>.png van je gehele browser met oplossing.
Je laat de tafel van 12 zien en je gebruikt daarbij een while loop.
--
11 eindopdracht 1
Bekijk de volgende code:
num = 10
-- Test of het getal even is
if num % 2 == 0 then
print("Het getal is even")
else
print("Het getal is oneven")
end
Commentaar
Op regel 3 zie je in het begin --, dat is een manier in LUA om commentaar toe te voegen. Alles na de -- wordt dus niet gezien als code, maar is er om uit te leggen in 'gewone niet-code-taal' wat er gebeurt.
Opdracht
Maak LUA-code die alle even getallen tussen 0 en 100 afdrukt. het eerste getal dat wordt afgedrukt is dus 2 en het laatste getal is 98.
Tip: gebruik delen van de code hierboven en gebruik de while .
Eisen:
- spring goed in (programma blokken)
- maak gebruik van logische variabele namen
- gebruik commentaar in je code.
Elk programmablok moet inspringen en een blok in een blok moet je dus twee maal laten inspringen!
Inleveren (1 bestand)
* Screendump, eindopdracht1-<jouw-naam>.png van je gehele browser met oplossing.
12 eindopdracht 2
Voor deze opdracht heb je alle kennis nodig van de voorgaande opdrachten.
Opdracht
Kies zelf een oneven getal tussen 0 en 100.
Zet in het commentaar bij je code welk getal jij hebt gekozen.
Maak een LUA-programma die alle oneven getallen tussen 0 en 100 (dus eerste is 1 en laatste is 99), bij elkaar optelt behalve het oneven getal dat jij hebt gekozen.
Eisen:
- spring goed in (programma blokken)
- maak gebruik van logische variabele namen
- gebruik commentaar in je code
De output moet er als volgt uit zien:
Als je alle oneven getallen tussen 0 en 100 optelt, behalve het door mij gekozen getal, dan krijg je XX
Op de plaats van de XX komt natuurlijk het antwoord.
Zorg dat je de code begrijpt en dat je alleen dingen gebruikt die zijn uitgelegd!
Inleveren (1 bestand)
Screendump, eindopdracht2-<jouw-naam>.png van je gehele browser met oplossing.
Theorie PHP1
python reformatterCanvas.py 18661 c https://www.roc.ovh/books/2024/page/php1
Wat is een webserver
Wat ga je leren?
In deze les leer je het verschil tussen een front-end taal en een back-end taal. Je leert dat PHP een back-end taal is en dat je daarom een (web)server nodig hebt om PHP te kunnen gebruiken. |
Lees de tekst goed want in de volgende opdracht krijg je vragen over deze tekst.
Een webserver is een computer die verbonden is met het internet en waar bestanden op staan op staan die nodig zijn om een website te laten zien.
Elke website die jij bezoekt op het World Wide Web staat ergens op een webserver. Zo'n webserver heeft een map (folder) met daarin webpagina's die bestaan uit HTML pagina's, CSS bestanden, Javascript, PHP bestanden en derglijke.
Bestandssorrten | Functie |
HTML | Basis opmaak van een webpagina |
CSS | Detail opmaak van een webpagina |
JavaScript | Interactie programmeren in de browser |
PHP | Interactie programmeren op de server |
Tot nu toe ben je gewend om de HTML-bestanden gewoon vanaf je eigen computer te starten door er dubbel op te klikken. De browser leest de bestanden en laat deze een mooie (of lelijke) pagina zien.
Je bent als gebruiker van webapplicaties gewend om bijvoorbeeld in te loggen, een bericht achter te laten of een email te sturen. Deze applicaties zijn dynamisch . Dynamische applicaties hebben een input (invoer) en zetten deze om in een output (uitvoer) .
Bijvoorbeeld:
input : gebruikersnaam en wachtwoord
output : een boodschap dat het aanloggen is gelukt of een boodschap dat het aanloggen niet is gelukt.
Om een dynamische webapplicatie te maken heb je meestal een webserver nodig die de pagina's serveert . De webserver krijgt van de browser, de cliënt een verzoek en de webserver behandeld het verzoek en stuurt een antwoord terug. Net als een ober die een drankje serveert .
Stel je wilt een overzicht van alle studenten in een klas. Je vraagt via de browser dan om het overzicht, bijvoorbeeld door op een menu te klikken. Het verzoek gaat dan via internet naar een webserver en die stuurt het antwoord via internet weer terug naar jouw browser .
Omdat je nog geen toegang hebt tot een echte webserver gaan we er eentje simuleren. Simuleren is het 'net doen alsof'. We simuleren de webserver met een gratis applicatie (wij doen dat met XAMPP) die je kunt installeren op je eigen laptop. Dat heet dan een lokale server. Dat wordt ook wel localhost genoemd. Je laptop is dus door het gebruik van XAMPP een web server geworden.
Om een dynamische applicatie te maken gaan we in deze module gebruik maken van PHP.
De server heet ook wel back-end (achterkant). PHP is een back-end-taal. Dat betekent dat de taal dus op de back-end, de server draait.
Een bezoeker van de site (de eindgebruiker) kan de code die op de server staat niet zien of wijzigen.
Bestandssorrten | Functie | Waar |
HTML | Basis opmaak van een webpagina | Front-end / browser |
CSS | Detail opmaak van een webpagina | Front-end / browser |
Javascript | Interactie programmeren in de browser | Front-end / browser |
PHP | Interactie programmeren op de server | Back-end / server |
Database
Met PHP kun je ook een database benaderen waarin je gegevens kan opslaan voor een langere periode, bijvoorbeeld de gegevens van een gebruiker zoals voornaam, achternaam, email en wachtwoord.
Als je met PHP aan de slag gaat dan kun je pagina's dynamisch maken. Dit betekent dat de output afhankelijk is van de input van de gebruiker.
XAMPP
Tijdens deze module maak je gebruik van een locale server. We gebruiken hiervoor XAMPP.
Je kunt XAMPP downloaden en installeren als je dat nog niet hebt gedaan.
Weet je (nog) niet hoe je XAMPP moet installeren op jouw Windows machine of heb je een "port conflict", kijk dan hier
Inleveren
Volg de instructies in de les en lever je werk dat je in de les hebt gemaakt hier in.
XAMPP
Wat ga je leren?
Ter voorbereiding van PHP gaan we in deze les leren hoe we XAMPP kunnen installeren. |
PHP is een back-end taal. Dat betekent dat deze taal op de server draait. Op de server wordt je code uitgevoerd. Omdat wij (nog) geen server op het internet hebben, installeren wij een soort server op onze laptop. Onze laptop is dan een back-end en ook front-end tegelijkertijd. Onze browser (front-end) 'praat' dus met de PHP server Xammp (back-end).
Later gaan we ook databases gebruiken en daarvoor installeren we een database server. Dit is een onderdeel van Xampp.
OK let's go!
We gaan XAMPP installeren! Volg alle stappen zoals die hier beschreven staan.
-
Installeer Xampp met het installatieprogramma.
- installeer deze op: C:\Xampp
- Tijdens de installatie kies je drie opties: Apache (dat is de PHP-server), MySQL (dat is de database server) en PHPMyAdmin, dat is de tool om de database mee te beheren.
-
Start Xampp en start daarna Apache en MySQL
-
Maak een nieuwe folder in c:\xampp\htdocs\phplevel1-jouw-naam
- vervang jouw-naam door jouw naam
Overal waar in het vervolg jouw-naam staat, vervang je de tekst door jouw naam.
- vervang jouw-naam door jouw naam
- Start VCS en open de folder c:\xampp\htdocs\phplevel1-jouw-naam
- Maak een nieuw bestand en noem deze php01-jouw-naam.php
- Vergeet niet jouw-naam te vervangen!
- Vergeet niet jouw-naam te vervangen!
- Type de volgende code in:
<?php
echo "Hello world!";
?>
Voer de code uit.
Ga naar C:\xampp\htdocs en verwijder het bestand index.php
Ga nu naar de browser en type als url, localhost in.
Open nu de folder en het bestand dat je net hebt gemaakt.
Wat gebeurt er in deze code?
Op regel 1 <?php
wordt tegen de webserver verteld dat we code in php gaan maken. De server/XAMPP weet dan welke taal jij gata praten.
Op regel 3, echo
Het woordje echo betekent dat de server output moet gaan maken. Deze output wordt naar de web browser gestuurd.
Op regel 3 "Hello world!"
echo moet iets naar de browser sturen, dan moet je natuurlijk wel vertellen wat dat is. Het zinnetje na de echo is dat wat er naar de browser wordt gestuurd. Dit zinnetje staat tussen "" om aan te geven waar het zinnetje begint en waar het eindigt.
Op regel 3 ;
Na ELK commando in PHP staat een ; om aan te geven dat het commando afgelopen is en. De meest gemaakte fout in PHP is dat je een ; vergeet. Wedden dat jij dat dit jaar ook tig keer gaat vergeten?
Op regel 5 ?>
We zijn klaar met onze commando's in PHP. We vertellen de server/XAMPP dat we stoppen met "PHP praten".
Test de code en controleer of er in je browser de tekst Hello World! verschijnt.
Je hoeft niets in te leveren, maar als PHP/XAMPP niet werkt dan kan je de volgende opdracht niet maken.
Variabelen
Wat ga je leren?
In alle programmeertalen gebruik je variabelen. In deze les leer je wat een variabele is en hoe je deze kan gebruiken. |
Computer geheugen
Een variabele is een plek in het geheugen van de computer waar je informatie in op kan slaan.
Het geheugen van een computer loopt bijvoorbeeld van adres 0 tot aan adres 32768.
Dan kan het zijn dat je op plaats 21 311 een plaats hebt waar je jouw naam hebt opgeslagen en op plaats 18711 heb je een plaats in het geheugen waar je jouw leeftijd hebt opgeslagen. Omdat deze getallen lastig zijn te onthouden kunnen we deze geheugenplaatsen een naam geven. Dat heet een variabele.
Variabele namen
Als je gaat programmeren ga je best veel gebruik maken van variabelen. We geven dus een naam aan een geheugenplekje, bijvoorbeeld plaats 21311 is waar jouw naam staat, noemen we mijnnaam en de plaats 18711 waar jouw leeftijd in staat noemen we mijnleeftijd.
Doosje of lade
Je zou een variabele ook kunnen zien als een doosje of een lade waar je iets kan instoppen.
Net als bij een doos of een lade, kan je de doos/lade openen en kijken wat er in zit; er kan niets in zitten, maar er kunnen ook getallen of zinnetjes in zitten. En....je kunt de inhoud ook veranderen.
In de eerste 2 minuten van deze video (NL)
wordt dit nog een keer uitgelegd.
In dit filmpje gaat het over de programmeertaal Python, maar dit geldt ook voor PHP (en bijna alle andere computertalen)
PHP Variabele
In PHP kun je een variabele makkelijk herkennen omdat die altijd met een $-teken begint, bijvoorbeeld $mijnnaam, $mijnleeftijd zijn twee variabelen.
Hoe ken je een waarde toe aan een variabele?
Stel jij heet Mohammed en je wilt de variable $voornaam de waarde Mohammed geven. Je gebruikt daar voor het = teken. Zie dit niet als 'is' maar als 'wordt' .
<?php
$mijnnaam="Mohammed";
?>
op regel 1 wordt de computer verteld dat je PHP code gaat gebruiken.
op regel 2 hier staat dat de variabele met de naam $mijnnaam de waarde Mohammed krijgt. Dus $mijnnaam wordt "Mohammed".
Mohammed is een zinnetje dus dat staat tussen "".
In dit geval is het een zinnetje van één woord, maar het zou ook meer woorden kunnen bevatten daarom staat een zinnetje, ook al is het maar één woordt altijd tussen "". De computer weet dan precies waar het zinnetje begint en waar het eindigt.
En niet vergeten de ; om aan te geven dat het commando klaar is!
Elk PHP commando wordt in PHP (en ook in bijv. JavaScript en C#, C, C++ en Java) afgesloten met een ;
Even terug naar het doosje of de lade; we hebben dus een doosje gemaakt met het label mijnnaam en in het doosje hebben we de string-waarde "Mohammed" gezet.
Het = teken dat we hebben gebruikt kun je dus lezen als 'stop de volgende waarde in dit doosje'.
Variabele naamgeving
Zoals gezegd, een variabele naam in PHP begint altijd met een $-teken met daarachter een woord zonder spaties. De variabele bestaat dus altijd uit één woord. Omdat je soms duidelijk wil maken wat er in de variabele staat gebruik je goede namen die vaak wat langer zijn.
Bijvoorbeeld $hoofdpersonagevandefilm.
Om dit leesbaar te maken, maken we hiervan hoofdPersonageVanDeFilm.
Dus $hoofdpersonagevandefilm wordt $hoofdPersonageVanDeFilm
Zie je het verschil?
In code ziet het er dan zo uit.
$hoofdPersonageVanDeFilm = "Ryan Reynolds";
Zo bestaat de naam van de variabele nog steeds uit één woord, maar is het wel beter leesbaar.
Let op want de variabele $mijnnaam en $mijnNaam zijn twee verschillende variabelen. We zeggen dan dat variabelenamen hoofdlettergevoelig zijn (in het Engels; case sensitive).
Strings
Wat ga je leren?
Variabelen heb je in alle soorten en maten. De twee belangrijkste zijn getallen en strings. In deze les leer je wat een string variabele is en hoe je er in PHP mee kan werken. |
We hebben al kennis gemaakt met strings in de vorige les over variabelen, maar in deze les gaan we hier nog wat verder op in.
Je hebt verschillende soorten variabelen.
Om te beginnen zijn er twee hoofdsoorten: strings en getallen. In deze les gaan we kijken naar strings.
Strings
Strings (letterlijk vertaald een ketting) is een ketting van letters en/of getallen achter elkaar. Om het begin en een eind van een string aan te geven staat een string altijd tussen quotes. Je mag enkele of dubbele quotes gebruiken.
<?php
$string = "dit is een voorbeeld";
$nogEenString = 'dit is ook een string';
echo $string;
echo $nogEenString;
?>
Op regel 3 staat een string tussen dubbele quotes en op regel 4 staat een string tussen enkele quotes '.
Met strings kan je verschillende dingen doen. Zo kan je strings aan elkaar plakken. Dat heet concatenation
Links to an external site.(Engels).
In PHP plak je strings aan elkaar door tussen twee string een punt te zetten.
<?php
$voornaam="Alexandra";
$achternaam="Gaona";
echo $voornaam." ".$achternaam;
?>
Op regel 5 worden eigenlijk drie strings aan elkaar geplakt. Eerst de string die in de variabele $voornaam staat dan de string " " (deze staat niet in een variabele) en dan string die in de variabele $achternaam staat.
Als je de HTML code <br> afdrukt dan wordt er een regel overgeslagen. "<br>" is een string.
echo "<br>"; // regel overslaan
Dus regel 1 drukt de string "<br>" af en de browser slaat dan een regel over.
De // aan het einde van de regel is overigens commentaar. Het doet niets en het heeft alleen als doel om je code duidelijker te maken (voor anderen of later voor jezelf).
Maak nu de opdrachten.
Getallen
Wat ga je leren?
Een veel gebruikt type variabele is integer. In deze les je wat een integer variabele is en hoe je daar mee kan werken in PHP. |
Naast strings hebben we ook getallen. Deze zijn weer onderverdeeld in gehele getallen (integers) en gebroken getallen (float). Dat verschil is in PHP niet zo belangrijk omdat PHP zelf het juiste soort kiest.
Getallen zijn wel anders dan strings want je kunt er mee rekenen. Om aan te geven dat je een getal bedoeld en geen string, zet je een getal niet tussen quotes.
Dus $voorbeeld="9" is de string "9" en $voorbeeld=9 is het getal 9.
<?php
$getal1=12;
$getal2=13;
echo $getal1 + $getal2;
?>
Net zoals je getallen kan optellen, kun je ook andere bewerkingen uitvoeren.
Bewerking | teken | voorbeeld |
optellen | + | echo $a + $b; |
aftrekken | - | echo $a - $b; |
vermenigvuldigen (keer) | * | echo $a * $b; |
delen | / | echo $a / $b; |
Ga door naar de opdrachten.
Condition if-then-else
Wat ga je leren?
Code wordt regel voor regel van boven naar beneden uitgevoerd, In deze les leer je hoe je met een if in PHP kan werken en hoe je dus kan zorgen dat code alleen wordt uitgevoerd als er aan die ene voorwaarde wordt voldaan. |
IF
Stel je maakt een spel en je moet bepalen of de speler het juiste antwoord heeft gegeven:
- Juiste antwoord? Score wordt verhoogd met 1.
- Onjuiste antwoord? Score blijft hetzelfde.
Er komt dus alleen iets bij de score als er aan een voorwaarde is voldaan.
Dat ziet er in PHP zo uit:
$score=0;
$vraag = "Hoeveel is 10+2?";
$antwoord = 12;
if ( $antwoord == 12 ) {
$score = $score + 1;
}
echo "De score is: $score";
Op regel 6 wordt het antwoord gecontroleerd. Is het antwoord juist dan wordt alle code tussen { en } uitgevoerd. In dit geval is dat alleen regel 7.
Op regel 4 zie je = en op regel 6 ==
Dat komt omdat ze beide iets anders betekenen.
teken | voorbeeld | betekent |
= | $antwoord = 12 |
De waarde van $antwoord wordt 12 |
== | $antwoord == 12 |
Is de waarde van $antwoord gelijk aan 12? |
We kunnen ons afvragen of waarden gelijk zijn, maar er zijn nog een heel stel andere voorwaarden. De belangrijkste zijn:
teken | voorbeeld | betekent |
== | $antwoord == 12 |
Is de waarde van $antwoord gelijk aan 12? |
!= | $antwoord != 12 |
Is de waarde van $antwoord ongelijk aan 12? |
> | $antwoord > 12 |
Is de waarde van $antwoord groter dan 12? |
< | $antwoord < 12 |
Is de waarde van $antwoord kleiner dan 12? |
>= | $antwoord >= 12 |
Is de waarde van $antwoord groter of gelijk aan 12? |
<= | $antwoord <= 12 |
Is de waarde van $antwoord kleiner of gelijk aan 12? |
ELSE
Stel voor dat als de score fout is dat er dan een punt van de score wordt afgetrokken, dan zou je dat zo kunnen coderen
$score=0;
$vraag = "Hoeveel is 10+2?";
$antwoord = 12;
if ( $antwoord == 12 ) {
$score = $score + 1;
} else {
$score = $score -1;
}
echo "De score is: $score";
Maak de volgende opdrachten en gebruik indien nodig de volgende bronnen.
Bronnen
Links to an external site.
W3 Schools - operators Links to an external site.
W3 Schools - if else
HTML, PHP en include
Wat ga je leren?
In deze les leer je hoe je HTML en PHP samen kunt gebruiken.
|
Include
Om je code overzichtelijk te houden, stop je niet al je code in één groot bestand, maar je deelt het op in meerdere kleinere bestanden. Je kunt dan snel de juiste code vinden.
Zo kun je php code hebben die een footer afdrukt. Stel je wilt je volgende footer:
<?php
echo "<hr>";
echo "(c) Copyright<br>";
echo "De inhoud en structuur van onze webpagina's zijn auteursrechtelijk beschermd.";
?>
<!DOCTYPE html>
<html>
<body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
</body>
<?php
include 'footer.php';
?>
</html>
Zie je wat er op regel 9 gebeurt? Je voegt als het ware de inhoud van de footer.php toe op regel 9. Hieronder zie je dan wat de include eigenlijk doet.
<!DOCTYPE html>
<html>
<body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
</body>
<?php
echo "<hr>";
echo "(c) copyright<br>";
echo "De inhoud en structuur van onze webpagina's zijn auteursrechtelijk beschermd.";
?>
</html>
De include verwijst altijd naar een bestand.
Let erop dat je alleen php code kan uitvoeren als de naam van het bestand op .php eindigt. Bovenstaand voorbeeld werkt dus alleen als de naam eindigt in .php.
Je kunt de naam van het bestand ook als string mee geven, tussen " zoals in het voorbeeld, maar je kunt natuurlijk ook een variabele meegeven:
include $footer;
De code van het bestand waarvan de naam in de variabele $footer staat wordt nu ingevoegd.
Nog een voorbeeld
Voorbeeld: home.php
<?php
include 'database.php';
?>
<html>
<head>
</head>
<body>
<div class="menu">
<?php include 'menu.php'; ?>
</div>
</body>
</html>
Je ziet in bovenstaand voorbeeld op regel 9 dat een menu met behulp van php wordt ingevoegd in de
<div class="menu"> .... </div>
Je ziet dat php geopend wordt <?php
en er dan normale php-code volgt. Zodra de php code klaar is dan sluiten we de php code weer met ?>
.
Logical operators en korte broeken
Wat ga je leren?
In deze les gaan we leren hoe we condities kunnen combineren. We leren hoe we code alleen kunnen laten uitvoeren als er aan twee voorwaarden wordt voldaan. En we leren hoe we code kunnen uitvoeren als er aan één van de twee voorwaarden wordt voldaan. |
We hebben het gehad over if-then-else.
Met een if-then-else kun je voorwaardelijk code uitvoeren. Alleen als een bepaalde vergelijking waar is dan wordt bepaalde code uitgevoerd.
Stel je hebt een variabele $temperatuur waarin de temperatuur staat en stel je hebt een andere variabele waarin de dag van de week staat. Dus bijvoorbeeld:
$temperatuur = 21;
$dagVanDeWeek = 'ma';
Dus in dit voorbeeld is het maandag en de temperatuur is 21 graden. Stel dat ik code moet schrijven die mij advies geeft over het dragen van een korte broek. Ik wil alleen een korte broek aan doen als het zaterdag is én als de temperatuur minimaal 21
is. Dat zijn dus twee voorwaarden die waar moeten zijn.
Hoe doe je dat in code?
$temperatuur = 21;
$dagVanDeWeek = 'ma';
if ( $temperatuur >= 21 && $dagVanDeWeek == "za" ) {
echo "Advies is om vandaag een korte broek aan te trekken.";
} else {
echo "Advies is om vandaag geen korte broek aan te trekken.";
}
Zie je het && - teken?
Dat betekent dat beide voorwaarden waar moeten zijn. Dus de temperatuur is groter of gelijk aan 21 graden én de dag van de week is 'za'.
Stel dat we nu op zaterdag of zondag altijd een korte broek willen dragen, hoe zou de code er dan uit zien?
$temperatuur = 21;
$dagVanDeWeek = 'ma';
if ( $dagVanDeWeek == "za" || $dagVanDeWeek == "zo" ) {
echo "Advies is om vandaag een korte broek aan te trekken.";
} else {
echo "Advies is om vandaag geen korte broek aan te trekken.";
}
Zie je het || - teken?
Dat betekent dat aan één van de voorwaarden moet worden voldaan. Dus als de dag van de week zaterdag óf zondag is dan volgt het advies voor het dragen van een korte broek.
In de voorbeelden wordt && gebruikt voor and en || voor or. In de meeste programmeertalen kun je ook gewoon het woord and en or gebruiken. Dat werkt in PHP ook.
Dus de volgende twee regels doen hetzelfde.
if ( $temperatuur >= 21 && $dagVanDeWeek == "za" ) {....
if ( $temperatuur >= 21 and $dagVanDeWeek == "za" ) {....
Dus samengevat
Betekenis | Voorbeeld | ||
&& | and | AND, aan beide voorwaarden moet zijn voldaan | if ( $temperatuur >= 21 && $dagVanDeWeek == "za" ) { |
|| | or | OR, aan één van beide voorwaarden zijn voldaan | if ( $dagVanDeWeek == "za" || $dagVanDeWeek == "zo" ) { |
Haakjes in condities
Stel we willen alleen een korte broek aan als de temperatuur minimaal 21 graden is én de dag zaterdag is of de dag zondag is.
Dan krijgen we de volgende code:
if ( $temperatuur >= 21 && $dagVanDeWeek == "za" || $dagVanDeWeek == "zo" ) {
Maar stel dat het anders is. Op zondag willen we altijd een korte broek dragen en op zaterdag alleen als de temperatuur minimaal 21 graden is. Dus in code:
if ( $dagVanDeWeek == "zo" || $temperatuur >= 21 && $dagVanDeWeek == "za" ) {
Maar deze code is bijna hetzelfde als de vorige code, alleen de volgorde is anders. Om de code goed uit te voeren moeten we haakjes gebruiken:
Korte broek in het weekend als de temperatuur 21 graden of hoger is:
if ( $temperatuur >= 21 && ( $dagVanDeWeek == "za" || $dagVanDeWeek == "zo" ) ) {
Het geen tussen haakjes, de || wordt eerst uitgevoerd, daarna volgt de &&
Altijd een korte broek op zondag én op zaterdag alleen een korte broek als de temperatuur 21 graden of hoger is.
if ( ($temperatuur >= 21 && $dagVanDeWeek == "za" ) || $dagVanDeWeek == "zo" ) {
Hier wordt eerst de && uitgevoerd en daarna volgt de ||.
KennisCheck
Als je alles hebt gelezen en hebt uitgevoerd dan gaan jullie klassikaal een Kennischeck uitvoeren.
- Voer de juiste naam en klas in bij de kennis-check
- Zorg ervoor dat je 80% of hoger scoort.
Inleveren
- Screenshot van je resultaat.
PHP Intro
Update
python reformatterCanvas.py 18661 56420 https://www.roc.ovh/books/2024/page/php-intro
Wat is een webserver
Wat ga je leren?
In deze les leer je het verschil tussen een front-end taal en een back-end taal. Je leert dat PHP een back-end taal is en dat je daarom een (web)server nodig hebt om PHP te kunnen gebruiken. |
Lees de tekst goed, want in de volgende opdracht krijg je vragen over deze tekst.
Een webserver is een computer die verbonden is met het internet en waar bestanden op staan op staan die nodig zijn om een website te laten zien.
Elke website die jij bezoekt op het world wide web staat ergens op een webserver. Zo'n webserver heeft een map (folder) met daarin webpagina's die bestaan uit HTML-pagina's, CSS-bestanden, JavaScript, PHP-bestanden en dergelijke.
Bestandssoorten | Functie |
HTML | Basis opmaak van een webpagina |
CSS | Detail opmaak van een webpagina |
JavaScript | Interactie programmeren in de browser |
PHP | Interactie programmeren op de server |
Tot nu toe ben je gewend om de HTML-bestanden gewoon vanaf je eigen computer te starten door er dubbel op te klikken. De browser leest de bestanden en laat deze een mooie (of lelijke) pagina zien.
Je bent als gebruiker van webapplicaties gewend om bijvoorbeeld in te loggen, een bericht achter te laten of een e-mail te sturen. Deze applicaties zijn dynamisch. Dynamische applicaties hebben een input (invoer) en zetten deze om in een output (uitvoer) .
Bijvoorbeeld:
input : gebruikersnaam en wachtwoord
output : een boodschap dat het aanloggen is gelukt of een boodschap dat het aanloggen niet is gelukt.
Om een dynamische webapplicatie te maken heb je meestal een webserver nodig die de pagina's serveert. De webserver krijgt van de browser, de cliënt een verzoek en de webserver behandeld het verzoek en stuurt een antwoord terug. Net als een ober die een drankje serveert .
Stel, je wilt een overzicht van alle studenten in een klas. Je vraagt via de browser dan om het overzicht, bijvoorbeeld door op een menu te klikken. Het verzoek gaat dan via internet naar een webserver en die stuurt het antwoord via internet weer terug naar jouw browser .
Omdat je nog geen toegang hebt tot een echte webserver gaan we er eentje simuleren. Simuleren is het 'net doen alsof'. We simuleren de webserver met een gratis applicatie (wij doen dat met XAMPP) die je kunt installeren op je eigen laptop. Dat heet dan een lokale server. Dat wordt ook wel localhost genoemd. Je laptop is dus door het gebruik van XAMPP een webserver geworden.
Om een dynamische applicatie te maken gaan we in deze module gebruik maken van PHP.
De server heet ook wel back-end (achterkant). PHP is een back-end-taal. Dat betekent dat de taal dus op de back-end, de server draait.
Een bezoeker van de site (de eindgebruiker) kan de code die op de server staat niet zien of wijzigen.
Bestandssoorten | Functie | Waar |
HTML | Basis opmaak van een webpagina | Front-end / browser |
CSS | Detail opmaak van een webpagina | Front-end / browser |
JavaScript | Interactie programmeren in de browser | Front-end / browser |
PHP | Interactie programmeren op de server | Back-end / server |
Database
Met PHP kun je ook een database benaderen waarin je gegevens kan opslaan voor een langere periode, bijvoorbeeld de gegevens van een gebruiker zoals voornaam, achternaam, e-mail en wachtwoord.
Als je met PHP aan de slag gaat dan kun je pagina's dynamisch maken. Dit betekent dat de output afhankelijk is van de input van de gebruiker.
XAMPP
Tijdens deze module maak je gebruik van een lokale server. We gebruiken hiervoor XAMPP.
Je kunt XAMPP downloaden en installeren als je dat nog niet hebt gedaan.
Weet je (nog) niet hoe je XAMPP moet installeren op jouw Windows machine of heb je een "port conflict",
of heb je andere problemen, kijk dan eens of de info op deze pagina je kan helpen.
Opdracht
- Installeer XAMPP op de manier zoals uitgelegd in de les.
- Volg de instructies in de les en voer de kennischeck uit in de les, 8 vragen en minimale score is 80%
Inleveren
- Volg de instructies in de les en lever een screenshot van je XAMPP in.
- Lever een screenshot van de kennis-check die je tijdens de les hebt uitgevoerd in.
Welkom!
Je hebt XAMPP geïnstalleerd.
Voer de volgende stappen uit.
- Start XAMPP.
- In de folder C:\xampp\htdocs staat een bestand index.php. Verwijder dit bestand!
- Maak een nieuwe folder aan en noem die PHP1
- Met VSC open je de net aangemaakte folder.
- In deze folder maak je met VCS een nieuw bestand en je noemt dit bestand opdracht1-jouw-naam.php.
- Vervang jouw-naam door jouw naam
Overal waar in het vervolg jouw-naam staat, vervang je de tekst door jouw naam.
- Vervang jouw-naam door jouw naam
- Met VSC open je het net aangemaakte bestand.
- Je maakt de volgende code.
<?php echo "Hello world!"; ?>
- Ga nu naar de browser en type als url, localhost in.
- Open nu de folder en het bestand dat je net hebt gemaakt, wat gebeurt er?
Als het goed is zie er output in de browser verschijnt:
Uitleg code
Wat gebeurt er in deze code?
- Op regel 1 <?php
wordt tegen de webserver verteld dat we code in php gaan maken. De server/XAMPP weet dan welke taal jij gata praten. - Op regel 3, echo
Het woordje echo betekent dat de server output moet gaan maken. Deze output wordt naar de web browser gestuurd. - Op regel 3 "Hello world!"
echo moet iets naar de browser sturen, dan moet je natuurlijk wel vertellen wat dat is. Het zinnetje na de echo is dat wat er naar de browser wordt gestuurd. Dit zinnetje staat tussen "" om aan te geven waar het zinnetje begint en waar het eindigt. - Op regel 3 ;
Na ELK commando in PHP staat een ; om aan te geven dat het commando afgelopen is en. De meest gemaakte fout in PHP is dat je een ; vergeet. Wedden dat jij dat dit jaar ook tig keer gaat vergeten? - Op regel 5 ?>
We zijn klaar met onze commando's in PHP. We vertellen de server/XAMPP dat we stoppen met "PHP praten".
Test de code en controleer of er in je browser de tekst Hello World! verschijnt.
Opdracht
Verander de (php) code zodat de volgende output in de browser verschijnt:
Welkom jouw-Voornaam !
Vergeet niet jouw-Voornaam te vervangen door jouw voornaam.
Inleveren
Je moet twee bestanden inleveren:
- Het bestand opdracht1-jouw-naam.php
- Een schermafdruk van jouw hele browser scherm waarin dus ook de URL (web adres te zien is) te zien is en waarin je de output van jouw code laat zien.
Variabelen
Wat ga je leren?
In alle programmeertalen gebruik je variabelen. In deze les leer je wat een variabele is en hoe je deze kan gebruiken. |
Computer geheugen
Een variabele is een plek in het geheugen van de computer waar je informatie in op kan slaan.
Het geheugen van een computer loopt bijvoorbeeld van adres 0 tot aan adres 32768.
Dan kan het zijn dat je op plaats 21 311 een plaats hebt waar je jouw naam hebt opgeslagen en op plaats 18711 heb je een plaats in het geheugen waar je jouw leeftijd hebt opgeslagen. Omdat deze getallen lastig zijn te onthouden kunnen we deze geheugenplaatsen een naam geven. Dat heet een variabele.
Variabele namen
Als je gaat programmeren ga je best veel gebruik maken van variabelen. We geven dus een naam aan een geheugenplekje, bijvoorbeeld plaats 21311 is waar jouw naam staat, noemen we mijnnaam en de plaats 18711 waar jouw leeftijd in staat noemen we mijnleeftijd.
Doosje of lade
Je zou een variabele ook kunnen zien als een doosje of een lade waar je iets kan instoppen.
Net als bij een doos of een lade, kan je de doos/lade openen en kijken wat er in zit; er kan niets in zitten, maar er kunnen ook getallen of zinnetjes in zitten. En....je kunt de inhoud ook veranderen.
In de eerste 2 minuten van deze video (NL)
wordt dit nog een keer uitgelegd.
In dit filmpje gaat het over de programmeertaal Python, maar dit geldt ook voor PHP (en bijna alle andere computertalen)
PHP Variabele
In PHP kun je een variabele makkelijk herkennen omdat die altijd met een $-teken begint, bijvoorbeeld $mijnnaam, $mijnleeftijd zijn twee variabelen.
Hoe ken je een waarde toe aan een variabele?
Stel jij heet Mohammed en je wilt de variable $voornaam de waarde Mohammed geven. Je gebruikt daar voor het = teken. Zie dit niet als 'is' maar als 'wordt' .
<?php
$mijnnaam="Mohammed";
?>
op regel 1 wordt de computer verteld dat je PHP code gaat gebruiken.
op regel 2 hier staat dat de variabele met de naam $mijnnaam de waarde Mohammed krijgt. Dus $mijnnaam wordt "Mohammed".
Mohammed is een zinnetje dus dat staat tussen "".
In dit geval is het een zinnetje van één woord, maar het zou ook meer woorden kunnen bevatten daarom staat een zinnetje, ook al is het maar één woordt altijd tussen "". De computer weet dan precies waar het zinnetje begint en waar het eindigt.
En niet vergeten de ; om aan te geven dat het commando klaar is!
Elk PHP commando wordt in PHP (en ook in bijv. JavaScript en C#, C, C++ en Java) afgesloten met een ;
Even terug naar het doosje of de lade; we hebben dus een doosje gemaakt met het label mijnnaam en in het doosje hebben we de string-waarde "Mohammed" gezet.
Het = teken dat we hebben gebruikt kun je dus lezen als 'stop de volgende waarde in dit doosje'.
Variabele naamgeving
Zoals gezegd, een variabele naam in PHP begint altijd met een $-teken met daarachter een woord zonder spaties. De variabele bestaat dus altijd uit één woord. Omdat je soms duidelijk wil maken wat er in de variabele staat gebruik je goede namen die vaak wat langer zijn.
Bijvoorbeeld $hoofdpersonagevandefilm.
Om dit leesbaar te maken, maken we hiervan hoofdPersonageVanDeFilm.
Dus $hoofdpersonagevandefilm wordt $hoofdPersonageVanDeFilm
Zie je het verschil?
In code ziet het er dan zo uit.
$hoofdPersonageVanDeFilm = "Ryan Reynolds";
Zo bestaat de naam van de variabele nog steeds uit één woord, maar is het wel beter leesbaar.
Let op want de variabele $mijnnaam en $mijnNaam zijn twee verschillende variabelen. We zeggen dan dat variabelenamen hoofdlettergevoelig zijn (in het Engels; case sensitive).
Opdracht
Lees de tekst aandachtig door en maak de kennis-check in de les.
Inleveren
Schermafdruk van de kennischeck met een score van 80% of meer.
Variabelen 1
We gaan met deze code aan de slag.
<?php
$mijnNaam="Mohammed";
?>
Maak een nieuw bestand in c:\xampp\htdocs\phplevel1-jouw-naam
Noem het bestand php02-jouw-naam.php
Maak je eigen code en geef daarbij de variabele $mijnnaam de waarde van jouw naam.
Als je een variabele als een doosje ziet waar je iets in stopt, dan stop je dus jouw naam in het doosje $mijnnaam.
Test de code uit. Wat zie je? Niets? Dat klopt want we hebben geen output gemaakt.
We gaan een regel toevoegen aan onze code waarin we output maken. Tussen regel 2 en 3 voegen we een extra regel toe.
echo $mijnNaam;
Let op! De variabele naam is hier veranderd van $ mijnnaam naar $ mijnNaam . Je zult de naam van de variabele dus ook op regel 2 moeten aanpassen anders heb je twee verschillende variabelen. $ mijnnaam is namelijk niet dezelfde variabele als $ mijnNaam .
Test je code en als het goed is zie je nu dat de waarde van jouw variabele op het scherm (in je browser) wordt afgedrukt.
Inleveren
- Het bestand php02-jouw-naam.php
Variabelen 2
Breid de code uit de vorige opdracht uit.
Voeg een extra variabele toe mijnLeeftijd en geef die de waarde van jouw-leeftijd. Druk ook de leeftijd af.
De leeftijd is een nummer en dus geen zinnetje. De leeftijd daarom niet tussen "" plaatsen!
Test je code!
Inleveren
- Het bestand php03-jouw-naam.php
- Een screenshot waarop jouw PHP-code te zien is.
mijnNaam en mijnLeeftijd
Wat ga je leren?
Code lezen en begrijpen wat er gebeurt. Hiervoor krijg je code en worden er vragen over deze code gesteld. Je kunt alles gewoon zelf uitproberen, ga niet gokken, maar controleer je antwoorden door het zelf te proberen! Als tweede opdracht in deze les krijg je een stukje code met twee foutjes. Kun jij deze foutjes vinden en oplossen? |
We beginnen met deze foutloze code:
1 <?php
2
3 $mijnNaam="Random";
4 $mijnLeeftijd=23;
5
6 $mijnNaam="Foobar";
7 $mijnLeeftijd=$mijnLeeftijd+1;
8
9 echo "ik heet $mijnNaam en ik ben $mijnLeeftijd jaar oud.";
10
11 ?>
Kijk naar de code hierboven en probeer te voorspellen wat de output is. Wat er dus wordt afgedrukt.
Tip: als je de waarde van een variabele wil veranderen dan kun je de waarde gewoon overschrijven. Je hoeft de variabele niet eerst leeg te maken of.zo.
Maak een nieuw bestand in c:\xampp\htdocs\phplevel1-jouw-naam
Noem het bestand php04-jouw-naam.php
Zet de code erin en kijk of er inderdaad gebeurt wat jij had voorspelt.
Open MS Word, kopieer de vraag en tik daaronder jouw antwoord. Test aan de hand van code of jouw antwoord klopt.
1: Stel je drukt op regel 5 de waarde van $mijnNaam af, wat is dan de waarde?
2: Stel je drukt op regel 8 de waarde van $mijnNaam af, wat is dan de waarde?
3: Stel je drukt op regel 5 de waarde van $mijnLeeftijd af, wat is dan de waarde?
4: Stel dat je regel 4 twee maal uitvoert.
5: Stel dat je regel 7 twee maal uitvoert.
Je kopieert dus regel 7 naar regel 8, zodat deze twee maal voorkomt.
Wat is nu de waarde van $mijnLeeftijd vlak na regel 8?
6: Leg bij opdracht 5 in eigen woorden uit wat er gebeurt.
Inleveren
Sla het MS Word bestand op in PDF formaat met de naam PHP04-jouw-naam.pdf en lever dat in.
Fouten vinden
Als programmeur maak je code, maar een veel belangrijker onderdeel van je werk wordt het opsporen en verbeteren van fouten.
Soms zijn dat fouten die anderen hebben gemaakt, maar vaak zijn het ook fouten die je zelf hebt gemaakt. Het verbeteren van fouten wordt ook wel debuggen genoemd.
Maak een bestand PHP05-jouw-naam.php (let op dat dit bestand een PHP bestand is).
Kopieer de volgende code naar PHP05-jouw-naam.php en test de code uit.
<?php
$mijnNaam = "Random";
$mijnLeeftijdNu = 23;
$mijnLeeftijdVolgendJaar = $mijnLeeftijdNu+1
echo "ik heet $mijnnaam en ik ben $mijnLeeftijd jaar oud, volgend jaar ben ik $mijnLeeftijdVolgendJaar oud.";
?>
De programmeur heeft op 2 regels foutjes gemaakt. Lees de foutmelding en probeer de twee fouten op te lossen.
Verbeter de code, test het en als alles goed werkt lever je dit bestand ook in.
Inleveren
- PHP05-jouw-naam.php , hierin staat de verbeterde en getest code.
KennisCheck
Als je alles hebt gelezen en hebt uitgevoerd dan gaan jullie klassikaal een Kennischeck uitvoeren.
- Voer de juiste naam en klas in bij de kennis-check
- Zorg ervoor dat je 80% of hoger scoort.
Inleveren
- Screenshot van je resultaat.
PHP1
python reformatterCanvas.py 18661 56422 https://www.roc.ovh/books/2024/page/php1
mijnNaam en mijnLeeftijd
Wat ga je leren?
Code lezen en begrijpen wat er gebeurt. Hiervoor krijg je code en worden er vragen over deze code gesteld. Je kunt alles gewoon zelf uitproberen, ga niet gokken, maar controleer je antwoorden door het zelf te proberen! Als tweede opdracht in deze les krijg je een stukje code met twee foutjes. Kun jij deze foutjes vinden en oplossen? |
We beginnen met deze foutloze code:
1 <?php
2
3 $mijnNaam="Random";
4 $mijnLeeftijd=23;
5
6 $mijnNaam="Foobar";
7 $mijnLeeftijd=$mijnLeeftijd+1;
8
9 echo "ik heet $mijnNaam en ik ben $mijnLeeftijd jaar oud.";
10
11 ?>
Kijk naar de code hierboven en probeer te voorspellen wat de output is. Wat er dus wordt afgedrukt.
Tip: als je de waarde van een variabele wil veranderen dan kun je de waarde gewoon overschrijven. Je hoeft de variabele niet eerst leeg te maken of.zo.
Maak een nieuw bestand in c:\xampp\htdocs\phplevel1-jouw-naam
Noem het bestand php04-jouw-naam.php
Zet de code erin en kijk of er inderdaad gebeurt wat jij had voorspelt.
Open MS Word, kopieer de vraag en tik daaronder jouw antwoord. Test aan de hand van code of jouw antwoord klopt.
1: Stel je drukt op regel 5 de waarde van $mijnNaam af, wat is dan de waarde? Antwoord: .... 2: Stel je drukt op regel 8 de waarde van $mijnNaam af, wat is dan de waarde? Antwoord: .... 3: Stel je drukt op regel 5 de waarde van $mijnLeeftijd af, wat is dan de waarde? Antwoord: .... 4: Stel dat je regel 4 twee maal uitvoert. Antwoord: .... 5: Stel dat je regel 7 twee maal uitvoert. Antwoord: .... 6: Leg bij opdracht 5 in eigen woorden uit wat er gebeurt. Antwoord: .... |
|
Sla het MS Word bestand op in PDF formaat met de naam PHP04-jouw-naam.pdf en lever dat in.
--
Fouten vinden
Als programmeur maak je code, maar een veel belangrijker onderdeel van je werk wordt het opsporen en verbeteren van fouten.
Soms zijn dat fouten die anderen hebben gemaakt, maar vaak zijn het ook fouten die je zelf hebt gemaakt. Het verbeteren van fouten wordt ook wel debuggen genoemd.
Maak een bestand PHP05-jouw-naam.php (let op dat dit bestand een PHP bestand is).
Kopieer de volgende code naar PHP05-jouw-naam.php en test de code uit.
<?php
$mijnNaam = "Random";
$mijnLeeftijdNu = 23;
$mijnLeeftijdVolgendJaar = $mijnLeeftijdNu+1
echo "ik heet $mijnnaam en ik ben $mijnLeeftijd jaar oud, volgend jaar ben ik $mijnLeeftijdVolgendJaar oud.";
?>
De programmeur heeft op 2 regels foutjes gemaakt. Lees de foutmelding en probeer de twee fouten op te lossen.
Verbeter de code, test het en als alles goed werkt lever je dit bestand ook in.
Inleveren
- PHP05-jouw-naam.php , hierin staat de verbeterde en getest code.
Strings 1
Lees de theorie
Opdracht
01 <?php
02 $voornaam="Alexandra";
03 $achternaam="Gaona";
04
05 echo $voornaam." ".$achternaam;
06 echo "Alexandra"." "."Gaono";
07 ?>
Test de code.
Regel 5 en 6 doen beide hetzelfde, althans hetzelfde wordt afgedrukt. Toch is er verschil. Hoe moet je de code bijvoorbeeld aanpassen, zodat de voornaam 'Ali' wordt?
Leg in eigen woorden uit wat het verschil is tussen regel 5 en regel 6.
Tip1: verander regel 2 en geef $voornaam een andere waarde, bijvoorbeeld jouw voornaam.
Wat gebeurt er? Zie je nu het verschil?
Tip2: denk aan wat een variabele is, en waar wordt die gebruikt?
Je kunt als template het volgende gebruiken.
Op regel 5 wordt ..... afgedrukt omdat ......
Op regel 6 wordt ..... afgedrukt omdat .......
Inleveren
- jouw uitleg (in text veld)
Strings 2
Opdracht
Maak een nieuw bestand php05b-jouw-naam.php
<?php
$voornaam="Alexandra";
$achternaam="Gaona";
echo $voornaam." ".$achternaam;
echo "Alexandra ".$achternaam;
?>
Gebruik dit laatste voorbeeld en verander de voor- en achternaam in je eigen naam en verander de code zodat het volgende wordt afgedrukt.
Welkom jouw-voornaam jouw achternaam!
Ik ben blij om je te zien!
Gebruik de variabelen $voornaam en $achternaam. Geef de variabelen de juisten waarden. Dus $voornaam wordt jouw voornaam en $achternaam krijgt jouw achternaam.
Maak gebruik van string concatenation (aan elkaar plakken van strings).
De output, de tekst in je browser bestaat uit 3 regels. Gebruik de string "<br>" om een regel over slaan.
Test je code uit!
Inleveren
- screenshot waarin je laat zien dat je code werkt.
- jouw code php05b-jouw-naam.php.
Strings 3
Opdracht
Bedenk nu zelf 2 variabelen, geef deze een waarde en maak een juiste Nederlandse zin met deze twee variabelen.
Voorbeeld:
$huisdier="hond";
$kleur="zwart";
echo "Mijn ".$huisdier." is ".$kleur;
Dus bedenk een eigen voorbeeld met eigen variabelen.
Dit zijn de regels:
- Bedenk minimaal 2 eigen logische variabele namen.
- Geef deze variabele een logische waarde.
- Druk een zin af. Gebruik string concatenation (aan elkaar plakken van strings) en druk een juiste Nederlandse zin af.
Inleveren
- screenshot waarin je laat zien dat je code werkt.
- jouw code php05c-jouw-naam.php.
Getallen 1
Lees eerst de theorie .
Opdracht
Test de volgende code.
01 $a=20;
02 $b=8;
03
04 echo "$a - $b";
05 echo $a - $b;
Beschrijf wat er wordt afgedrukt op regel 4 en wat er wordt afgedrukt op regel 5.
Leg in jouw eigen woorden uit waarom er op regel 4 wat anders wordt afgedrukt als op regel 5.
Kom je er niet uit? Maak dan de volgende twee zinnen af.
Op regel 4 wordt ..... afgedrukt omdat ......
Op regel 5 wordt ..... afgedrukt omdat ......
(hint: denk aan variabele en strings)
Inleveren
Uitleg in online text
Getallen 2
Opdracht
Maak het bestand php06-jouw-naam.php.
Maak de variabele $mijnLeeftijd en geef de variabele de waarde die overeenkomt met je leeftijd.
Maak een variabele $vorigJaar en bereken met de variabele $mijnLeeftijd hoe oud je vorige jaar was.
Maak een variabele $overZesJaar en bereken met de variabele $mijnLeeftijd hoe oud je over zes jaar bent.
Druk de uitkomsten af met de volgende code
// maak hier je eigen code
//
//
echo "Ik ben $mijnLeeftijd jaar";
echo "<br>";
echo "Vorig jaar was ik $vorigJaar oud";
echo "<br>";
echo "Over 6 jaar ben ik $overZesJaar oud";
Test je code!
Inleveren (2 bestanden)
* php06-jouw-naam.php
* schermafdruk van je hele browser scherm, URL is zichtbaar, met output van je code
Conditions 1
Lees eerst de theorie.
Opdracht
Maak een nieuw bestand en noem dat php107a-jouw-naam.php
Maak de onderstaande code af op regel 4 (vervang de puntjes).
Plaats daar een vergelijking: controleer of de waarde van $variabele1 en $variabele2 gelijk zijn.
$variabele1 = 10;
$variabele2 = 10;
if(.......) {
echo "De twee waarden zijn gelijk";
}
Inleveren
-
php07a-jouw-naam.php
Bronnen
Jaap vd Veen - statements
W3 Schools - operators
W3 Schools - if else
Conditions 2
Opdracht
Maak een nieuw bestand en noem dat php107b-jouw-naam.php
Maak de onderstaande code af door de puntjes op regel 4 te vervangen door een vergelijking te maken. Controleer of de waarde van $variabele1 en $variabele2 ongelijk zijn.
$variabele1 = 10;
$variabele2 = 11;
if(.......) {
echo "De twee waarden zijn ongelijk";
}
Inleveren
-
php07b-jouw-naam.php
Bronnen
Jaap vd Veen - statements
W3 Schools - operators
W3 Schools - if else
Conditions 3
Opdracht
Maak een nieuw bestand en noem dat php107c-jouw-naam.php
Maak de onderstaande code af door de puntjes op regel 4, 6 en 8 te vervangen. Maak een if-then-else constructie en zorg ervoor dat de juiste tekst op het scherm wordt weergegegeven.
$variabele1 = 10;
$variabele2 = 10;
....
echo "De twee waarden zijn gelijk";
....
echo "De twee waarden zijn ongelijk";
....
Inleveren
- php107c-jouw-naam.php
Bronnen
Jaap vd Veen - statements
W3 Schools - operators
W3 Schools - if else
Include
Lees eerst de theorie.
Maak een eigen footer.php en zet daarin een eigen footer. Noem het bestand php108a-footer-jouw-naam.php
Maak een eenvoudige webpagina php8a-jouw-naam.php
Maak een titel <h2> Mijn Webpagina .
Zet daaronder welkom < jouw naam>
Gebruik tenminste een <body> en <html> tag
Geef de variabele $footer de naam van het bestand waarin jouw footer staat en include de footer door gebruik te maken van de variabele $footer en het php statement include.
Test of je code werkt voordat je het inlevert!
Inleveren
- php8a-jouw-naam.php
- php108a-footer-jouw-naam.php
Logische operators 1
Lees eerst de theorie.
Neem onderstaande code over:
<?php
$werkdagVanDeWeek=[ 'ma','di','wo','do','vr'];
$vrijeDag=[ 'ja', 'nee'];
echo "<table border=1>";
echo "<tr><th>dag</th><th>vrije dag</th><th>advies</th></tr>";
foreach($werkdagVanDeWeek as $dag) {
foreach($vrijeDag as $vd) {
echo "<tr>";
echo "<td>$dag</td><td>$vd</td><td>";
// je moet vroeg opstaan op vrijdagen als het geen vrije dag is
if ( $dag .. .... && $vd.. .... ) {
echo "07:00 uur op staan";
} else {
echo "uitslapen";
}
echo "</td>";
}
}
echo "</table>";
Maak de conditie in het if-statement af door op de puntjes de code aan te vullen.
Je moet alleen vroeg opstaan op vrijdagen als het geen vrije dag is.
De output van de code moet er dus als volgt uit zien:
Inleveren (2 bestanden)
* Screenshot van de output inclusief de URL
* php01-conditions01-jouw-naam.php
Logische operators 2
Neem onderstaande code over:
<?php
$dagVanDeWeek=[ 'ma','di','wo','do','vr','za','zo' ];
$vrijeDag=[ 'ja', 'nee'];
echo "<table border=1>";
echo "<tr><th>dag</th><th>vrij dag</th><th>advies</th></tr>";
foreach($dagVanDeWeek as $dag) {
foreach($vrijeDag as $vd) {
echo "<tr>";
echo "<td>$dag</td><td>$vd</td><td>";
// je moet vroeg opstaan op elke doordeweekse dag (maandag, dinsdag, woensdag, donderdag of vrijdag)
if ( .... .. .... .. .... .. .... .. .... ) {
echo "06:30 uur op staan";
} else {
echo "uitslapen";
}
echo "</td>";
}
}
echo "</table>";
Maak de conditie in het if-statement af door op de puntjes de code aan te vullen.
Je moet vroeg opstaan op elke doordeweekse dag (maandag, dinsdag, woensdag, donderdag of vrijdag).
De output van de code moet er dus als volgt uit zien:
Inleveren
- Screenshot van de output inclusief de URL.
- Je code php01-conditions02-jouw-naam.php
Logische operators 3
Neem onderstaande code over:
<?php
$dagVanDeWeek=[ 'ma','di','wo','do','vr','za','zo' ];
$vrijeDag=[ 'ja', 'nee'];
echo "<table border=1>";
echo "<tr><th>dag</th><th>vrij dag</th><th>advies</th></tr>";
foreach($dagVanDeWeek as $dag) {
foreach($vrijeDag as $vd) {
echo "<tr>";
echo "<td>$dag</td><td>$vd</td><td>";
// je werkt op maandag en dinsdag; je moet dus vroeg opstaan op maandag of dinsdag als het geen vrije dag is.
if ( ......... ) {
echo "06:30 uur op staan";
} else {
echo "uitslapen";
}
echo "</td>";
}
}
echo "</table>";
Maak de conditie in het if-statement af door op de puntjes de code aan te vullen.
Let op dit is een lastige, controleer je antwoord goed!
Kom je er niet uit? Lees dan het stuk over " Logische operatoren en korte broeken " en dan vooral het stukje " haakjes in condities ".
Je moet alleen vroeg opstaan op maandagen als het geen vrije dag is.
De output van de code moet er dus als volgt uit zien:
Alleen op de maandag en dinsdag die geen vrije dagen zijn, moet je vroeg op staan.
Inleveren
- Screenshot van de output inclusief de URL.
- Je code php01-conditions03-jouw-naam.php
Eindopdracht coderen - deel 1
Wat ga je leren?
Met alles wat we hebben geleerd gaan we een PHP programma maken. Let's go!
Korting
Een webshop geeft zomerse korting op alle artikelen als dit weekend bepaalde zomerse temperaturen worden bereikt.
De korting bepaal je in de code aan de hand van de temperatuur.
10%: boven de 21 graden, maar niet boven de 25 graden 15%: boven de 25 graden, maar niet boven de 30 graden 20%: boven de 30 graden |
Bezorgkosten
De bezorgkosten zijn standaard 4 euro per bestelling, maar als de prijs van de bestelling (na zomerse korting) meer dan 40 euro is dan zijn de bezorgkosten 0.
Code
<?php
// Dit zijn de temperatuur en prijs van de bestelling.
$temperatuur= 20;
$prijsBestelling= 40;
// bepaal de $korting aan de hand van de temperatuur
$korting = 0;
if ( ... ) {
$korting = 10;
}
if ( ... ) {
$korting = 15;
}
if ( ... ) {
$korting = 20;
}
$prijsBestelling = $prijsBestelling - ($prijsBestelling*$korting/100)
// bepaal de $bezorgkosten aan de hand van de $prijsBestelling
if ( ...
) { ...
} else { ...
} // druk resultaat af echo "Bedrag bestelling: $prijsBestelling"; echo "<br>"; echo "Temperatuur dit weekend: $temperatuur"; echo "<br>"; echo "Korting: $korting"; echo "<br>"; echo "Bezorgkosten: $bezorgkosten"; echo "<br>"; echo "<br>"; echo "Eindbedrag: ".$prijsBestelling-$korting+$bezorgkosten;
Maak de code af en zorgen ervoor dat het eindbedrag juist wordt berekend .
Bepaal eerst de $bezorgkosten op regel 8, dan de korting op regel 12.
Het eindbedrag moet uitkomen op 44 euro (geen korting en wel bezorgkosten).
Inleveren
- code php10-jouw-naam.php
Eindopdracht testen - deel 2
Inleiding
Deze opdracht is wat groter. Lees het goed door.
Testen van code is belangrijk en is onderdeel van het Examen Software development.
In deze opdracht gaan we software testen aan de hand van een testplan. Dit testplan moet jij (af)maken en uitvoeren.
Testen
In de code die je in deel één hebt gemaakt kun je met verschillende waarden testen. Laten we bijvoorbeeld testen wat er uit komt als de temperatuur 20 is, en de prijs van de bestelling 40.
Vul testwaarden in op regel 4 en 5 en test de code. Wat komt er uit jouw code en klopt dat?
Testsplan
Maak een testplan . Dit is een kort documentje waarin beschrijft wat je gaat testen. Dit ga je dan uitvoeren en je noteert de uitkomsten.
In het test documentje staat bijvoorbeeld het volgende:
temperatuur | prijsBestelling | Eindbedrag | Correct (ja/nee) |
20 | 40 | 44 | ja/nee |
20 | 42 | 42 | ja/nee |
22 | 42 | 41,8 | ja/nee |
30 | 10 | 12,5 | ja/nee |
50 | 5 | 8 | ja/nee |
Uitleg
De getallen zijn niet willekeurig, maar zijn uitgerekend, bijvoorbeeld op 4 staat:
temperatuur is 30 en de prijs van de bestelling is 10 .
Bij een temperatuur van 30 is de korting 20% , dus de prijs van de bestelling wordt 8 euro (10 - 20%).
Daar komen 4 euro bezorgkosten bij, dus wordt de prijs 12 euro en dat staat in de laatste kolom.
Nu ga je testen of je code deze berekening ook goed maakt. Je verandert de waarden van temperatuur en de prijs van de bestelling in de code en kijkt wat er dan uitkomt. Is dat 12? Top dan is de test geslaagd! Vul dan "ja" in bij de laatste kolom.
Komt er geen 12 uit jouw code dan is de code niet goed of je berekening is onjuist. Je zult dan de berekening of de code moeten aanpassen.
In de laatste kolom moet je ja of nee invullen afhankelijk van het resultaat. Bepaal minimaal 10 test scenario's. Je hebt er al 5 (hierboven), dus je moet er zelf nog minimaal 5 bij bedenken en uitrekenen.
Je moet dus 10 combinaties maken, uitrekenen wat er uit moet komen, opschrijven en dan testen of dat er ook uit komt.
Kortingen
10%: boven de 21 graden, maar niet boven de 25 graden 15%: boven de 25 graden, maar niet boven de 30 graden 20%: boven de 30 graden |
Bezorgkosten
Bezorgkosten zijn 4 euro voor bedragen tot en met 40 euro. Daarboven zijn de bezorgkosten 0.
Inleveren
- testlog test10-jouw-naam.pdf (gebruik "save as" in MS Word en kies PDF als bestandstype)
PHP Eindtest
PHP Eindtest. Je krijgt 5 willekeurige vragen. Je krijgt 6 minuten de tijd om de quiz te maken.
Je mag deze test maximaal 6x doen.
KennisCheck
Als je alles hebt gelezen en hebt uitgevoerd dan gaan jullie klassikaal een Kennischeck uitvoeren.
- Voer de juiste naam en klas in bij de kennis-check
- Zorg ervoor dat je 80% of hoger scoort.
Inleveren
- Screenshot van je resultaat.
PHP2
python reformatterCanvas.py 18661 52532 https://www.roc.ovh/books/2024/page/php2
Inleiding Arrays
Wat ga je leren?
In deze les leer je wat een array is en hoe je een array kan gebruiken. Je leert dat een array bestaat uit elementen. Je leert dat alle elementen van een array een nummer hebben en dat de computer begint te tellen bij 0. Het eerste element van een array heeft hierdoor de key 0. |
In bijna alle talen heb je een speciaal soort variabele; het array. Een array is een verzameling van variabelen. Een soort lijst waarin allemaal variabelen zitten.
In Python heb je ook arrays en daar wordt het list genoemd. In PHP noemen we het een array.
In het Engels betekent een array, "een groep mensen of dingen die op een bepaalde manier zijn geordend".
Als je een variabele als een bladzijde van een boek ziet waar je een nummer op kan zetten of een string. Dan is een array een boek. Een boek heeft dan bladzijden en op elke bladzijde staan dan een variabele.
In een array begin je altijd op bladzijde 0. Op pagina 0 van het boek staat dus de eerste variabele.
Hoe ziet dat er uit in code?
$mijnArray=['maandag','dinsdag','woensdag','donderdag','vrijdag','zaterdag','zondag'];
Je hebt hier dus een array, op bladzijde 0 staat de string 'maandag', op bladzijde 1 staat de string 'dinsdag', enzovoorts.
$mijnArray=['maandag','dinsdag','woensdag','donderdag','vrijdag','zaterdag','zondag'];
echo $mijnArray[0];
echo "<br>";
echo $mijnArray[1];
Een "bladzijde" van een array heet een element. Op regel 2 van de code wordt dus het eerste element van het array $mijnArray afgedrukt., op regel 4 wordt het tweede element van $mijnArray afgedrukt.
Bekijk nu het filmpje tot aan 4:49 (foreach loop dus niet).
Als je het filmpje hebt bekeken dan weet je wat de key van een array is en hoe je een array waarde kan wijzigen.
Snap je alles, ga dan de opgave maken.
Opgave
Een array heeft een naam, een key en een value (waarde).
Stel de naam='mijnArray', de key=3 en de waarde=0.
Hoe zet je dit om in PHP code?
Inleveren
De PHP code (zie opgave).
Print 2de array element
Gebruik array $myArray=[15,25,35,45,55,65]
en druk het tweede element af (dit is dus 25).
Lever de code in en gebruik de naam php201a-jouw-naam.php
Find the right element
Vervang in de onderstaande code de xxx. Maak gebruik van het array $seizoenen en druk het juiste seizoen af.
$seizoenen=['lente', 'zomer', 'herfst', 'winter' ];
echo "Het koudste seizoen is de ".xxx;
echo "Het warmste seizoen is de ".xxx;
Lever de code in en gebruik de naam php201c-jouw-naam.php
Changing array value
Gebruik array
$myArray=[10,20,30,40,50,60];
Stap 1
Verander de eerste drie elementen één-voor-één in 3,2 en 1. Gebruik hiervoor code.
Dus niet de getallen 10, 20 en 30 vervangen in de regel $myArray=[10,20,30,40,50,60])
, maar een index (key) gebruiken en in drie afzonderlijke stappen de eerste drie waardes veranderen.
Stap 2
Druk alleen het 2de en 3de element af.
De output ziet er dan als volgt uit:
2
1
Vergeet de <br> niet!
Inleveren
- Lever de php code in.
Inleiding foreach
Wat ga je leren?
In deze les gaan we leren wat een foreach loop is en hoe je daarmee makkelijk dingen met een array kan doen. |
In de vorige les hebben we kennis gemaakt met arays. Als je iets met een array wilt doen dan kun je natuurlijk element voor element benaderen en (bijvoorbeeld) afdrukken:
echo myArray[0];
echo myArray[1];
echo myArray[2];
echo myArray[3];
echo myArray[4];
.....
Maar er zijn handigere methoden om iets met een array te doen. Daarvoor hebben we een loop.
Met een foreach loop kun je door een array heen lopen. Je kunt element voor element doorlopen.
Kijk naar het tweede gedeelte van de film (vanaf 4:49, het eerste gedeelte heb je in de vorige les al bekeken).
Er zijn meerdere soorten loops en daar gaan we nog een keer uitgebreid naar kijken. Voor nu kijken we eerst even naarde foreach loop. Deze is belangrijk om dat je die kunt gebruiken om door een array heen te lopen. Stel je wilt alle elementen van een array afdrukken.
Dat kan op deze manier:
$mijnArray=['maandag','dinsdag','woensdag','donderdag','vrijdag'];
echo $myArray[0];
echo "<br>";
echo $myArray[1];
echo "<br>";
echo $myArray[2];
echo "<br>";
echo $myArray[3];
echo "<br>";
echo $myArray[4];
echo "<br>";
Dit is alleen onhandig want stel dat we zaterdag en zondag toevoegen aan het array dan moeten we regels toevoegen om deze elementen af te drukken.
Dat kan dus handiger, kijk maar de volgende code.
$mijnArray=['maandag','dinsdag','woensdag','donderdag','vrijdag'];
foreach($mijnArray as $dag)
{
echo $dag;
echo "<br>";
}
Wow dat is korter, toch?
Hoe werkt dit?
- Op regel 3 staat: zet één-voor-één elk element uit het array $mijnArray in de variabele $day en voer de code uit die tussen de { en } staat.
- Op regel 4 begint het codeblok, dit is het begin van de code die voor elk element wordt uitgevoerd.
- Op regel 5 wordt de $dag afgedrukt. Dat wordt dus voor elk element van $mijnArray gedaan.
- Op regel 6 wordt er een nieuwe regel afgedrukt en ook dit wordt voor elk element van het array uitgevoerd.
- Op regel 7 wordt het codeblok afgesloten, dit is het einde van de loop.
Opdracht
In het programmaatje dat hierboven staat worden alle werkdagen van de week afgedrukt. Bereid dit uit zodat alle dagen van de week op de jusite volgorde wordne afgedrukt.
Inleveren
Aangepast programma met foreach loop.
Klasgenoten
Maak een array met namen van klasgenoten. Zet in ieder geval 10 namen in het array. De namen zijn strings dus denk erom dat de namen tussen " moeten staan.
Druk de inhoud van het array af en zet op elke regel een naam. Gebruik dus een <br> na elke naam. Gebruik een loop om de namen af te drukken (uitleg op vorige pagina) .
Inleveren
Lever de code in en gebruik de naam php202b-jouw-naam.php
Jouw naam in lijst, vet!
Maak de vorige opdracht en zorg ervoor dat jouw eigen naam ook ergens in het array staat. We hebben dus nog steeds een array met minstens tien namen.
Zet in de foreach loop een if statement. Als de loop bij jouw naam is dan dan druk je een !-teken af achter de naam.
Stel jij heet Omar, dan zou de if er zo uit zien:
if ($naam == "Omar") {
echo "!";
}
Zet dit in de loop en controleer of er alleen achter jouw eigen naam een ! wordt afgedrukt.
Let er dus op dat de complete if in het code blok van de loop komt te staan. Let er ook op dat in het voorbeeld $naam wordt gebruikt, het kan zijn dat jij in jouw loop voor een andere variabele naam hebt gekozen.
Uitdaging (optioneel voor 2 bonuspunten): kun je je naam met uitroepteken ook vetgedrukt of misschien zelf rood-vergedruk afdrukken?
Inleveren
Lever de code in en gebruik de naam php202c-jouw-naam.php
Functions
Wat ga je leren?
In alle programmeertalen heb je functies. Met functies kun je code opdelen in logsiche blokken en kan je veel voorkomende stukjes code hergebruiken. In deze les leer je wat een functie is en hoe je die in PHP kan gebruiken. |
Stel je hebt een stukje code waarin je een lastige berekening maakt en deze berekening wil je op verschillende plaatsen in jouw code uitvoeren dan zou het handig zijn dat je niet telkens opnieuw die (lastige) berekening moet maken. Dat hoeft ook niet als je functies gebruikt, Een functie is een stukje code dat je op elke moment kan uitvoeren.
PHP heeft zelf ook veel ingebouwde functies die jij kunt gebruiken, maar daarover in een andere les over functies meer.
Een functie is een stukje code. De code ontvangt input doet er wat mee en de function maakt dan output.
Geldautomaat
In het dagelijks leven zijn er nog veel meer dingen die je met een function kan vergelijken. Neem bijvoorbeeld een geldautomaat.

Je stopt er wat in (pasje, pincode) en de function gaat van alles doen zoals je saldo en pincode controleren. Als alle controles goed gaan krijg je als output geld.
Wiskunde
In de wiskunde heb je ook functies en doen hetzelfde:
f(x) = x * x + 3
Deze functie krijgt als input een waarde x en zet deze om in output. Als je in deze functie 2 stopt dan krijg je er 7 uit (2 * 2 + 3).
Voorbeeld
Stel we willen deze laatste wiskunde functie in PHP-code omzetten, dan ziet dat er zo uit.
function myFunction($x) {
$output = $x * $x + 3;
return($output);
}
Regel 1, begin je de functie. Dat doe je altijd met het woord function, gevolgd door de functienaam die je zelf mag verzinnen. Dan volgt een { om aan te geven dat alle code tussen { en } bij de function hoort. De function loopt dus door tot en met regel 4.
De function krijgt de waarde $x als input. In het volgende voorbeeld laat ik zien hoe je deze waarde aan de functie meegeeft.
Regel 2, we zetten het resultaat van de berekening in de variabele $output.
Regel 3, hier maken we de output. In het volgende voorbeeld laat ik zien hoe je die output kunt krijgen.
Regel 4, Dit is het einde van de function.
Hoe roepen we deze function aan en hoe ontvangen we de output?
$in=4;
$uit=myFunction($in);
echo $uit;
$uit=myFunction(6);
echo $uit;
echo myFunction(9);
Je ziet hier drie voorbeelden van hoe je de function kan aanroepen. In het eerste voorbeeld geven we de variabele $in de waarde 4, en we geven deze waarde mee als input van de function. Het resultaat komt in $uit. En op regel 3 drukken we de waarde van $uit dan af.
Op regel 5 geven we gelijk de waarde 6 als input mee.
Op regel 7 geven we gelijk de waarde 9 mee en drukken de output gelijk af zonder deze eerst op te slaan in een variabele.
In het volgende filmpje laat een dialectische bekende programmeur zien hoe je een functie kan maken voor het omrekenen van liters naar gallons. Gallons is in Amerika de maat voor volume. Je koop daar dus bijvoorbeeld geen liter Cola maar een halve gallon.
PHP-functions
PHP heeft zelf een groot aantal ingebouwde functions. Hieronder een paar voorbeelden:
PHP Function | input | Output | Voorbeeld |
strlen() | string | lengte van de string | echo strlen("Hello"); |
str_word_count() | string | aantal woorden van de string | echo str_word_count("Hello there!"); |
voorbeeld
$str="The quick brown fox jumps over the lazy dog";
$res1=strlen($str);
$res2=str_word_count($str);
echo "De string is %res1 letters en bestaat uit $res2 woorden.";
Op regel 3 en 4 worden twee ingebouwde PHP functions gebruikt.
Weet je overigens waar de zin ("The quick brown fox.....") op slaat?
Deze zin wordt soms gebruikt voor testen omdat elke letter van het alfabet er precies in keer in voorkomt.
Opdracht
Je hebt u een paar opdrachten van functies waarbij input wordt omgezet in output:
- pasje + pincode -> geld-automaat -> cash
- geld (+keuze) -> snoep automaat -> snoep
- koe -> slachthuis -> vlees
input |
functie |
output |
pasje + pincode |
geldautomaat |
cash |
geld (+keuze) | snoepautomaat |
snoep |
koe |
slachthuis |
vlees |
Inleveren
Bedenk zelf een extra regel in de tabel hierboven.
Bedenk zelf een functie waarbij input wordt omgezet in output. Omschrijf de input, functie en output.
Bereken functie
Berekenen met een function()
Zorg dat je de theorie hebt doorgelezen.
Bekijk het voorbeeld en maak een eigen functie. De berekening die de function moet maken is:
$output = $x * 2;
De output van de functie is alleen het resultaat (één getal dus). De output wordt met een return teruggeven.
Noem de function myVoornaam (vervang voornaam door jouw eigen voornaam) en test of je code werkt.
Test minimaal twee gevallen en laat de code die je hebt gebruikt om te testen in je code staan.
Inleveren
php203a-jouw-naam.php met daarin de function en de testcode.
Temperatuur
Temperatuur
Maak een function waarmee je de temperatuur van graden in Fahrenheit kan omrekenen.
Het omrekenen doe je als volgt:
$farenheit = ($celcius * 9/5) + 32;
Maak een function die aan de volgende voorwaarden voldoet:
function naam | bedenk een logische naam |
function input | een getal, de temperatuur in graden celcius |
function output | een getal, de temperatuur omgerekend in graden fahrenheit |
Test jouw functie . Roep de function op met tenminste 3 verschillende input waarden en druk de resultaten af. Laat deze testen in je code staan.
Op deze pagina kun je celcius in fahrenheit om laten rekenen. Gebruik deze site om te testen.
Inleveren
php203b-jouw-naam.php met daarin de function en tenminste drie testen waarin je laat zien dat de juisten waarden door de function laat berekenen.
De twee hoogste (bonus)
Deze opdracht is optioneel en verplicht voor eventuele "studieversnellers"
Maak een functie die één array als input krijgt en die de twee hoogste waarden van het array bij elkaar optelt.
Input | Output |
[12,3,21,5,3,20] | 41 |
[12,3,21,5,3,20,21,3,2,1,-4,0] | 42 |
[2,1] | 3 |
[0,0] | 0 |
[2] | foutmelding: "array has only one value" |
Laat in je code zien dat je al deze input scenario's test.
Inleveren
De code in met de naam php203c-optioneel-jouw-naam.php
Complexe Arrays
We hebben al naar arrays gekeken. In de terugblik hieronder kijken we nog een keer naar deze 'eenvoudige' arrays. Deze arrays zijn 'eenvoudig' omdat ze uit één array bestaan. Je hebt ook arrays die bestaan uit arrays. Een array van arrays dus. Dit zijn multidimensionale arrays of complexe arrays. We praten vanaf nu over complexe arrays maar:
complex array = multidimensionale array
Een complex array is dus een array van een array. Je hebt zelfs arrays van arrays van arrays van arrays,.... maar voor nu houden we het bij arrays van arrays.
In deze les leren hoe een array van een array er uit ziet en hoe je er met en zonder gebruikt te maken van een loop gegevens uit kan lezen. |
Terugblik
Zoals uitgelegd in voorgaande lessen kan een array meerdere waarden bevatten. Iedere waarde is gekoppeld aan een voor de array unieke sleutel. Deze sleutels worden gebruikt om een specifieke waarde uit de array af te kunnen lezen of te kunnen bewerken.
Bijvoorbeeld
$fruit = ['appel', 'banaan', 'citroen'];
$fruit = array('appel', 'banaan', 'citroen');
Beide regels zijn hetzelfde en eigenlijk gebruiken we altijd de eerste variant. De tweede staat erbij omdat je dit soms kan tegenkomen in code.
Stel je wilt het eerste element uit het $fruit array afdrukken, dat kan met:
echo $fruit[0];
Het eerste element heeft dus key 0, het tweede key 1, het derde key 2, enzovoorts.
Het array $fruit is een 'eenvoudig' array. Er bestaan ook complexe arrays. Dit zijn arrays in arrays. Als je later leert om gegevens uit een database te halen dan krijg je te maken met complexe arrays.
Complex array - metingen
Laten we een complex array bouwen.
Stel je wilt elke dat de temperatuur drie maal opmeten. Een keer 's morgens, één keer 's middags en één keer 's avonds.
Je kunt dit dan opslaan in een array met drie elementen.
$metingen = [ 7, 12, 11 ];
Stel dat je van meerdere dagen de metingen wilt opslaan. Dan kun je een array van een array maken. Je maakt dan een array waarin arrays zitten die dan elk drie elementen hebben, bijvoorbeeld:
$metingenWeek=[ [14,11,12], [ 6,11,11], [7,12,14], [9,14,13], [10,15,13] , [11,15,14 ], [13,16,14] ];
Je hebt nu array met metingen van 7 dagen en elke dag heb je een array met drie metingen. Zo kun je zien dat de eerste dag de warmste ochtend had en dat de laatste dag de warmste middag had.
print_r()
Met de PHP function print_r() kan je een array afdrukken.
Stel voor dat je de temperatuur van de eerste dag (element 0!) van de ochtend wil afdrukken, hoe doe je dat dan?
echo $metingenWeek[0][0];
Stel wel willen het volgende afdrukken:
Dag 1:
dagdeel 14
dagdeel 11
dagdeel 12
Dag 2:
dagdeel 6
dagdeel 11
dagdeel 11
etc., etc.
We maken een loop en hebben het volgende programmaatje gemaakt.
$metingenWeek=[ [14,11,12], [ 6,11,11], [7,12,14], [9,14,13], [10,15,13] , [11,15,14 ], [13,16,14] ];
$dagNummer=0;
foreach($metingenWeek as $dag) {
echo "Dag ".$dagNummer."<br>";
echo "'s ochtends: ".$metingenWeek[0][0]."<br>";
echo "'s middags : ".$metingenWeek[0][1]."<br>";
echo "'s avonds : ".$metingenWeek[0][2]."<br>";
}
Helaas er zitten twee fouten in het programmaatje.
De code heeft een complex array met metingen van de temperatuur. Elke dag heeft drie meetwaarden; 's morgens, 's middags en 's avonds.
Zo is de meetwaarde van de ochtend van de 2de dag 6 graden.
Check of je dit terug kan vinden in het array $metingenWeek in de code.
Test de code uit.
Probleem 1
Het dagnummer blijft op 0 staan. Los dit op en zorg ervoor dat de 7 dagen allemaal worden afgedrukt en dat het juiste dagnummer wordt afgedrukt. De dagnummers beginnen te tellen bij 1.
Pas de code aan zodat de dagnummers correct worden afgedrukt.
Probleem 2
Voor 's morgens, 's middags en 's avonds worden telkens dezelfde getallen afgedrukt. Dat klopt niet. In het voorbeeld staan voor dag 1 en dag 2 de juiste waarden afgedrukt. De programmeur heeft een foutje (of eigenlijk twee) gemaakt. Spoor de fout op en zorg ervoor dat de output klopt en dat de juisten getallen (temperaturen) worden afgedrukt.
Vergeet je code niet te testen!
Inleveren
De aangepaste en geteste code in php02-04a-jouw-naam.php
De hoogste meetwaarde
Je kunt deze opdracht alleen maken als je de vorige opdracht (goed) hebt gemaakt.
Je gaat het programmaatje dat je hebt gemaakt uitbreiden.
Je gaat je vorige programma aanpassen zodat de output er als volgt, komt uit te zien:
Dag 1:
dagdeel 14
dagdeel 11
dagdeel 12
hoogste waarde is 14
Dag 2:
dagdeel 6
dagdeel 11
dagdeel 11
hoogste waarde is 11
etc., etc.
Je drukt dus telkens per dag de hoogste temperatuur af. Dat doe je voor alle dagen.
Tip: kijk naar de PHP functie max() op https://www.w3schools.com/php/func_math_max.asp
Deze functie kan handig van pas komen. Je kan en mag de opdracht ook op een andere manier oplossen.
Gaat het jouw lukken? Succes!
Inleveren
De aangepaste en geteste code in php02-04b-jouw-naam.php
Nog meer loops
We hebben eerder gezien hoe we met een foreach loop door een array kunnen heen lopen.
We hebben ook loops die we kunnen gebruiken zonder dat we een array hebben.
Stel we willen de getallen 1,2,3,4,5,6,7,8,9,10 op het scherm zetten, dan kan dat ook met een loop.
for($i=1; $i<=10, $i=$i+1) {
echo $i.", ";
}
Wat gebeurt hier?
Op regel 1 worden loop gemaakt. We gebruiken de variabele $i en zetten die op 1 ($i=1), dan zeggen we doe de loop zolang $i kleiner of gelijk is aan 10 en elke keer dat de volgende keer in de loop komen dan doen we $i = $i + 1 en we verhogen $i dus met 1.
Op regel 2 drukken we het resultaat af en op regel 4 sluiten we het codeblok dat deel van de loop uitmaakt.
Het is gebruikelijk om voor een for-loop de variabele $i te gebruiken.
Opdracht
Verander de code zodat je alle getallen van 2 tot en met 9 afdrukt.
Inleveren
De aangepaste code
Loops voorspellen
Je hebt 5 loops (a t/m e). Bedenk vooraf van elke loop wat jij denkt dat die doet. Schrijf dat in eigen woorden op. Test daarna of je antwoorden kloppen en geef bij elke loop weer of je antwoord klopt. Als je antwoord niet klopt dan verbeter je je antwoord.
//loop A
for($i=1; $i<=20; $i=$i+1) {
echo $i.", ";
}
//loop b
for($i=20; $i<30; $i=$i+1) {
echo $i.", ";
}
//loop c
for($i=2; $i<100; $i=$i+2) {
echo $i.", ";
}
//loop d
for($i=10; $i>0; $i=$i-1) {
echo $i.", ";
}
//loop e
for($i=100; $i>0; $i=$i-2) {
echo $i.", ";
}
Inleveren: een pdf bestand waarin je de stappen die hierboven staan beschreven bent doorgelopen. Het voorbeeld hieronder laat zien wat we als uitwerking ongeveer van je verwachten:
Voorbeeld:
//loop a
Deze loop begint bij 3 en wordt telkens 1 opgehoogd, de loop stop bij 10. Dus de output is 3,4,5,6,7,8,9,10
Nadat ik heb getest blijkt dat de 10 niet wordt afgedrukt dat komt omdat er <10 staat en niet <=10
//loop b
Deze loop .......
Ik heb getest en het antwoord klopt.
// loop c
Deze loop.....
Ik heb getest en ....
// loop d
Deze loop.....
Ik heb getest en ....
// loop e
Deze loop .....
Ik heb getest en ....
Inleveren
PDF, php205a-jouw-naam.pdf met de uitgewerkte opgaven.
foreach versus for
Je kunt een array ook met een for-loop doorlopen. Bestudeer de volgende code.
$myArray=[1,3,2];
foreach($myArray as $item) {
echo $item;
echo "<br>";
}
for($i=0; $i<3; $i++) {
echo $myArray[$i];
echo "<br>";
}
Test je code! Probeer de code uit en probeer te verklaren wat je ziet.
Maak code die het volgende array afdrukt één keer met een foreach-loop en daarna met een for-loop.
$myColors['rood','paars','oranje','blauw','wit'];
Inleveren
php205b-jouw-naam.php met de uitgewerkte code met de twee soorten loops.
Oneindig optellen
Opdracht
Maak een for-loop waarin alle getallen van 1 tot en met 100 worden opgeteld.
Jouw code laat de optelsom zien van 1+2+3+4+5+6+7+.....99+100.
Uitleg
Je kunt natuurlijk de volgende code inleveren:
echo 1+2+3+4+5+6+7+8+9+10+11+12;
En dan tot 100. Dat kan, maar stel dat ik nu vraag om alle getallen van 1 tot en met 10 000 op te tellen? Dan is dat bijna niet meer te doen. Je moet voor deze opdracht dan ook een loop gebruiken.
Als je niet weet hoe je dat aanpakt dan maak je dit probleem eerst eenvoudiger; je drukt eerst alle getallen 1 tot en met 100 af. Als dat gelukt is dan ga je al deze getallen bij elkaar op tellen.
Dus stel dat je dit doet voor de getallen 1 t/m 5 dan zou er 15 uitkomen (1+2+3+4+5=15).
Dus voor de duidelijkheid de code laat één getal zien en dat getal is dus de som van alle cijfers 1 t/m 100 .
Inleveren
php205c-jouw-naam.php met de uitgewerkte opgaven.
Nog meer functies
Nog een voorbeeld van een function
In deze les wordt een iets complexere functie gemaakt. In deze functie worden de even getallen uit een array gefilterd.
Parameters
Dat wat je meegeeft aan een function heten parameters. In de vorige voorbeelden (filmpjes) zagen we dat we telkens precies één parameter meegaven. In het eerste voorbeeld was dat een getal en in het tweede voorbeeld was dat een array.
Je kunt ook minder of meer parameter meegeven, bijvoorbeeld nul:
function welkom() {
$tekst = 'Welkom op mijn website';
return $tekst;
}
En je kunt ook meer parameters meegeven, bijvoorbeeld drie:
function welkom2($tekst, $naam, $hoofdletters = FALSE ) {
//bepaal tekst
if ($tekst == 1) {
$uitvoer = 'Welkom '. $naam;
}
elseif ($tekst == 2) {
$uitvoer = 'Tot ziens, '.$naam;
}
//bepaal hoofdletters
if ($hoofdletters == TRUE) {
$uitvoer = strtoupper($uitvoer);
}
//geef resultaat
return $uitvoer;
}
De derde parameter is wat vreemd want de waarde wordt al bepaald in de functie, althans zo lijkt het. Dit is een zogenaamde optionele parameter. Je hoeft hem niet mee te geven en als je hem niet meegeeft dan is die 'by default' false.
Dus
welkom2(2, 'Mark', False )
is hetzelfde als
welkom2(2, 'Mark')
Apart bestand
Als je veel functies hebt dan kun je die in een apart bestand zetten dat houd de boel overzichtelijk en maakt samenwerking ook makkelijker, omdat iedereen aan zijn eigen set functions kan werken.
Stel je zet de functie uit het laatste voorbeeld in een apart bestand met de naam mijnFuncties.php, dan zou de volgende code gewoon werken.
<?php
include_once('mijnFuncties.php');
echo welkom2(1,'Ayoub',true);
?>
Opdracht
Maak een php file, mijnFuncties.php met de functie welkom2() uit één van de voorbeelden van hierboven.
Maak een file php16a-jouw-naam.php en include het bestand mijnFuncties.php file.
Voeg de volgende regel toe aan php16a-jouw-naam.php
$mijnArray=['Nouaman','Aart','Samil','Raine','Diego','Olmer','Wessel','Jari','Maxey','Brian','Kikiya'];
Gebruik het bovenstaande array en roep voor elk van de namen de welkom2() functie twee maal aan, één keer om de welkom-boodschap af te drukken en één keer om de Tot-ziens-boodschap af te drukken.
Gebruik een loop en roep vanuit de loop de functie op de juiste manier aan.
foreach($mijnArray as $name) {
// roep functie aan met welkom-bookdschap
// roep functie aan met Tot-ziens-boodschap
}
Dus de output ziet er zo uit:
Welkom Nouaman
Tot ziens Nouaman
Welkom Aart
Tot ziens Aart
Welkom Samil
Tot ziens Samil
....
Welkom Kikiya
Tot ziens Kikiya
Inleveren
Drie bestanden:
- php16a-jouw-naam.php
(vanuit dit bestand wordt de functie gebruikt die in mijnFuncties.php is gedefinieerd) - mijnFuncties.php
- een screenshot van je browser inclusief URL waarin je het resultaat laat zien.
...
!Copy 6
In deze les gaan we stof herhalen. We gaan met functies werken en je leert onderdelen die je later later nodig hebt voor de challenge.
Opgave 1
We hebben een functie die het volgende doet. De functie krijgt drie waarden en returned de som van de twee getallen (dus de twee input variabelen opgeteld).
Input | Output |
mijnFunctie(3,2,1) | 6 |
mijnFunctie(1,12,3) | 16 |
mijnFunctie(0,4,0) | 4 |
mijnFunctie(7,0,3) | 10 |
mijnFunctie(0,0,0) | 0 |
Maak een functie die dit doet.
En test met alle input waarden zoals hierboven aangegeven. Je kunt de volgende template gebruiken.
function mijnFunctie($a, $b, $c) {
// maak hier de code voor jouw functie
}
echo mijnFunctie(3,2,1);
echo "<br>";
echo mijnFunctie(1,12,3);
echo "<br>";
echo mijnFunctie(0,4,0);
echo "<br>";
echo mijnFunctie(7,0,3);
echo "<br>";
echo mijnFunctie(0,0,0);
Inleveren
Lever de code in en gebruik de naam php71-jouw-naam.php
Opgave 2
We hebben een functie die het volgende doet. De functie krijgt drie waarden en returned de som van de twee getallen (dus de twee input variabelen opgeteld). Er is nu een uitzondering. Zodra er een 0 in één van de input variabelen voorkomt dan wordt de return waarde 0.
Input | Output |
mijnFunctie(3,2,1) | 6 |
mijnFunctie(1,12,3) | 16 |
mijnFunctie(0,4,0) | 0 |
mijnFunctie(7,0,3) | 0 |
mijnFunctie(0,0,0) | 0 |
Maak een functie die dit doet.
Gebruik de template van opgave 1.
Inleveren
Lever de code in en gebruik de naam php72-jouw-naam.php
Opgave 3
We hebben een functie die het volgende doet. De functie krijgt drie waarden en returned de som van de twee getallen (dus de twee input variabelen opgeteld). Er is nu een uitzondering. Zodra alle input variabelen 0 zijn wordt de return waarde 0.
Input | Output |
mijnFunctie(3,2,1) | 6 |
mijnFunctie(1,12,3) | 16 |
mijnFunctie(0,4,0) | 4 |
mijnFunctie(7,0,3) | 10 |
mijnFunctie(0,0,0) | 0 |
Maak een functie die dit doet.
Gebruik de template van opgave 1.
Inleveren
Lever de code in en gebruik de naam php73-jouw-naam.php
Opgave 4
We hebben een functie die het volgende doet.
De functie telt de drie input waarden bij elkaar op.
Is de som groter of gelijk aan 10 dan wordt de return waarde 1.
Is de som kleiner dan 10 en groter dan 0 dan wordt de return waarde 0.
Is de som 0 dan wordt de return waarde -1.
Input | Output |
mijnFunctie(3,2,1) | 0 |
mijnFunctie(1,12,3) | 1 |
mijnFunctie(0,4,0) | 0 |
mijnFunctie(7,0,3) | 1 |
mijnFunctie(0,0,0) | -1 |
Maak een functie die dit doet.
Gebruik de template van opgave 1.
Inleveren
Lever de code in en gebruik de naam php74-jouw-naam.php
Opgave 5 - array optellen
We hebben een functie die het volgende doet.
De functie telt alle waarden van een array bij elkaar op. De som alle getallen van het array wordt door de functie gereturned.
Let op het input array kan verschillende lengtes hebben.
Input | Output |
mijnFunctie( [3,2,1] ) | 6 |
mijnFunctie( [1,12,3,1,2] ) | 19 |
mijnFunctie( [1,12,3,1,2,1] ) | 20 |
mijnFunctie( [2,4] ) | 6 |
mijnFunctie( [4] ) | 4 |
Maak een functie die dit doet.
Je kunt een array doorlopen met een foreach-loop zoals we in les 2 hebben gehad.
Je kunt de template van opgave 1 gebruiken, maar je moet deze wel aanpassen.
Inleveren
Lever de code in en gebruik de naam php74-jouw-naam.php
Opgave 7 - voetbal
De voetbaluitslagen staan in een array.
$uitslagen = [ [1,3], [4,0], [0,0] ,[1,1],[0,2] ];
In dit lijstje heeft de club FCR (Footbal Club Royal), vijf wedstrijden gespeeld. De uitslagen waren 1-3, 4-0, 0-0, 1-1 en 0-2.
Maak een functie die met deze uitslagen het aantal punten voor FCR uitrekent.
Voor een gewonnen wedstrijd krijgt FCR 3 punten, voor gelijkspel 1 punt en voor een verloren spel 0 punten.
Uitslag | Punten |
1-3 | 0 |
4-0 | 3 |
0-0 | 1 |
1-1 | 1 |
0-2 | 0 |
FCR heeft dus in dit voorbeeld 5 punten.
Maak een functie die de punten aan de hand van de uitslagen berekend.
Input | Punten |
[ [1,3], [4,0], [0,0] ,[1,1],[0,2] ] | 5 |
[ [1,1], [0,0], [0,2] ,[1,1],[0,2] ] | 3 |
[ [1,1], [0,0], [0,0] ,[1,1],[2,2] ] | 5 |
[ [1,0], [1,0], [2,0] ,[1,1],[0,2] ] | 10 |
Template
function berekenScore($uitslagen) {
// bereken score
return($score);
}
echo berekenScore([ [1,3], [4,0], [0,0] ,[1,1],[0,2] ]);
echo "<br>";
echo berekenScore([ [1,1], [0,0], [0,2] ,[1,1],[0,2] ]);
echo "<br>";
echo berekenScore([ [1,1], [0,0], [0,0] ,[1,1],[2,2] ]);
echo "<br>";
echo berekenScore([ [1,0], [1,0], [2,0] ,[1,1],[0,2] ]);
Inleveren
Lever de code in en gebruik de naam php77-jouw-naam.php
Opgave 8 - swap
In de vorige opgave hadden we het over de uitslag van een voetbalwedstrijd. Een uitslag 1,0 betekende dat de thuisploeg (FCR) 1 doelpunt heeft gemaakt en de uit spelende ploeg had 0 punten gescoord.
Soms staat de uitslag in de verkeerde volgorde. FCR heeft met 3-2 gewonnen en de uitslag is 2-3.
Nu moet jij een functie maken die twee getallen in een array omdraait.
Input | Output |
swap([1,2]) | [2,1] |
swap([3,2]) | [2,3] |
swap([1,1]) | [1,1] |
Template
function swap($uitslag) {
// swap de twee elementen van het array
return($swap);
}
print_r( swap($uitslag([2,1])) );
echo "<br>";
print_r( swap($uitslag([2,3])) );
echo "<br>";
print_r( swap($uitslag([1,1])) );
Inleveren
Lever de code in en gebruik de naam php78-jouw-naam.php
PHP3
python reformatterCanvas.py 18661 52533 https://www.roc.ovh/books/2024/page/php3
01 De Som
We gaan verder met functies. Weet je nog wat een functie is? Een functie heeft (meestal) parameters, dit is de input en de output wordt door een functie teruggegeven aan waar de functie wordt aangeroepen.
Voorbeeld
<?php
function telErEenBijOp($getal) {
$output = $getal + 1;
return $output;
}
Functienaam: de functie heet telErEenBijOp/
Input: De input is $getal
Output: De output wordt in de functie berekend in regel 4. In regel 4 staat $output
wordt $getal
plus één.
Nu gaan we zelf fucnites maken.
De Som van drie getallen
De functie heeft drie waarden als input en returned de som van de drie getallen (dus de drie input variabelen opgeteld).
Input | Output |
mijnFunctie(3,2,1) | 6 |
mijnFunctie(1,12,3) | 16 |
mijnFunctie(0,4,0) | 4 |
mijnFunctie(7,0,3) | 10 |
mijnFunctie(0,0,0) | 0 |
Kijk naar dit schema en kijk of je begrijpt wat er gebeurt. Telkens wordt de input getransformeerd (veranderd). De input 3,2,1 wordt bijvoorbeeld verandert in 6, de input 1,12,3 in 16 etc.
Maak een functie die dit doet.
En test met alle input waarden zoals hierboven aangegeven. Gebruik de volgende template:
function mijnFunctie($a, $b, $c) {
// maak hier de code voor jouw functie
...
return $uitkomst;
}
echo "mijnFunctie(3,2,1): ";
echo mijnFunctie(3,2,1);
echo "<br>";
echo "mijnFunctie(1,12,3): ";
echo mijnFunctie(1,12,3);
echo "<br>";
echo "mijnFunctie(0,4,0): ";
echo mijnFunctie(0,4,0);
echo "<br>";
echo "mijnFunctie(7,0,3): ";
echo mijnFunctie(7,0,3);
echo "<br>";
echo "mijnFunctie(0,0,0): ";
echo mijnFunctie(0,0,0);
Klopt je output?
Je output moet er dus als volgt uit zien:
Opdracht
- Maak de code en zorg dat de output klopt zoals hierboven is aangegven.
- Voeg één extra test zelf toe, dus onder de mijnFunctie(0,0,0) gebruik de 3 gegevens van je geboortedatum als input (bijv. 1,4,2000 als je op 1 april 2000 bent geboren).
Inleveren (2 bestanden)
* php71-jouw-naam.php
* schermafdruk van de test waarbij alle juiste waarden worden afgedrukt zoals in het voorbeeld.
02 Optellen en de nul
De som van drie getallen, maar niet altijd
De functie krijgt drie waarden en returned de som van de drie getallen (dus de drie input variabelen opgeteld).
Er is nu een uitzondering . Zodra er een 0 in één van de input variabelen voorkomt, dan wordt de return waarde 0.
Input | Output |
mijnFunctie(3,2,1) | 6 |
mijnFunctie(1,12,3) | 16 |
mijnFunctie(0,4,0) | 0 |
mijnFunctie(7,0,3) | 0 |
mijnFunctie(0,0,0) | 0 |
Maak een functie die dit doet en plaats testcode in je code die alle bovenstaande situaties test. Gebruik eenzelfde soort template als in de vorige opgave.
Let op dat je een return gebruikt in de functie!
De output ziet er dan als volgt uit:
Tip : gebruik voor de situatie met een 0, een conditional statement en een extra return.
Opdracht
- Maak de code en zorg dat de output klopt zoals hierboven is aangegven.
- Voeg één extra test zelf toe, dus onder de mijnFunctie(0,0,0) bedenk je zelf die willekeurige getallen tussen 0 en 100 die je als input geeft.
Inleveren (2 bestanden)
* php72-jouw-naam.php
* schermafdruk van de test waarbij alle juiste waarden worden afgedrukt zoals in het voorbeeld.
03 Tussen 0 en 10?
De som van drie getallen met voorwaarden
De functie telt de drie input waarden bij elkaar op.
Is de som groter of gelijk aan 10 dan wordt de return waarde 1.
Is de som kleiner dan 10 en groter dan 0 dan wordt de return waarde 0.
Is de som 0 dan wordt de return waarde -1.
Input | Output |
mijnFunctie(3,2,1) | 0 |
mijnFunctie(1,12,3) | 1 |
mijnFunctie(0,4,0) | 0 |
mijnFunctie(7,0,3) | 1 |
mijnFunctie(0,0,0) | -1 |
Maak een functie die dit doet. Test alle input waarden weer net als in de vorige opgave.
Vergeet niet een return te gebruiken in de functie!
De output ziet er als volgt uit:
Opdracht
- Maak de code en zorg dat de output klopt zoals hierboven is aangegeven.
- Voeg één extra test zelf toe, dus onder de mijnFunctie(0,0,0) bedenk je zelf die willekeurige getallen tussen 0 en 100 die je als input geeft.
Inleveren (2 bestanden)
* php73-jouw-naam.php
* schermafdruk van je gehele browser waarin je laat zien dat je code werkt (zoals in het voorbeeld)
04 Array optellen
De som van alle waarden in een array
De functie telt alle waarden van een array bij elkaar op. De som alle getallen van het array wordt door de functie ge-returned.
Let op het input array kan verschillende lengtes hebben.
Input | Output |
mijnFunctie( [3,2,1] ) | 6 |
mijnFunctie( [1,12,3,1,2] ) | 19 |
mijnFunctie( [1,12,3,1,2,1] ) | 20 |
mijnFunctie( [2,4] ) | 6 |
mijnFunctie( [4] ) | 4 |
Maak een functie die dit doet.
Je kunt een array doorlopen met een foreach-loop.
Je kunt de template van opdracht 1 gebruiken, maar je moet deze wel aanpassen.
Waarom een return gebruiken?
We maken telkens een functie die het resultaat via een return
als het ware terug geeft aan de code die de functie aanroept. Dat doen we omdat we mogelijk met de uitkomst nog meer berekeningen willen doen. Soms wordt de output van de ene functie de input van de volgende functie. Dat kan alleen als je het resultaat via een return 'terug' geeft.
Opdracht
- Maak de code en zorg dat de output klopt zoals hierboven is aangegeven.
- Zet je naam en de datum als commentaar bovenin je code.
Inleveren (2 bestanden)
* php74-jouw-naam.php
* schermafdruk van de test waarbij alle juiste 5 waarden worden afgedrukt zoals in het voorbeeld.
05 Voetbal
De voetbalclub FCR (Footbal Club Royal) heeft vijf wedstrijden gespeeld.
De uitslagen waren 1-3, 4-0, 0-0, 1-1 en 0-2.
De voetbaluitslagen staan in een array.
$uitslagen = [ [1,3], [4,0], [0,0] ,[1,1],[0,2] ];
Voor een wedstrijd krijgt FCR 0, 1 of 3 punten.
Uitslag | Resultaat | Punten |
1-3 | verloren | 0 |
4-0 | gewonnen | 3 |
0-0 | gelijk | 1 |
1-1 | gelijk | 1 |
0-2 | verloren | 0 |
FCR heeft in bovenstaand voorbeeld 5 punten.
Maak een functie die de punten aan de hand van de uitslagen berekend.
Input | Punten |
[ [1,3], [4,0], [0,0] ,[1,1],[0,2] ] | 5 |
[ [1,1], [0,0], [0,2] ,[1,1],[0,2] ] | 3 |
[ [1,1], [0,0], [0,0] ,[1,1],[2,2] ] | 5 |
[ [1,0], [1,0], [2,0] ,[1,1],[0,2] ] | 10 |
function berekenScore($uitslagen) {
// bereken score
return $score;
}
echo berekenScore([ [1,3], [4,0], [0,0] ,[1,1],[0,2] ]);
echo "<br>";
echo berekenScore([ [1,1], [0,0], [0,2] ,[1,1],[0,2] ]);
echo "<br>";
echo berekenScore([ [1,1], [0,0], [0,0] ,[1,1],[2,2] ]);
echo "<br>";
echo berekenScore([ [1,0], [1,0], [2,0] ,[1,1],[0,2] ]);
Inleveren (2 bestanden)
* php75-jouw-naam.php
* schermafdruk waarin je laat zien dat je je code test met de bovenstaande test cases.
06 Swap values
De opdracht heet "Swap values", dit betekent "waarden verwisselen"
In de vorige opgave hadden we het over de uitslag van een voetbalwedstrijd. Een uitslag 1,0 betekende dat de thuisploeg (FCR) 1 doelpunt heeft gemaakt en de uit spelende ploeg had 0 punten gescoord.
Soms staat de uitslag in de verkeerde volgorde. FCR heeft met 3-2 gewonnen en de uitslag is 2-3.
Nu moet jij een functie maken die twee getallen in een array omdraait.
Input | Output |
swap([1,2]) | [2,1] |
swap([4,2]) | [2,4] |
swap([1,1]) | [1,1] |
De input en output zijn beiden een array.
Template
function swap($uitslag) {
// swap de twee elementen van het array
return $swap;
}
print "<pre>";
print_r( swap([1,2]) );
echo "<br>";
print_r( swap([4,2]) );
echo "<br>";
print_r( swap([1,1]) );
Output
Je ziet als het goed is dat je een array terug krijgt waarbij de waarden zijn omgedraaid. De output ziet er dan als volgt uit:
Array ( [0] => 2 [1] => 1 )
Array ( [0] => 2 [1] => 4 )
Array ( [0] => 1 [1] => 1 )
Inleveren
* php76-jouw-naam.php
* schermafdruk van de test waarbij alle juiste waarden worden afgedrukt
07 Druk ass. array af
Terugblik
Tot nu toe hebben we twee soorten arrays gezien.
- Eenvoudige arrays
Complexe arrays (multidimensionale arrays).
Voorbeelden
$array1=['waarde 1', 'waarde 2', 'waarde 3', 'waarde 4'];
$array2=[ ['waarde 1a', 'waarde 2a', 'waarde 3a', 'waarde 4a'],
['waarde 1b', 'waarde 2b', 'waarde 3b', 'waarde 4b'],
['waarde 1c', 'waarde 2c', 'waarde 3c', 'waarde 4c']
];
Herken je het complexe array?
$array2 is een array van 3 arrays en elk van die drie arrays heeft 4 elementen.
Associatieve array
In deze les gaan we kennis maken met nog een type array, het associatieve array.
Er bestaan verschillende namen voor een associatieve array:
In Python heet het een dictionairy en soms wordt ook wel de meer algemenere term "key-value array" gebruikt. Je zult aan het eind van de les wel begrijpen waarom.
associatieve array = dictionary = key-value array
Het verschil tussen een 'gewoon' (indexed) array en een associatieve array is de key (sleutel).
Snap je dit nog niet helemaal, of wil je nog meer voorbeelden zien, kijk dan deze video.
https://www.youtube.com/watch?v=5lJLecI0BTA
De key
Met een key bepaal je welke elementen je wilt zien in een array. Bijvoorbeeld:
$array=['Amsterdam','Rotterdam','Den Haag','Almere'];
echo $array[1];
Kijk naar regel 2, daar staat een [1]. Dat is de key . De key is 1 en dat betekent dat je het tweede element van het array afdrukt. In dit geval 'Rotterdam' dus. Nee niet 'Amsterdam' want een array begint te tellen bij 0.
Stel je wilt de plaats 'Almere' overschrijven? Dat kan met:
$array[3]='Utrecht';
Bij een associatieve array moet jij zelf voor elk element de key bepalen. Dat ziet er bijvoorbeeld zo uit:
$array[ 'naam' => 'Nike Chui' , 'datum' => '12 november 2020' , 'project' => 'PHP Project'];
Om nu het tweede element van dit array af te drukken gebruik je:
echo $array['datum'];
Het maakt niet uit op welke plaats de datum staat, de key is datum. De waarde die bij deze key hoort, wordt afgedrukt.
Stel je wilt de datum aanpassen dan kun je dat als volgt doen:
$array['datum']='1 december 2020';
Samengevat
Andere namen | Hoe benader je een element? | Voorbeeld | |
Indexed Array | gewoon array, 1 dimensionaal array, eenvoudig array | via de key, die is altijd 0,1,2,3,4.... | $myArray[13] |
Associatieve Array | key-value array, dictionary (Python), hash table | via de key, dit moet een unieke string zijn waarvan je zelf de waarde bepaald. | $myArray['datum']; |
Opdracht
Lees eerst de tekst/uitleg hierboven.
Neem dan deze template en vul de code aan zodat je het hele associatieve array afdrukt.
$array=[ 'naam' => 'Nike Chui' , 'datum' => '12 november 2020' , 'project' => 'PHP Project'];
De output moet er als volgt uit komen te zien (dus elke waarde op een nieuwe regel).
Nike Chui
12 november 2020
PHP Project
Let op, het gebruik van een (for) loop is bij deze opgave niet toegestaan.
Inleveren (2 bestanden)
- php77-jouw-naam.php
- schermafdruk met de juiste output (mag in ander font als in het voorbeeld)
08 Key and value
In de vorige opdracht werden alle waarden afgedrukt. We kunnen ook de keys en de waarden afdrukken met een loop. Dat is vooral handig als we niet weten hoe groot het array. We maken een loop en drukken gewoon het hele associatieve array af.
We gebruiken hetzelfde array, maar de output moet anders worden, namelijk:
key=naam, value=Nike Chui
key=datum, value=12 november 2020
key=project, value=PHP Project
Zoek zelf op hoe je dat doet, bijvoorbeeld op: https://www.w3schools.com/php/php_arrays_associative.asp
Gebruik de foreach loop om alle keys en values af te drukken. De output moet er precies zo uitzien als in deze opdracht staat (let dus op de komma's en de regels).
Inleveren (2 bestanden)
* php78-jouw-naam.php
* schermafdruk van de output
09 Maak ass. array
Maak zelf een associatieve array met de volgende 4 elementen:
voornaam, achternaam, geboortedatum, woonplaats
Maak het array door gebruik te maken van [ en ].
Gebruik als waarden je eigen voornaam/achternaam/geboortedatum/woonplaats.
Druk alle waarden uit dit associatieve array af (hoe, met of zonder loop, dat mag je zelf weten).
Inleveren (2 bestanden)
* php79-jouw-naam.php.
* schermafdruk van de output in de browser.
10 array from database
Wat je in de praktijk vaak tegenkomt zijn arrays van associatieve arrays. Als je (later) gegevens uit de database haalt dan krijg je ook vaak een array van associatieve arrays terug. Hoe ziet dat eruit?
$uitslagen=[
[ 'thuis' => 'FC Twente', 'uit' => 'FC Utrecht', 'uitslag' => [0,1] ],
[ 'thuis' => 'FC Twente', 'uit' => 'FC Volendam', 'uitslag' => [4,2] ],
[ 'thuis' => 'FC Emmen', 'uit' => 'Feyenoord', 'uitslag' => [1,3] ],
[ 'thuis' => 'Vitesse', 'uit' => 'FC Twente', 'uitslag' => [0,1] ],
];
Elke regel is eigenlijk een associatieve array. Er staan 4 associatieve arrays in het array $uitslagen.
Probeer maar eens:
echo "<pre>";
print_r($uitslagen[0]);
echo "</pre>";
Met print_r() kun je een array afdrukken.
Je kunt op deze manier dus $uitslagen[0], $uitslagen[1], $uitslagen[2] en $uitslagen[3] afdrukken.
Stel je wilt de thuisploeg afdrukken van de tweede uitslag. Hoe gaat dat?
echo $uitslagen[1]['thuis'];
En... stel je wilt weten hoeveel de thuisploeg van de derde wedstrijd heeft gescoord.
echo $uitslagen[3]['uitslag'][0]
Je begint dus met de vierde regel (3) dan neem je de 'uitslag' en van de uitslag neem je dan het eerste element (0).
OK, nu jij. Gebruik het array $uitslagen en druk de volgende gegevens af:
Het aantal doelpunten dat FC Twente heeft gescoord.
De output moet er als volg uit zien.
FC Twente scoort 0 punten
FC Twente scoort 4 punten
FC Twente scoort 1 punten
De waarden 0, 4 en 1 moet je uit het (gegeven) associatieve array halen.
Inleveren (2 bestanden)
* php84-jouw-naam.php
* schermafdruk van je gehele browser en laat daarbij de output zien
Bonusvraag
Deze vraag levert (2) bonuspunten op
Je weet nu waar precies de uitslag van 'FC Twente' staat. Stel dat je dat niet weet en je moet regel voor regel eerst kijken of 'FC Twente' heeft gespeeld en zo ja of het de thuis- of uitploeg was. Hoe zou je code er dan uit zien?
Tip: je moet hierbij een loop gebruiken!
10 array from database versie b
Dit is een extra/alternatieve opgave. Alleen maken indien je te weinig punten hebt gehaald met de andere opdrachten.
Wat je in de praktijk vaak tegenkomt zijn arrays van assioicative arrays. Als je (later) gegevens uit de database haalt dan krijg je ook vaak een array van assiociative arrays terug. Hoe ziet dat eruit?
$uitslagen=[
[ 'thuis' => 'FC Twente', 'uit' => 'FC Utrecht', 'uitslag' => [3,1] ],
[ 'thuis' => 'FC Twente', 'uit' => 'FC Volendam', 'uitslag' => [4,4] ],
[ 'thuis' => 'Vitesse', 'uit' => 'Feyenoord', 'uitslag' => [0,2] ],
[ 'thuis' => 'FC Emmen', 'uit' => 'Feyenoord', 'uitslag' => [0,3] ],
[ 'thuis' => 'Vitesse', 'uit' => 'FC Twente', 'uitslag' => [1,0] ],
[ 'thuis' => 'Feyenoord', 'uit' => 'FC Twente', 'uitslag' => [1,1] ],
];
Elke regel is eigenlijk een assioicative array. Er staan 6 assiociative arrays in het array $uitlsagen.
Probeer maar eens:
echo "<pre>";
print_r($uitslagen[0]);
Met print_r() kun je een array afdrukken.
Je kunt op deze manier dus $uitslagen[0], $uitslagen[1], $uitslagen[2] en $uitslagen[3] afdrukken.
Stel je wilt de thuisploeg afdrukken van de tweede uitslag. Hoe gaat dat?
echo $uitslagen[1]['thuis'];
En Stel je wilt weten hoeveel de thuisploeg van de derde wedstrijd heeft gescoord.
echo $uitslagen[3]['uitslag'][0]
Je begint dus met de vierde regel (3) dan neem je de 'uitslag' en van de uitslag neem je dan het eerste element (0).
OK, nu jij. Gebruik het array $uitslagen en druk de volgende gegevens af:
Het aantal doelpunten dat FC Twente heeft gescoord.
De output moet er als volg uit zien.
FC Twente scoort 3 punten
FC Twente scoort 4 punten
FC Twente scoort 0 punten
FC Twente scoort 1 punten
De waarden 3, 4, 0 en 1 moet je uit het assiociative array halen.
Inleveren
- Lever de code in en gebruik de naam php84-jouw-naam.php
- Lever een schermafdruk van je gehele browser en laat daarbij de output zien, gebruik de naam php84-jouw-naam.png
11 Thuisploeg
Gebruik het associatieve array (van de vorige opdracht);
$uitslagen=[
[ 'thuis' => 'FC Twente', 'uit' => 'FC Utrecht', 'uitslag' => [0,2] ],
[ 'thuis' => 'FC Twente', 'uit' => 'FC Volendam', 'uitslag' => [5,1] ],
[ 'thuis' => 'FC Emmen', 'uit' => 'Feyenoord', 'uitslag' => [0,1] ],
[ 'thuis' => 'Vitesse', 'uit' => 'FC Twente', 'uitslag' => [0,0] ],
];
Je gaat nu in een loop de punten van de thuisploeg uitrekenen.
Je krijgt 3 punten als je de wedstrijd wint, 1 bij een gelijkspel en 0 als je de wedstrijd verliest.
In de eerste wedstrijd heeft de thuisploeg 0 punten gescoord, in de tweede wedstrijd 3, in de derde wedstrijd 0 en in de vierde wedstrijd 1.
De output van jouw code ziet er als volgt uit:
Wedstrijd 1: de thuisploeg krijgt 0 punten
Wedstrijd 2: de thuisploeg krijgt 3 punten
Wedstrijd 3: de thuisploeg krijgt 0 punten
Wedstrijd 4: de thuisploeg krijgt 1 punten
Lastig? Probeer dit in stapjes te doen:
Stap 1, maak eerst een loop waarin je de uitslagen afdrukt (gebruik print_r).
Stap 2, druk nu de uitslagen niet af met print_r maar druk de afzonderlijke scores af, dus 0 1 en dan 3 1 enzovoorts.
Stap 3 gebruik nu een if, en test of het eerste getal groter is dan het tweede. Als dat zo is dan druk je 3 af omdat de thuisploeg dan 3 punten krijgt.
Stap 4 maak nog een if, en test of het eerste en tweede getal gelijk zijn. Als dat zo is dan druk je 1 af.
Stap 5 maak nog een if, en test of het tweede getal groter is dan het eerste. als dat zo is dan druk je 0 af.
Stap 6 je bent bijna klaar je moet nu alleen nog text om de uitslag heen printen. Dus druk nu niet 0 af, maar 'de thuisploeg krijgt 0 punten.
Stap 7, nu nog het eerste gedeelte. Maak een variabele $teller en zet de waarde op 1. Druk af Wedstrijd $teller en hoog daarna de $teller op met 1 ($teller = $teller + 1)
Inleveren (2 bestanden)
* php85-jouw-naam.php
* schermafdruk van je gehele browser en laat daarbij de output zien, gebruik de naam php85-jouw-naam.png
12 Eindopdracht Boeken *
Opdracht
Je krijgt een associatief array en daarmee ga je het volgende overzicht maken.
De rode lijn is de cursor, als je met de muis over de tabel gaat dan wordt de regel die waar je muis over heen gaat een andere kleur. Dat geldt natuurlijk niet voor de titel regel van de tabel.
Het array waar je mee gaat werken is:
$boeken = [
"Harry Potter en de Steen der Wijzen" => ["auteur" => "j.k. rowling", "jaar" => 1997],
"De Hobbit" => ["auteur" => "J.r.r. Tolkien", "jaar" => 1937],
"Het spel der tronen" => ["auteur" => "George R.R. martin", "jaar" => 1996],
"1984" => ["auteur" => "George Orwell", "jaar" => 1949],
"Moord op de Oriënt-Expres" => ["auteur" => "Agatha Christie", "jaar" => 1934],
"Moby Dick" => ["auteur" => "herman melville", "jaar" => 1851]
];
Deel 1 van de opdracht, HTML, PHP en CSS (10 punten)
- Voeg zelf twee boeken toe aan dit array!
- Voeg de CSS-styling toe aan HTML (inline).
Deel 2 van de opdracht, functie (10 punten)
Zoals je ziet staan niet alle namen van de auteurs goed in de data $boeken.
Zo staat er:
j.k. rowling in plaats van J.K. Rowling
J.r.r. Tolkien in plaats van J.R.R. Tolkien
Maak een functie genaamd:
formatName($naam)
deze functie herstelt de naam zodat de hoofdletters goed komen te staan.
Dus elk woord in de $naam en elke letter die wordt gevolgd door een punt (.) moet een hoofdletter worden.
Met behulp van de functie worden dan alle namen zo afgedrukt als in het voorbeeld.
Je mag ChatGPT gebruiken maar zorg er wel voor dat je de code kan uitleggen. Het kan zijn dat docenten hier om vragen!
Inleveren
- php/html bestand met inline css.
PHP4 OOP
A - Maak in PHP een databaseverbinding
Maak een nieuw .php bestand met de volgende naam:
connect-[jouwnaam].php - dus bijvoorbeeld connect-hans.php
Maak in dit php-bestand een verbinding met een database, genaamd ‘games’. Gebruik hiervoor de standaard gebruiker in xampp. Geef het verbindingsobject de naam ‘$conn1’.
Maak daarna een tweede verbinding met een tweede database, genaamd ‘artiesten’. Gebruik hiervoor een ander gebruikersaccount. Deze heeft als gebruikersnaam ‘roc-student’ en als wachtwoord ‘welkom123’. Geef het verbindingsobject de naam ‘$conn2’.
Inleveren:
connect-[jouwnaam].php
Tip: Je gaat vaker een verbindingen met databases maken, sla dit soort bestanden op een voor jou logische plek op zodat je ze later snel terug kunt vinden als naslagwerk.
B1 - insert game
Open PhpMyAdmin in je browser en maak een nieuwe database aan met de naam ‘winkel’. Importeer het volgende bestand games.sql
Maak een nieuw .php bestand met de volgende naam:
nieuw-spel1-[jouwnaam].php
(vervang [jouwnaam] met je eigen naam)
Maak in dit bestand een database verbindingsobject met de naam ‘$conn’.
Maak in dit bestand een variabele $sql, waarin je als string een query maakt waarmee je de volgende game toevoegt aan de tabel ‘games’ in de database ‘winkels’:
Titel: F1 2022
Uitgever: EA Sports
Platform: Playstation 5
Voorraad: 28
Prijs: 69,-
Zorg met een exec() er voor dat de query wordt uitgevoerd en de gegevens in de database worden toegevoegd.
Let op de tabel 'games' heet in jouw versie van de database niet meer games. Bestudeer de database en bedenk zelf wat de nieuwe naam is van deze tabel.
Tip1 : Het id van de tabel is auto-increment. Deze hoef je dus geen waarde mee te geven.
Tip2 : Test de query eerst in PhpMyAdmin om te kijken of deze werkt. Dit kan in PhpMyAdmin door links op de database ‘winkel’ te klikken en daarna de tab ‘SQL’ te selecteren.
Inleveren
Het geteste en werkende PHP-bestand dat je hebt gemaakt.
B2 - insert game deel 2
Maak een nieuw .php bestand met de volgende naam:
nieuw-spel2-[jouwnaam].php
(vervang [jouwnaam] met je eigen naam)
Voeg net als in opdracht 2a een nieuw spel toe in de tabel ‘games’. De gegevens van dit spel stop je eerst in variabelen. Deze variabelen gebruik je vervolgens om de query mee te maken.
Bijvoorbeeld:
Voeg op deze manier een zelf verzonnen game toe met titel, uitgever, platform, voorraad en prijs.
Inleveren:
- nieuw-spel2-[jouwnaam].php
(vervang [jouwnaam] met je eigen naam) - Een screenshot van je browser met daarin PHPMyAdmin en de weergave van je databasetabel met het nieuwe spel
B3 - Insert met form
We gaan nog een stapje verder. In plaats van de spellen die je in de database wilt toevoegen in het PHP-bestand te zetten, ga je nu een formulier maken waarmee een bezoeker van de pagina een game kan invullen om toe te voeren.
Maak twee nieuwe .php bestanden met de volgende namen:
nieuw-spel3-[jouwnaam].php
voeg-toe3-[jouwnaam].php
(vervang [jouwnaam] met je eigen naam)
Inleveren:
- De twee in deze opdracht gemaakte .php-bestanden
- Een screendump van je browser met het formulier
C1 - Ophalen uit database deel 1
- In deze opdracht halen we alle gametitels uit de database en tonen deze in de browser in een list (<ul>).
- Gebruik hiervoor de tabel producten van de database webshop die je eerder hebt gebruikt.
- Maak nieuwe .php bestanden met de volgende namen:
opdracht-c1-[jouwnaam].php
database-connectie-[jouwnaam].php
(vervang [jouwnaam] met je eigen naam) - Zorg voor volledige en nette html in het opdracht-c1-[jouwnaam].php bestand (<html>,<head>,<body>, etc.)
- het bestand met de database-connectie gebruik je door middel van een ‘require’
- Het eindresultaat ziet er ongeveer uit als onderstaande plaatje:
Voor een bonuspunt:
Zet achter idere game-titel, het platform tussen haakjes. De output op het scherm ziet er dan uit als onderstaand plaatje:
Inleveren:
- opdracht-c1-[jouwnaam].php
- database-connectie-[jouwnaam].php
- Een screenshot van je gehele browser met daarin het resultaat op je scherm en de url in de adresbalk.
(vervang [jouwnaam] met je eigen naam)
C2 - Ophalen uit database deel 2
Deze opdracht is een vervolg op de vorige opdracht.
- Maak nieuw .php bestand met de volgende naam:
opdracht-c1-[jouwnaam].php
(vervang [jouwnaam] met je eigen naam) - Include hierin het bestand database-connectie-[jouwnaam].php uit de vorige opdracht (met een 'require').
- Haal alle gegevens van de tabel 'klanten' op vanuit de database
- Maak hier een nette html-tabel van met tabelheaders en toon deze op het browserscherm met de kolommen:
- voornaam
- achternaam
- woonplaats
- De output op je scherm moet er ongeveer uitzien als onderstaand plaatje:
Tip: Doe het stap voor stap:
- Maak eerst een html-tabel met één rij met vaste testnamen (dus nog niet uit de database).
- Bepaal daarna welk gedeelte van de tabel herhaald moet worden en dus in de foreach-loop moet komen te staan.
- Vervang daarna de vaste waarden met de gegevens uit de database
Inleveren:
- opdracht-c2-[jouwnaam].php
- database-connectie-[jouwnaam].php
- Een screenshot van je browser met daarin het resultaat op je scherm en de url in de adresbalk.
(vervang [jouwnaam] met je eigen naam)
D1 - Voorbereiding
Opdracht a
In deze opdracht ga je vooral voorbereidend werk doen voor het kunnen maken van de laatste twee opdrachten. Je gaat hierin verder met de tabel, die je in opdracht C2 (SELECT) hebt gemaakt.
Voeg hieraan twee kolommen toe. In deze kolommen staan per rij twee links.
• Een link voor het verwijderen van het record (van de betreffende rij)
• Een link voor het updaten van het record (van de betreffende rij)
De bedoeling is dat in de link een argument wordt meegegeven die je kunt gebruiken voor het maken van een query. Als je een query wilt maken voor het verwijderen van een bepaald record, geef je meestal de primary key mee. Dus als je bijvoorbeeld het record van ‘Jan’ wilt verwijderen en Jan heeft als primary key: ‘id = 8’, dan zal de link er uitzien als iets van:
https://studentnummer.jouw.website/verwijder.php?id=8
De waarde van id kun je in je script (verwijder.php) dan weer gebruiken als een $_GET variabele.
! in deze opdracht maak je alleen de links in de tabel. Het verwijderen / updaten, hoeft dus nog niet te werken!
Inleveren:
- opdracht-D1-[jouwnaam].php
- Een screenshot van je browser met daarin het resultaat op je scherm en de url in de adresbalk.
(vervang [jouwnaam] met je eigen naam)
D2 - Verwijderen van een record
Zorg ervoor dat als je in je browser op een 'verwijder'-link klikt, het betreffende record wordt verwijderd uit de database en dat de tabel (na het verwijderen) in zijn geheel weer wordt getoond. Het verwijderde record is uiteraard verdwenen op je scherm.
Bedenk zelf hoe je dit doet en of je alles verwerkt in één script, of dat je meerdere php-bestanden aanmaakt. Beide is mogelijk en goed.
Inleveren:
- opdracht-D2-[jouwnaam].php
- database-connectie-[jouwnaam].php
- eventueel andere .php bestanden die je gebruikt hebt. Zorg ervoor dat jouw naam in de bestandsnaam staat. Bijvoorbeeld: verwijder-[jouwnaam].php
- Een screenshot van je browser met daarin het resultaat op je scherm en de url in de adresbalk.
(vervang [jouwnaam] met je eigen naam)
D3 - Updaten van een record
Zorg ervoor dat als je in je browser op een 'move'-link klikt, het betreffende record wordt geüpdate in de database en dat de tabel (na het updaten) in zijn geheel weer wordt getoond. Het geupdate record wordt uiteraard aangepast op je scherm getoond.
Wat moet er worden geüpdatet?
- Als de woonplaats van klant niet 'Amstelveen' is, update je de woonplaats van die klant naar 'Amstelveen'.
- Als de woonplaats van klant 'Amstelveen' is, update je de woonplaats van die klant naar een zelf verzonnen woonplaats in de provincie Gelderland (zoek er maar een op).
Bedenk zelf hoe je dit doet en of je alles verwerkt in één script, of dat je meerdere php-bestanden aanmaakt. Beide is mogelijk en goed.
Inleveren:
- opdracht-D3-[jouwnaam].php
- database-connectie-[jouwnaam].php
- eventueel andere .php bestanden die je gebruikt hebt. Zorg ervoor dat jouw naam in de bestandsnaam staat. Bijvoorbeeld: verwijder-[jouwnaam].php
- Een screenshot van je browser met daarin het resultaat op je scherm en de url in de adresbalk.
(vervang [jouwnaam] met je eigen naam)
Schrijf een reflectie
Het is gelukt! Je Crudchallenge is ingeleverd en goed gekeurd. In deze challenge zijn veel onderdelen die je hebt geleerd tijdens de verschillende PHP-modules samengekomen. Veel technieken die je hebt gebruikt in de challenge waren een herhaling voor je. Maar bij elke opdracht kom je ook weer nieuwe uitdagingen tegen.
Om stil te staan bij wat je van deze challenge hebt geleerd, ga je (minimaal) twee reflecties hierop maken en inleveren.
Bij een reflectie kijk je terug op wat je hebt gedaan en bedenk je wat er goed is gegaan. Of wat beter had gekund. Dit om bij een volgende keer dat je iets vergelijkbaars tegenkomt te bedenken wat je hebt geleerd. Wat je wéér zo zou doen, of juist anders.
Voorbeeld van een geval waar een reflectie over gemaakt zou kunnen worden:
Je hebt voor het maken van de tabel een while-loop gebruikt. Maar dat vond je lastig en kwam er na het vragen van hulp aan een collega-student achter dat je beter een foreach-loop kon gebruiken.
Een reflectie (stuk tekst) hoeft niet heel uitgebreid te zijn. Beschrijf beknopt, maar wel in duidelijk leesbare zinnen waar het over gaat.
Download het reflectiesjabloon en vul jouw reflecties in. Maak van het bestand een pdf-bestand met als naam:
reflecties-<jouw-naam>.pdf
PHP5 PDO
A - Maak in PHP een databaseverbinding
Maak een nieuw .php bestand met de volgende naam:
connect-[jouwnaam].php - dus bijvoorbeeld connect-hans.php
Maak in dit php-bestand een verbinding met een database, genaamd ‘games’. Gebruik hiervoor de standaard gebruiker in xampp. Geef het verbindingsobject de naam ‘$conn1’.
Maak daarna een tweede verbinding met een tweede database, genaamd ‘artiesten’. Gebruik hiervoor een ander gebruikersaccount. Deze heeft als gebruikersnaam ‘roc-student’ en als wachtwoord ‘welkom123’. Geef het verbindingsobject de naam ‘$conn2’.
Inleveren:
connect-[jouwnaam].php
Tip: Je gaat vaker een verbindingen met databases maken, sla dit soort bestanden op een voor jou logische plek op zodat je ze later snel terug kunt vinden als naslagwerk.
B1 - insert game
Open PhpMyAdmin in je browser en maak een nieuwe database aan met de naam ‘winkel’. Importeer het volgende bestand games.sql
Maak een nieuw .php bestand met de volgende naam:
nieuw-spel1-[jouwnaam].php
(vervang [jouwnaam] met je eigen naam)
Maak in dit bestand een database verbindingsobject met de naam ‘$conn’.
Maak in dit bestand een variabele $sql, waarin je als string een query maakt waarmee je de volgende game toevoegt aan de tabel ‘games’ in de database ‘winkels’:
Titel: F1 2022
Uitgever: EA Sports
Platform: Playstation 5
Voorraad: 28
Prijs: 69,-
Zorg met een exec() er voor dat de query wordt uitgevoerd en de gegevens in de database worden toegevoegd.
Let op de tabel 'games' heet in jouw versie van de database niet meer games. Bestudeer de database en bedenk zelf wat de nieuwe naam is van deze tabel.
Tip1 : Het id van de tabel is auto-increment. Deze hoef je dus geen waarde mee te geven.
Tip2 : Test de query eerst in PhpMyAdmin om te kijken of deze werkt. Dit kan in PhpMyAdmin door links op de database ‘winkel’ te klikken en daarna de tab ‘SQL’ te selecteren.
Inleveren
Het geteste en werkende PHP-bestand dat je hebt gemaakt.
B2 - insert game deel 2
Maak een nieuw .php bestand met de volgende naam:
nieuw-spel2-[jouwnaam].php
(vervang [jouwnaam] met je eigen naam)
Voeg net als in opdracht 2a een nieuw spel toe in de tabel ‘games’. De gegevens van dit spel stop je eerst in variabelen. Deze variabelen gebruik je vervolgens om de query mee te maken.
Bijvoorbeeld:
Voeg op deze manier een zelf verzonnen game toe met titel, uitgever, platform, voorraad en prijs.
Inleveren:
- nieuw-spel2-[jouwnaam].php
(vervang [jouwnaam] met je eigen naam) - Een screenshot van je browser met daarin PHPMyAdmin en de weergave van je databasetabel met het nieuwe spel
B3 - Insert met form
We gaan nog een stapje verder. In plaats van de spellen die je in de database wilt toevoegen in het PHP-bestand te zetten, ga je nu een formulier maken waarmee een bezoeker van de pagina een game kan invullen om toe te voeren.
Maak twee nieuwe .php bestanden met de volgende namen:
nieuw-spel3-[jouwnaam].php
voeg-toe3-[jouwnaam].php
(vervang [jouwnaam] met je eigen naam)
Inleveren:
- De twee in deze opdracht gemaakte .php-bestanden
- Een screendump van je browser met het formulier
C1 - Ophalen uit database deel 1
- In deze opdracht halen we alle gametitels uit de database en tonen deze in de browser in een list (<ul>).
- Gebruik hiervoor de tabel producten van de database webshop die je eerder hebt gebruikt.
- Maak nieuwe .php bestanden met de volgende namen:
opdracht-c1-[jouwnaam].php
database-connectie-[jouwnaam].php
(vervang [jouwnaam] met je eigen naam) - Zorg voor volledige en nette html in het opdracht-c1-[jouwnaam].php bestand (<html>,<head>,<body>, etc.)
- het bestand met de database-connectie gebruik je door middel van een ‘require’
- Het eindresultaat ziet er ongeveer uit als onderstaande plaatje:
Voor een bonuspunt:
Zet achter idere game-titel, het platform tussen haakjes. De output op het scherm ziet er dan uit als onderstaand plaatje:
Inleveren:
- opdracht-c1-[jouwnaam].php
- database-connectie-[jouwnaam].php
- Een screenshot van je gehele browser met daarin het resultaat op je scherm en de url in de adresbalk.
(vervang [jouwnaam] met je eigen naam)
C2 - Ophalen uit database deel 2
Deze opdracht is een vervolg op de vorige opdracht.
- Maak nieuw .php bestand met de volgende naam:
opdracht-c1-[jouwnaam].php
(vervang [jouwnaam] met je eigen naam) - Include hierin het bestand database-connectie-[jouwnaam].php uit de vorige opdracht (met een 'require').
- Haal alle gegevens van de tabel 'klanten' op vanuit de database
- Maak hier een nette html-tabel van met tabelheaders en toon deze op het browserscherm met de kolommen:
- voornaam
- achternaam
- woonplaats
- De output op je scherm moet er ongeveer uitzien als onderstaand plaatje:
Tip: Doe het stap voor stap:
- Maak eerst een html-tabel met één rij met vaste testnamen (dus nog niet uit de database).
- Bepaal daarna welk gedeelte van de tabel herhaald moet worden en dus in de foreach-loop moet komen te staan.
- Vervang daarna de vaste waarden met de gegevens uit de database
Inleveren:
- opdracht-c2-[jouwnaam].php
- database-connectie-[jouwnaam].php
- Een screenshot van je browser met daarin het resultaat op je scherm en de url in de adresbalk.
(vervang [jouwnaam] met je eigen naam)
D1 - Voorbereiding
Opdracht a
In deze opdracht ga je vooral voorbereidend werk doen voor het kunnen maken van de laatste twee opdrachten. Je gaat hierin verder met de tabel, die je in opdracht C2 (SELECT) hebt gemaakt.
Voeg hieraan twee kolommen toe. In deze kolommen staan per rij twee links.
• Een link voor het verwijderen van het record (van de betreffende rij)
• Een link voor het updaten van het record (van de betreffende rij)
De bedoeling is dat in de link een argument wordt meegegeven die je kunt gebruiken voor het maken van een query. Als je een query wilt maken voor het verwijderen van een bepaald record, geef je meestal de primary key mee. Dus als je bijvoorbeeld het record van ‘Jan’ wilt verwijderen en Jan heeft als primary key: ‘id = 8’, dan zal de link er uitzien als iets van:
https://studentnummer.jouw.website/verwijder.php?id=8
De waarde van id kun je in je script (verwijder.php) dan weer gebruiken als een $_GET variabele.
! in deze opdracht maak je alleen de links in de tabel. Het verwijderen / updaten, hoeft dus nog niet te werken!
Inleveren:
- opdracht-D1-[jouwnaam].php
- Een screenshot van je browser met daarin het resultaat op je scherm en de url in de adresbalk.
(vervang [jouwnaam] met je eigen naam)
D2 - Verwijderen van een record
Zorg ervoor dat als je in je browser op een 'verwijder'-link klikt, het betreffende record wordt verwijderd uit de database en dat de tabel (na het verwijderen) in zijn geheel weer wordt getoond. Het verwijderde record is uiteraard verdwenen op je scherm.
Bedenk zelf hoe je dit doet en of je alles verwerkt in één script, of dat je meerdere php-bestanden aanmaakt. Beide is mogelijk en goed.
Inleveren:
- opdracht-D2-[jouwnaam].php
- database-connectie-[jouwnaam].php
- eventueel andere .php bestanden die je gebruikt hebt. Zorg ervoor dat jouw naam in de bestandsnaam staat. Bijvoorbeeld: verwijder-[jouwnaam].php
- Een screenshot van je browser met daarin het resultaat op je scherm en de url in de adresbalk.
(vervang [jouwnaam] met je eigen naam)
D3 - Updaten van een record
Zorg ervoor dat als je in je browser op een 'move'-link klikt, het betreffende record wordt geüpdate in de database en dat de tabel (na het updaten) in zijn geheel weer wordt getoond. Het geupdate record wordt uiteraard aangepast op je scherm getoond.
Wat moet er worden geüpdatet?
- Als de woonplaats van klant niet 'Amstelveen' is, update je de woonplaats van die klant naar 'Amstelveen'.
- Als de woonplaats van klant 'Amstelveen' is, update je de woonplaats van die klant naar een zelf verzonnen woonplaats in de provincie Gelderland (zoek er maar een op).
Bedenk zelf hoe je dit doet en of je alles verwerkt in één script, of dat je meerdere php-bestanden aanmaakt. Beide is mogelijk en goed.
Inleveren:
- opdracht-D3-[jouwnaam].php
- database-connectie-[jouwnaam].php
- eventueel andere .php bestanden die je gebruikt hebt. Zorg ervoor dat jouw naam in de bestandsnaam staat. Bijvoorbeeld: verwijder-[jouwnaam].php
- Een screenshot van je browser met daarin het resultaat op je scherm en de url in de adresbalk.
(vervang [jouwnaam] met je eigen naam)
Schrijf een reflectie
Het is gelukt! Je Crudchallenge is ingeleverd en goed gekeurd. In deze challenge zijn veel onderdelen die je hebt geleerd tijdens de verschillende PHP-modules samengekomen. Veel technieken die je hebt gebruikt in de challenge waren een herhaling voor je. Maar bij elke opdracht kom je ook weer nieuwe uitdagingen tegen.
Om stil te staan bij wat je van deze challenge hebt geleerd, ga je (minimaal) twee reflecties hierop maken en inleveren.
Bij een reflectie kijk je terug op wat je hebt gedaan en bedenk je wat er goed is gegaan. Of wat beter had gekund. Dit om bij een volgende keer dat je iets vergelijkbaars tegenkomt te bedenken wat je hebt geleerd. Wat je wéér zo zou doen, of juist anders.
Voorbeeld van een geval waar een reflectie over gemaakt zou kunnen worden:
Je hebt voor het maken van de tabel een while-loop gebruikt. Maar dat vond je lastig en kwam er na het vragen van hulp aan een collega-student achter dat je beter een foreach-loop kon gebruiken.
Een reflectie (stuk tekst) hoeft niet heel uitgebreid te zijn. Beschrijf beknopt, maar wel in duidelijk leesbare zinnen waar het over gaat.
Download het reflectiesjabloon en vul jouw reflecties in. Maak van het bestand een pdf-bestand met als naam:
reflecties-<jouw-naam>.pdf
PHP6 Refresh
Opgave 1, $_GET
In deze opgave kijken we terug hoe het ook alweer zat met $_GET. Deze variabele wordt gevuld als je een form invult met de method=GET.
<form action="/action_page.php" method="get">
<input type="text" id="name" name="name">
Maar deze code zorgt ervoor dat de parameters via de URL (link, web adres) worden doorgegeven. Stel in dit voorbeeld voer je de naam Ties in. Dan zie je de URL:
?name=Ties
Maak een PHP pagina die jouw naam van de URL leest en deze op het scherm toont. Je hoeft geen form te maken.
Bijvoorbeeld, de URL is:
localhost/phprefresh/opgave1.php?naam=Prince
Op het scherm verschijnt nu:
Welkom Prince!
(let op het uitroepteken achter de naam).
Inleveren
- de php-code in php-01-jouwnaam.php
Opgave 2, forms
We hebben in de vorige opgave met de $_GET gewerkt. Nu gaan we met een form de $_GET variabele vullen.
Je mag ook method="post" gebruiken, maar dat is lastige om te zien wat er dan gebeurt omdat de form variabelen niet via de URL worden verstuurd.
Maak een eenvoudig HTML form en vraag de gebruiker twee getallen in te voeren. Dat mag/kan in één veld, maar dat mogen ook in twee aparte velden.
Vermenigvuldig (keer-som) deze twee getallen.
Toon het resultaat op het scherm.
Bijvoorbeeld, stel je hebt 3 en 5 ingevuld dan toon je:
3 x 5 = 15
Inleveren
- php-02-jouwnaam.php - met je PHP code (form en berekening).
- php-02-jouwnaam.png - met je schermafdruk van de hele browser waarin je het resultaat laat zien.
Opgave 3, loops
Hoe zat het ook alweer met al die loops. In deze opgave gaan we twee loops maken een for-loop en een while-loop .
Zoek eerst even hoe het ook weer zat met die loops; hoe werken die ook alweer?
Maak twee loops. Maak een while loop en een for loop en druk de getallen 1 tot en met 20 af.
De output moet er als volgt uit zien:
Zorg ervoor dat de output er precies zo uitziet (compleet met de teksten boven de getallen)!
De getallen zijn dus rood en bold en tussen de getallen staat een spatie-streepje-spatie en achter het laatste getal staat niets meer.
Rood en bold ? Weet je niet meer hoe dat gaat. Zoek naar de juiste CSS code!
Inleveren
- php-03-jouwnaam.php - met je PHP code.
- php-03-jouwnaam.png - schermafdruk van jouw gehele browser met de juiste output.
Opgave 4, html refresh
Voor deze opgave moet je zelf één en ander opzoeken op internet. Dit hebben we nog niet eerder gehad, maar is wel iets dat soms erg handig kan zijn. We gaan een tijd afdrukken die automatisch loopt.
Zoek eerst uit hoe je de huidige tijd (in PHP) in uren en minuten op het scherm kan afdrukken.
Als je de tijd op het scherm laat zien dan veranderd deze alleen als je de pagina refreshed, probeer maar!
Er bestaat een zogenaamde HTML meta-tag die er voor zorgt dat je browser de pagina elke x seconden ververst. Zoek uit hoe dit werkt en laat de pagina die de tijd laat zien zichzelf elke 10 seconden verversen.
Controleer of jouw pagina zichzelf elke 10 seconde ververst.
Dit kan handig zijn als je een CRUD hebt gemaakt en je wilt dat de (Read) pagina zich elke paar minute ververst.
Opmerking: Om een tijd op het scherm te tonen kun je beter JavaScript gebruiken, maar we hebben het hier in PHP gedaan om de refresh te demonstreren.
Inleveren
- de php code in php-04-jouwnaam.php
Opgave 5, Euro
Maak een functie die als input een getal krijgt en dat als een 'net' Euro getal terug geeft. In onderstaand schema staat wat de functie moet doen.
Test | Uitkomst |
echo netEuro(12); | € 12.00 |
echo netEuro(12.5); | € 12.50 |
echo netEuro(12.6666); | € 12.67 |
Bij elk bedrag wordt dus afgerond op twee decimalen (centen) en er wordt een euro getal afgedrukt voor het bedrag.
Maak de functie netEuro en test (tenmiste) met de waarden zoals die hierboven zijn gegeven.
Inleveren
- php-05-jouwnaam.php - met je PHP code.
- php-05-jouwnaam.png - schermafdruk van jouw gehele browser met de juiste output.
Opgave 6, onvoldoendes
Kijk naar het filmpje: https://www.youtube.com/watch?v=INHM0S_8GHA |
En maak daarna een functie onvoldoendes($PHPCijfers);
De functie krijgt als input een array met getallen en als output wordt een array gegeven waarin alleen de onvoldoendes staan.
Voorbeeld:
$PHPCijfers=[4,5,4,5,6,6,5,8,7,6,4,8];
Dus de output van de functie wordt:
4,5,4,5,5,4
Omdat de output een array is kun je die afdrukken met print_r(). Door een <pre> ervoor te gebruiken is de output beter leesbaar.
Input | Output |
echo onvoldoendes([6,6,7]); | |
echo onvoldoendes([6,3,6,7]); | (array met één element ) 3 |
echo onvoldoendes($PHPCijfers); | (array met de volgende elementen) 4,5,4,5,5,4 |
Maak de functie en test met tenminste de drie gegeven test cases.
Je code ziet er dus ongeveer zo uit:
function onvoldoendes($array) {
...
...
...
}
echo "<pre>";
print_r( onvoldoendes([6,6,7]) );
print_r( onvoldoendes([6,3,6,7]) );
print_r( onvoldoendes($PHPCijfers) );
Let op de haakjes. Neem bijvoorbeeld regel 8.
De buitenste () horen bij de print_r() functie. De () na de onvoldoendes horen bij onze functie onvoldoendes() en de [] haken geven aan dat we een array gebruiken.
Probeer dit begrijpen want dit komt terug in frameworks (Yii en Laravel).
Op de plaats van de puntjes maak je jouw functie af.
Inleveren
- de php code in php-06-jouwnaam.php
- screenshot van jouw browser die de output toont
Opgave 7, Goedemorgen
Maak een PHP programmaatje dat afhankelijk van de tijd een boodschap afdrukt.
- Het uur is kleiner dan 12: "Goedemorgen".
- Het uur is 12 uur of groter én kleiner dan 18: "Goedemiddag".
- Het uur is groter dan 18: "Goedenavond".
Er is een PHP een functie om de huidige tijd te bepalen. Je hoeft alleen maar te kijken naar het uur.Het maakt immers niet uit of het 11:00 of 11:59 is, het uur is kleiner dan 12 dus is de boodschap 'Goedemorgen'.
Zoek zelf hoe je in PHP de tijd en het uur kan bepalen.
Zet je code in een functie en noem deze functie begroeting ).
De functie krijgt als input een naam mee.
De parameter (de naam) wordt achter de begroeting gezet en de complete begroeting wordt door de functie in een return terug gegeven.
Dus bijvoorbeeld, het is 4 uur 's middags en plaatst de volgende code:
Conditie | Input | Output |
Het is 16:00 uur | echo begroeting("Vasco"); | Goedemidag Vasco |
Het is 16:00 uur | echo begroeting("Jesse"); | Goedemidag Jesse |
Het is 11:59 uur | echo begroeting("Nadir"); | Goedemorgen Nadir |
Maak een functie en test tenminste met de bovenstaande test cases.
Om de conditie te testen hoef je niet te wachten tot het (bijvoorbeeld) 16:00 uur is. Je kunt in de code ook even tijdelijk de variabele waarin je uur staat instellen.
Stel je hebt ergens PHP code die ervoor zorgt dat $uur de waarde krijgt van het huidige uur. Dan kun je daarna even tijdelijk om te testen $uur=11
neerzetten.
Je code ziet er dus ongeveer zo uit:
function begroeting($naam) {
...
...
...
}
echo begroeting("Vasco");
echo begroeting("Jesse");
Inleveren
- php-07-jouwnaam.php - met je PHP code.
- php-07-jouwnaam.png - schermafdruk van jouw gehele browser met de juiste output.
Opgave 8, Optellen
Je gaat een functie maken die alle getallen uit een array die groter zijn dan 10 optelt.
Neem bijvoorbeeld dit array.
$array = [11,11,5,2,12,6,7,8,1,10,9];
Er zijn drie getallen groter dan 10. Dat zijn 11, 11 en 12. Opgeteld is dat 34. De functie geeft dus 34 terug.
Noem de functie telGroteGetallen(array)
Input | Output |
echo telGroteGetallen( [10,20,20] ); | 40 |
echo telGroteGetallen( [9, 10, 11] ); | 11 |
echo telGroteGetallen($array); | 34 |
De $array in de laatste test heeft de waarden zoals in het voorbeeld is gegeven.
Maak een functie en test tenminste met de bovenstaande test cases.
Inleveren
- php-08-jouwnaam.php - met je PHP code.
- php-08-jouwnaam.png - schermafdruk van jouw gehele browser met de juiste output.
Opgave 9a, vier letters
Je gaat een functie maken die alle woorden telt die minder dan vier letters hebben.
Neem bijvoorbeeld deze string.
$string = "Voor de vormgeving is het handig om te weten hoe het eruit komt te zien voordat je daadwerkelijk tekst gaat plaatsen.";
De string heeft 9 woorden kleiner dan vier letters, tel maar na!
Hoe doe je dit in PHP?
- Zet deze string om in een array. Tip: maak gebruik van de PHP-functie explode
- Maak een variabele teller en zet die op 0 (je hebt immers nog 0 woorden gevonden die kleiner zijn dan vier letters).
- Loop met een foreach loop door het array.
- Maak een if in de loop en test of het woord minder dan vier karakters heeft.
- Als de if waar is dan hoog je een teller op.
- Aan het einde van de loop heb je in je teller het aantal woorden dat kleiner is dan vier. Return deze waarde
Noem nu een functie kleineWoorden (string) die de string als parameter mee krijgt en die als output het aantal woorden kleiner dan vier letter terug geeft.
Input | Output |
echo kleineWoorden("dit is een voorbeeld"); | 3 |
echo kleineWoorden("a b c d"); | 4 |
echo kleineWoorden("abcd"); | 0 |
echo kleineWoorden($string); | 9 |
De $string in de laatste test is dus de string zoals gegeven in het voorbeeld. Test je code met tenminste de 4 gegeven tests
Maak een functie en test tenminste met de bovenstaande test cases.
Inleveren
- php-09a-jouwnaam.php - met je PHP cod
- php-09a-jouwnaam.png - schermafdruk van jouw gehele browser met de juiste output.
Opgave 9b, kleine woorden
Deze opgave is een vervolg-opgave van 7a.
Pas de functie kleineWoorden() aan zodat je aan de functie kan meegeven wat een klein woord is.
Stel je wilt alleen de woorden tellen die kleiner zijn dan 3 letters dan kun je de functie aanroepen met: kleineWoorden(3,$string) De functie telt dan alle woorden die kleiner zijn dat 3 karakters.
De $string in de testen is:
$string = "Voor de vormgeving is het handig om te weten hoe het eruit komt te zien voordat je daadwerkelijk tekst gaat plaatsen.";
Input | Output |
echo kleineWoorden(4,"dit is een voorbeeld"); | 3 |
echo kleineWoorden(3,"dit is een voorbeeld"); | 1 |
echo kleineWoorden(1,"dit is een voorbeeld"); | 0 |
echo kleineWoorden(0,"dit is een voorbeeld"); | 0 |
echo kleineWoorden(2,"a b c d"); | 4 |
echo kleineWoorden(6,"abcde"); | 1 |
echo kleineWoorden(4,$string); | 9 |
echo kleineWoorden(3,$string); | 6 |
echo kleineWoorden(10,$string); | 19 |
Maak een functie en test tenminste met de bovenstaande test cases.
Inleveren
- php-09b-jouwnaam.php - met je PHP cod
- php-09b-jouwnaam.png - schermafdruk van jouw gehele browser met de juiste output.
Opgave 10, Eindopgave
Stel je hebt een grid view (Read) en je hebt een kolom met een opmerking. De opmerking kan lang zijn en voor het overzicht wil je alleen het eerste deel van de opmerking afdrukken. Je wilt geen woorden afbreken want dat ziet er lelijk uit.
De opgave is dus om een functie te maken waarmee je een (lange) string afbreekt en alleen de eerst woorden laat zien zodat de totale lengte van de string niet langer is dan N karakters. N geef je mee aan de functie.
OK, lastig? Hier komt een voorbeeld.
Stel je hebt deze opmerking.
opmerking = "Deze student is erg goed in programmeren in PHP";
In jouw overzicht heb je ongeveer ruimte voor 32 karakters. Je roept dan de functie aan
echo breekAf(32, $string);
Als je afbreekt op 32 karakters dan krijg je:
Deze student is erg goed in prog
Nu hebben we een 'half' woord (prog) dus de output wordt:
Deze student is erg goed in
Input | Output |
echo breekAf(32, "Deze student is erg goed in programmeren in PHP"); | Deze student is erg goed in |
echo breekAf(18, "Deze student is erg goed in programmeren in PHP"); | Deze student is |
echo breekAf(19, "Deze student is erg goed in programmeren in PHP"); | Deze student is erg |
echo breekAf(20, "Deze student is erg goed in programmeren in PHP"); | Deze student is erg |
echo breekAf(11, "Deze student is erg goed in programmeren in PHP"); | Deze |
echo breekAf(24, "Deze student is erg goed in programmeren in PHP"); | Deze student is erg goed |
echo breekAf(3, "Deze student is erg goed in programmeren in PHP"); | <lege string> |
Maak een functie en test tenminste met de bovenstaande test cases.
Verbetervoorstel
Indien het getal groter is dan de hele regel, bijvoorbeeld in dit geval:
echo breekAf(200, "Deze student is erg goed in programmeren in PHP");
Hoe kun je je code optimaliseren voor dit geval? Hoe kun je ervoor zorgen dat jouw code sneller wordt uitgevoerd?
Schrijf in een paar regels hoe je dit kan doen. Doe dit in de vorm van een instructie aan een andere programmeur (dit kan in één paragraaf).
Inleveren
- php-10-jouwnaam.php - met je PHP code
- php-10-jouwnaam.png - schermafdruk van jouw gehele browser met de juiste output.
- Verbetervoortsel-jouwnaam.pdf - Verbetervoorstel in PDF
Version control, GIT en VSC
Als je met een framework dan pas je vaak meerdere bestanden aan. Soms maak je fouten en weet je even niet meer waarom het opeens niet meer werkt. Dan is het handig als je even naar de vorige stap terug kan.
Dat kan als je version control toepast. In VCS kun je GIT daarvoor gebruiken.
In de module DevOps is uitgelegd hoe dit werkt. Als deze module niet beschikbaar is, dan loop je wat voor, en zul je zelf even moeten opzoeken hoe je GIT en VSC kan gebruiken.
Als GIT goed is geïnstalleerd, dan zie je het volgende in jouw VSC-editor.
Bij het rode rondje zie je de wijzigingen die je hebt gemaakt.
Bij het oranje rondje kun je een korte versienaam intypen en met commit, kun je deze versie dan 'commiten'.
Inleveren
Laat zien dat GIT werkt in je browser door een scherm afdruk van je gehele VCS in te leven.
Herhaling Arrays en Loops
Opgave A
Pas de code aan zodat het land én de hoofdstad nast elkaar op één regel wordt afgedrukt.
Output
Nederland: Amsterdam
België: Brussel
Duitsland: Berlijn
Code
<?php
$landen = [
"Nederland" => [
"hoofdstad" => "Amsterdam",
"inwoners" => 17000000,
"talen" => ["Nederlands", "Fries"]
],
"België" => [
"hoofdstad" => "Brussel",
"inwoners" => 11500000,
"talen" => ["Nederlands", "Frans", "Duits"]
],
"Duitsland" => [
"hoofdstad" => "Berlijn",
"inwoners" => 83000000,
"talen" => ["Duits"]
]
];
foreach ($landen as $land => $info) {
echo $info['hoofdstad'] . "<br>";
}
?>
Opgave B
De PHP code heeft een serie temperaturen per dag. Er zijn twee functies die het gemiddelde van de twee laagste waarden berekent en een functie die het gemiddelde van de twee hoogste waarden berekend.
Het programma werkt niet helemaal want er wordt tekens 0 afgedrukt.
Bestudeer de code en haal de (twee) fouten eruit. Hiervoor hoef je slechts twee regels aan te passen.
<?php
// Array met temperaturen per uur voor drie dagen (24 waarden per dag)
$threeDays = [
'Day 1' => [12, 13, 14, 15, 11, 10, 9, 8, 7, 6, 5, 4, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],
'Day 2' => [15, 14, 13, 16, 17, 18, 19, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4],
'Day 3' => [10, 11, 12, 13, 14, 15, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1]
];
// Functie om het gemiddelde van de twee laagste waarden te berekenen
function averageLowestTwo($temperatures) {
sort($temperatures);
$lowestTwo = array_slice($temperatures, 0, 2);
return array_sum($lowestTwo) / count($lowestTwo);
}
// Functie om het gemiddelde van de twee hoogste waarden te berekenen
function averageHighestTwo($temperatures) {
rsort($temperatures);
$highestTwo = array_slice($temperatures, 0, 2);
return array_sum($highestTwo) / count($highestTwo);
}
// Loop door elke dag heen en bereken de gemiddelden
foreach ($threeDays as $day => $temps) {
echo "$day:\n";
$avgLowest = 0;
$avgHighest = 0
echo "Gemiddelde van de twee laagste temperaturen: $avgLowest\n";
echo "Gemiddelde van de twee hoogste temperaturen: $avgHighest\n";
echo "<br>";
}
?>