In de eerste les krijg je een inleiding in PHP; je leert wat de voorwaarden zijn voor het draaien van PHP-applicaties. Daarnaast leer je de basisbeginselen van het schrijven van PHP.
Algemene informatie over PHP
PHP is een open-source, server-side scripttaal. Dit houdt in dat de code wordt uitgevoerd op de server. Op het moment dat een bezoeker een webpagina opvraagt, genereert PHP zogenaamde “output” die wordt teruggestuurd naar de gebruiker.
Omdat PHP niet op de computer van de bezoeker wordt uitgevoerd (in tegenstelling tot bijvoorbeeld html, css of javascript) maar op de server, moet de server geschikt zijn voor PHP. Wanneer je een domeinnaam met hosting aanschaft, zit hier vaak (maar niet altijd!) PHP ondersteuning bij, je hoeft dan zelf niets te doen om de PHP te kunnen laten “draaien”. Mocht je willen experimenteren met PHP op je eigen computer, dan kun je er voor kiezen om een webserver te installeren. [ TODO: een pagina maken met instructies over hoe je een webserver installeert ]
Doordat je via PHP databases kunt benaderen, kun je met PHP webapplicaties ontwikkelen. Een voorbeeld van een webapplicatie is bijvoorbeeld een gastenboek, een nieuwssysteem, een CMS (Content Management System, waarmee je een website kunt bijwerken) of een adresboek.
Voorbeeld van een html pagina opvragen
Voorbeeld van een PHP pagina opvragen
Om PHP applicaties te kunnen ‘draaien’ moet je rekening houden met de volgende factoren:
- Webserver met PHP ondersteuning. Wanneer je normaalgesproken een HTML pagina schrijft, kun je deze lokaal, op je computer bekijken. Voor webpagina’s met daarin PHP is een webserver vereist die PHP kan “lezen” en op basis daarvan uitvoer genereert.
- Pagina’s met PHP moeten eindigen op ‘.php’. Heb je een webpagina met daarin PHP code staan, dan dient de extensie van deze webpagina niet ‘.html’ maar ‘.php’ te zijn. Doe je dit niet, dan heeft de webserver niet door dat er PHP in je pagina zit en wordt deze PHP code dus niet uitgevoerd.
- (MySQL) Database. Mocht je een gastenboek of iets dergelijks willen bouwen, dan heb je ook een database nodig waar je met behulp van PHP gegevens in kan opslaan.
- Client side is alles wat gebeurt aan de kant van de bezoeker van je website. Javascript of HTML is een voorbeeld van een ‘client side’ taal.
- Server side is alles wat gebeurt aan de kant van waar je website staat. PHP is serverside. Het genereert uitvoer wat weer kan worden getoond aan de ‘client-side’.
Wat heb je nodig voor deze cursus
Voor deze cursus wordt er vanuit gegaan dat je zelf een webserver op je computer of mac hebt draaien en dat alle PHP bestanden in de map “htdocs” worden opgeslagen. Er wordt ook vanuit gegaan dat je je website benadert via http://localhost of via http://localhost:8080 .
Wanneer je (terwijl je webserver draait) op je computer met een browser naar http://localhost of http://localhost:8080 gaat, worden stiekem de PHP bestanden getoond die in de map ‘htdocs’ staan.
Stel, je hebt een PHP bestand dat je als “test.php” hebt opgeslagen in de ‘htdocs’ map op je computer. Wanneer je naar http://localhost/test.php of http://localhost:8080/test.php surft, wordt het PHP bestand door de webserver “uitgevoerd” en wordt het resultaat hiervan weergeven in het browservenster.
In de klas zal uitvoerig worden geëxperimenteerd met bovenstaande, dus maak je geen zorgen als je een en ander niet direct begrijpt.
De eerste stapjes in PHP
In dit hoofdstuk zie je verschillende codevoorbeelden voorbij komen. Het advies is om elk codevoorbeeld over te nemen in je code-editor, het bestand op te slaan als .php bestand en het resultaat te bewonderen in een browser.
Hello world
Een blok(je) PHP code moet tussen speciale tekens staan om te worden herkend als zijnde PHP code. Hieronder zie je een allereerste voorbeeld:
<?php echo "Hello World"; ?>
Wanneer je dit bestand opslaat als “test.php” en bekijkt in de browser, dan zie je als het goed is “Hello World”. Niks meer, niks minder. Blijkbaar kun je met behulp van het commando “echo” verschillende zaken tonen. In het codevoorbeeld hierboven hebben we 1 “instructie” geschreven, ook wel expressie genoemd. Een instructie sluit je altijd af met een puntkomma (;). Wanneer je tekst wilt tonen (of wilt toewijzen aan iets, zie verderop), moet je deze tekst altijd tussen aanhalingstekens zetten. Of je dubbele (“) of enkele (‘) gebruikt, maakt niet uit, zolang je maar dezelfde aanhalingsteken gebruikt voor het afsluiten als waar je ook mee hebt geopend.
PHP en HTML
Uiteraard is het mogelijk om PHP in HTML te plaatsen. De twee voorwaarden waar aan moet worden voldaan om het geheel te laten werken zijn:
- De php code moet tussen <? en ?> staan
- Het bestand moet worden opgeslagen als .php bestand
<!doctype html> <html lang="nl"> <head> <meta charset=utf-8> <title>Welkom op mijn website</title> </head> <body> <h1>Het is vandaag <?php echo date('d-m-Y');?></h1> </body> </html>
Wanneer je bovenstaande opslaat als “test2.php” en bekijkt in de browser, zul je zien dat na de tekst “Het is vandaag ” de datum wordt weergeven. date() is een php-functie waarmee je op verschillende manieren de huidige datum en tijd kunt weergeven. Meer over functies (en het zelf maken van functies) vind je terug in les 3. Mocht je je afvragen wat de getoonde HTML allemaal betekent, kijk dan op “Basiscursus HTML/CSS“.
Variabelen
In PHP is het mogelijk om (tijdelijk) gegevens op te slaan in zogenaamde variabelen. Variabelen moet je zien als “emmertjes” die gegevens kunnen bevatten. Variabelen kunnen de volgende soorten gegevens bevatten:
- String tekst wordt in PHP officieel een “string” genoemd. Een string moet je altijd tussen aanhalingstekens zetten.
- Integer een getal wordt in PHP een “integer” genoemd. Een getal hoef je niet tussen aanhalingstekens te zetten. Bijzonder: als je een getal wèl tussen aanhalingstekens zet, dan wordt het gezien als een stukje tekst en kun je er bijvoorbeeld niet mee rekenen.
- Boolean een boolean is altijd “waar” of “niet waar”. Booleans worden gebruikt om te registreren of iets gelukt is of niet. Een boolean kan ‘true’ of ‘false’ zijn. ‘true’ en ‘false’ moeten zonder aanhalingstekens worden toegewezen aan de boolean.
- Array een array kan meerdere waarden bevatten. Je zou bijvoorbeeld je klasgenoten in een array kunnen opslaan.
- $_GET en $_POST zijn arrays die formuliergegevens bevatten. Dit is nu nog moeilijk te begrijpen, maar wanneer je gegevens verstuurd met een formulier, en je gebruikt in de <form> tag als attribuut “method=post”, dan kun je op de pagina waar het formulier naar toe wordt verstuurd, de gegevens uitlezen in de $_POST array.
Hoe wijs je een waarde toe aan een variabele?
Om een waarde toe te wijzen aan een variabele, moet je rekening houden met een aantal factoren. Daarvoor kun je eerst beter het volgende voorbeeld bekijken:
<?php $name = "Jaap van der Veen"; $age = 29; $adult = true; $hobbies = array("Offroad rijden", "Vissen", "Films kijken"); $a = 4; $b = 5; $c = $a * $b; echo $name; ?>
Als je bovenstaand stuk code bekijkt, dan vallen de volgende zaken op:
- Blijkbaar kun je met het “=” teken waarden toewijzen aan variabelen. Het “=” teken wordt officieel een “toewijzingsoperator” genoemd.
- De naam van een variabele mag je zelf bepalen, maar moet beginnen met een $ (dollarteken) en mag geen spaties of streepjes bevatten. Underscores zijn wel toegestaan.
- Het toewijzen van een waarde aan een variabele wordt afgesloten met een puntkomma (;).
- Tekst moet blijkbaar tussen aanhalingstekens staan, een getal of true/false niet.
Wanneer je de inhoud van een variabele wilt tonen, kan je dat doen met het echo commando. Nu je waardes hebt toegewezen aan variabelen, kan je de variabelen overal binnen het document gebruiken.
Arrays
In bovenstaand voorbeeld zie je ook dat er een array wordt aangemaakt. De array bevat 3 stukjes tekst, elk gescheiden door een komma. In het volgende voorbeeld zie je nog wat meer voorbeelden van het maken van array’s en het tonen van een waarde uit een array:
<?php // een array kun je definiëren met array(), maar je kunt ook blokhaken gebruiken om aan te geven dat het een array moet worden: $hobbies = ['Offroad rijden', 'Vissen', 'Films kijken']; // een array kan niet alleen tekst, maar ook andere soorten waarden bevatten en mag over verschillende regels worden geplaatst, zolang er maar wordt afgesloten met een puntkomma(;) aan het einde: $movie = [ 'We are what we are', 2013, true, ['Ambyr Childers', 'Bill Sage', 'Julia Garner'] ]; echo $hobbies[1]; ?>
In bovenstaand voorbeeld zie je, naast de kennismaking met de manier van commentaar schrijven in PHP, dat je met behulp van blokhaken óók een array kunt definiëren. Om in vaktaal te spreken: de array $hobbies bevat drie strings. De array $movie bevat een string, een integer, een boolean en een array. Wanneer je een array definieert die weer een andere array bevat, spreek je van een “multidimensionale array”.
Waardes die aan een array worden toegewezen, krijgen een nummer, een “index” op basis van binnenkomst. Hiermee kan PHP en jij de waarde terugvinden wanneer dat nodig is. Het gekke is echter dat PHP altijd begint te tellen bij het getal 0. Wanneer je een waarde uit een array wilt tonen, geef je een echo commando aan, vervolgens de naam van de array en direct daar achteraan tussen blokhaken het nummer van de waarde die je wilt tonen. In bovenstaand voorbeeld wordt dus de tweede hobby getoond: vissen.
Associatieve Arrays
Hierboven leerde je dat PHP een nummertje toekent aan elke waarde die in een Array wordt gezet. Op zich is dit handig, maar het is niet altijd duidelijk. Soms is het handiger om elke waarde die in een array wordt gestopt zélf een index of label te geven. Gelukkig is dat mogelijk! Bekijk onderstaand voorbeeld waarin we nogmaals gegevens over een film in een array stoppen en de titel van een film tonen:
<?php // met behulp van array()... $movie = array( "title" => "We are what we are", "release_year" => 2013, "approved" => true, "actors" => array('Ambyr Childers', 'Bill Sage', 'Julia Garner') ); // met behulp van blokhaken... $movie2 = [ "title" => "The Conjuring", "release_year" => 2013, "approved" => true, "actors" => array('Vera Farmiga', 'Patrick Wilson', 'Lili Taylor') ]; // de titel van de tweede film tonen... echo $movie2['title']; ?>
Commentaar in PHP
Net als in andere talen is het mogelijk om ook in PHP commentaar op te nemen. Commentaar gebruik je bijvoorbeeld om je code uit te leggen, of om vast te leggen wanneer je er voor het laatst aan hebt gewerkt. Zie onderstaand voorbeeld voor 3 vormen van commentaar noteren in PHP:
<?php // met 2 slashes kun je commentaar op 1 regel noteren echo time(); # met een hashtag kun je óók commentaar op 1 regel noteren echo '<h1>Dit is een HTML kop1</h1>'; /* Wil je commentaar op meerdere regels hebben, gebruik dan dezelfde notatie voor commentaar als CSS */ echo "<p>Een HTML paragraaf met tekst</p>"; ?>
Waardes aan elkaar vast koppelen
In PHP is het mogelijk om waarden aan elkaar vast te “lijmen” bij de uitvoer. Dit doe je met een punt (.). Zie hieronder voor een voorbeeld van toepassing:
<?php $name = "Jaap van der Veen"; echo 'Hello, ' . $name; $firstname = "Bart"; $lastname = "Feenstra"; $fullname = $firstname . " " . $lastname; ?>
Zoals je ziet kun je het lijmteken inzetten wanneer je een variabele aan een weergeven tekst wilt koppelen. Ook kun je de punt gebruiken wanneer je twee of meer variabelen wilt samenvoegen in een nieuwe variabele.
Voorbereidingen + samenvatting om succesvol te kunnen starten met les 2
Voor les 2 is het van groot belang dat je de basis-schrijfwijze (officieel syntax genoemd) van PHP kent. Een ultra-korte samenvatting:
- Een stuk PHP code, hoe groot of hoe klein, begint altijd met “<?php” en eindigt altijd met “?>”.
- Een instructie wordt altijd afgesloten met een puntkomma (;).
- Het “=” teken wordt een toewijzingsoperator genoemd. Hiermee kan je waarden toewijzen aan variabelen.
- Een variabelenaam wordt altijd vooraf gegaan door het dollarteken ($) en mag geen spaties of koppelstrepen bevatten.
- Variabelen kunnen van het type string (tekst), integer (getal), boolean (waar of onwaar) of array (een collectie van waardes) zijn.
- Je kunt strings aan elkaar “vastlijmen” met behulp van de punt (.).
Opdracht voor les 2
Na les 1 krijg je van de docent een kleine praktische opdracht om de behandelde stof van les 1 te kunnen oefenen. De uitwerking stuur je uiterlijk een dag voor les 2 terug naar de docent.
Mooie cursus!
Hi,
i did “right-click” >> translate ,
and i have learned something.
Nice exercises! Thanks
Eye
Prachtige cursus. Over duidelijk ! Een aanrader voor ieder die php op een duidelijke manier wil leren. Goed werk!
Helder geschreven cursus, goed te volgen.
Ik probeerde in plaats van de titel de “acteurs” te printen.
Kreeg de volgende foutmelding: Notice: Array to string conversion in C:\xampp\htdocs\movies.php on line 14
Array
Hoe los je dit op?
Heb het geprobeerd met print_r functie maar werkt ook niet.
Beste Sido, bedankt voor je compliment en vraag.
Ik weet zo even niet welk codevoorbeeld je als basis hebt gebruikt, maar realiseer je dat je heel expliciet moet aangeven welk item uit een array je wilt tonen. Gokkend op basis van de voorbeelden die je hebt gebruikt, kun je proberen om “echo $movie[‘actors’][0];” te gebruiken om de eerste acteur te tonen. Wil je alle acteurs tonen, dan zou je “print_r($movie[‘actors’]);” kunnen gebruiken. Wil je meer controle over hoe je de acteurs toont, dan zou je na les 2 kunnen proberen om de acteurs met behulp van een for() loop te tonen:
";
}
?>
Succes!
Kan je met php formulieren mee instellen en programmeren?
Dag Sander, dat klopt helemaal!