Skip to main content

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:

image-1656091001501.png

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?

  1. Zet deze string om in een array. Tip: maak gebruik van de PHP-functie explode
  2. Maak een variabele teller en zet die op 0 (je hebt immers nog 0 woorden gevonden die kleiner zijn dan vier letters).
  3. Loop met een foreach loop door het array.
  4. Maak een if in de loop en test of het woord minder dan vier karakters heeft.
  5. Als de if waar is dan hoog je een teller op.
  6. 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.

Screenshot 2023-02-13 171251.png

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.