Werkboek. Sectie Informatica. Nijmeegse Scholengemeenschap Groenewoud



Vergelijkbare documenten
Koppeling met een database

PHP en een MySQL database.

Inhoudsopgave Disclaimer... 3 Voorwoord... 4 Inleiding... 5 Het downloaden van XAMPP... 7 Het installeren van XAMPP... 8 Joomla installeren op

Formulieren maken met Dreamweaver CS 4/CS 5

Les W-04: Een introductie in PHP

Kies File>New>Blank Page>PHP. Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site

Een database gebruiken

Les 9: formulier controle met javascript.

Programmeren voor het web met PHP

Les 15 : updaten van gegevens in de database (deel2).

Test Joomla op je PC 1

Inhoudsopgave... 1 Disclaimer... 3 Voorwoord... 3 Inleiding... 5 Het downloaden van XAMPP... 7 Het installeren van XAMPP... 8 Joomla installeren op

Handleiding Mijn Kerk

Variabelen en statements in ActionScript

Een website maken met databasetoegang.

Handleiding Websitebeheer

HTML. Formulieren. Hans Roeyen V 3.0

Automatisering voor Financiële Dienstverleners. Werken met Queries en Merge Documenten. For more information visit our website at

Handleiding bij WSM MailformGenerator

A.C. Gijssen. 0.3 PHP en MySQL

EBUILDER HANDLEIDING. De Ebuilder is een product van EXED internet EXED CMS UITLEG


De tag aan het begin van het PHPscript is "<?php" aan het einde van het PHPscript gebruik je "?>".

Handleiding Tridion voor authors en editors

van PSD naar JavaScript

Central Station. CS website

Ooievaarspas.nl. Handleiding voor aanbieders: beheeromgeving

Handleiding CMS VOORKANT

De Kleine WordPress Handleiding

Handleiding Wordpress

Web building gevorderden: CSS & JavaScript. Karel Nijs 2008/11

Deze kaart kun je gebruiken om uiteindelijk een SMS te versturen naar bijvoorbeeld je ouders, je vrienden of naar iemand van je klas

Inhoudsopgave. versie 0.8

Quick Guide VivianCMS

OneDrive voor bedrijven en scholen

Quick Guide VivianCMS

Handleiding. HetSchoolvoorbeeld.nl. HetSchoolvoorbeeld 2.1. Websites voor het onderwijs. Websites Social media Mediawijsheid Grafisch ontwerp

Handleiding website. Inloggen Start uw internet browser en ga naar

Subrapporten. 5.1 Inleiding

Ga naar en log in met de gebruikersnaam en wachtwoord verkregen via mail.

Handleiding Wordpress

TeD Tekst en Design. Basisinformatie voor klein gebruik van het cms Made Simple

Foutcontrole met Javascript

Rapporten. Labels en Rapporten in Atlantis 1. Atlantis heeft twee manieren om output te genereren: 1. labels 2. rapporten (reports)

PvdA websites Quick Start voor het werken met het Hippo CMS

Mei. Handleiding - Publisher Tool 1

16. Web Station. In dit hoofdstuk komen de volgende onderwerpen aan bod:

Elektronisch werkbriefje

Elektronisch werkbriefje

GEBRUIKERSHANDLEIDING Content Management Systeem. Gebruikershandleiding RelaxWeb CMS

Onze nieuwsbrief software maakt het ook mogelijk om de resultaten van uw mailing te volgen en voldoet uiteraard aan de Opt-In en Opt-Out regels.

Trippeltrap Content Management System

Handleiding website. Inloggen Start uw internet browser en ga naar Laatst bijgewerkt: 17 mei 2008

Handleiding: Whitelabel Customersite

Handleiding voor het maken van een online enquête formulier. Google Drive toepassing

In het CMS is het mogelijk om formulieren aan te maken. Voorafgaand een belangrijke tip:

Handleiding CrisisConnect app beheersysteem

Handleiding om uw website/webshop aan te passen

Factuur Lay-out / Factuur Template

In dit hoofdstuk maak je kennis met PHP. Hoe werkt deze. programmeertaal? En hoe is het ontstaan? Ook leer je welke editors

Handleiding CrisisConnect app beheersysteem

Mach3Framework 5.0 / Website

ideal Betaal Formulier (Ondersteund o.a. ideal, MisterCash, Direct E-Banking en Credit Card)

EndNote Web handleiding

Formulier maken en opvangen met php

Lined Content Management System v.2 (LCMS 2)

Handleiding voor Zotero versie 2.0

OFFICE 365. Start Handleiding Leerlingen

Inleiding. - Teksten aanpassen - Afbeeldingen toevoegen en verwijderen - Pagina s toevoegen en verwijderen - Pagina s publiceren

Handleiding RS Form! 1.0.4

Inloggen. In samenwerking met Stijn Berben.

OneNote 2013 Snelstartgids

Verbinden met FTP server

OFFICE 365. Start Handleiding Medewerkers

Handleiding gebruik webmail Roundcube maart 2010

Miniles gegevensbanken bevragen met SQL

Hiervoor heeft u toegang nodig met uw persoonlijke account. Vraag uw account aan, aan de hoofd beheerder.

IMAP-handleiding Bookinto

Macro s. 4.2 Een macro maken

Werkinstructie. voor vreemdelingenadvocaten

Handleiding CMS Online Identity Webontwikkeling. Handleiding CMS

IQ LEADS Adres: Curieweg 8E Postcode: 2408 BZ Plaats: ALPHEN AAN DEN RIJN Telefoon: (0172)

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.

Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby?

ActiveBuilder Handleiding

Formulieren en waarden posten naar een view

Kies [paginas]: Een lijst met alle paginas verschijnt. Muis-over en er verchijnen opties per pagina: Bewerken prullenbak bekijken

Les 12 : database koppeling, opmaken van template, webstructuur en afdrukken van gegevens. (deel2).

HANDLEIDING TEAMPAGINA S MIJNCLUB.NU

HANDLEIDING. WordPress LAATSTE VERSIE: RODER!CKVS WEBDESIGN & WEBHOSTING

Dynamische websites met PHP (basis) Karel Nijs 2010/09

Handleiding opmaken Wageningen UR Blog. Oktober 2015

Om met Symbaloo te werken, moet u zich aanmelden bij de website van Symbaloo.

Globale kennismaking

OUTLOOK ACCOUNTS POSTVAKKEN SORTEERREGELS HANDTEKENINGEN

Databases - Inleiding

2 Eisenanalyse. 2.1 Functionele eisen het UseCaseDiagram

Transcriptie:

Werkboek Sectie Informatica Nijmeegse Scholengemeenschap Groenewoud

Inhoudsopgave INHOUDSOPGAVE----------------------------------------------------------------------- 2 OVER DIT WERKBOEK ------------------------------------------------------------------ 3 INTRODUCTIE IN PHP ------------------------------------------------------------------ 4 WAAR WORDT PHP VOOR GEBRUIKT?------------------------------------------------ 5 PHP: EEN EENVOUDIG VOORBEELD --------------------------------------------------- 6 HET PRINT STATEMENT ---------------------------------------------------------------- 8 PHP VOOR DYNAMISCHE WEBPAGINA S --------------------------------------------10 PHP CODE FORMAT --------------------------------------------------------------------12 WERKEN MET VARIABELEN IN PHP --------------------------------------------------13 HET GEBRUIK VAN CONTROLE STRUCTUREN IN PHP ------------------------------16 OMGAAN MET STRINGS IN PHP ------------------------------------------------------18 HET GEBRUIK VAN MULTIPASS SCRIPTS--------------------------------------------21 PHP EN DATABASES -------------------------------------------------------------------23 PHP EN HET VALIDEREN VAN FORMULIERGEGEVENS------------------------------30 PHP EN E-MAIL-------------------------------------------------------------------------33 HET GEBRUIK VAN DE FUNCTIE INCLUDE()-----------------------------------------34 OEFENOPDRACHTEN -------------------------------------------------------------------36 EINDOPDRACHT: EEN WEBBASED MUZIEKSYSTEEM -------------------------------39 PHP en MySQL in het voortgezet onderwijs Bladzijde - 2

Over dit werkboek Leerdoelen Dit werkboek is een introductie op PHP. Het is de bedoeling dat je tijdens de praktijklessen de voorbeelden uitprobeert en de opdrachten maakt om zodoende een goede basis te krijgen in het werken met PHP. Over dit werkboek Dit werkboek is een introductie op PHP. Er wordt van uitgegaan dat je over geen enkele kennis beschikt van PHP of programmeren. Maar in dit werkboek worden wel enkele belangrijke programmeerconcepten uitgewerkt waardoor het voor sommigen misschien erg pittig kan zijn. Maak je geen zorgen over het feit dat sommige ideeën erg ondoorzichtig lijken probeer gewoon te begrijpen wat de voorbeelden feitelijk doen zonder je al te zeer druk te maken over de details in de scriptcode. Dat geldt zeker voor het begin zo. PHP zal je op den duur enkele krachtige instrumenten in handen geven waarmee je interactieve websites kunt maken. PHP versus JavaScript Dit werkboek is gemaakt om te gebruiken als onafhankelijk leerboek, maar het vormt tegelijkertijd een onderdeel van het cursusmateriaal voor Webontwikkeling, waartoe ook JavaScript behoort. Er zal een aantal keren een vergelijking worden gemaakt tussen PHP en JavaScript. Het gebruik van voorbeelden Je treft in dit boek een aantal voorbeelden aan. Het beste is om deze over te typen. Daardoor kun je meer praktische vaardigheid ontwikkelen. Je zult waarschijnlijk denken dat het eenvoudiger is om die voorbeelden te downloaden en in de editor te laden. Dat is natuurlijk wel zo, maar daardoor wordt het moeilijker de essenties van PHP te doorgronden en te waarderen. Het is net als alle andere talen: veel doen, door herhaling leer je meer. Het is beter dan alleen maar te luisteren naar een leraar of medeleerling die zegt hoe het moet. VEEL SUCCES! PHP en MySQL in het voortgezet onderwijs Bladzijde - 3

Introductie in PHP Leerdoelen In dit hoofdstuk leer je de achtergronden van PHP, de relatie met andere vergelijkbare scripting talen en hoe het zich verhoudt tot JavaScript Wat is PHP? PHP is een server-side scripting taal. PHP stond oorspronkelijk voor Personal Home Page tools: ontworpen door Rasmus Lerdorf in 1994 en vrij ter beschikking gesteld op Internet. Sindsdien is het door vele programmeurs omarmd en ontwikkeld waardoor het een krachtige en betrouwbare ontwikkelomgeving is geworden die nog steeds vrij te gebruiken is. In PHP zijn veel elementen van andere programmeertalen geleend, zoals C en Perl. Maar het is ook zo ontworpen dat het eenvoudig in het gebruik is. De belangrijkste informatiebron voor PHP vind je op Internet op het volgende adres: www.php.net Websites die gebruik maken van PHP hebben vaak dit logo: PHP en zijn concurrenten PHP is een van de grote drie server-side scripting talen. De andere zijn: ASP: Active Server Pages, ontwikkeld door Microsoft en alleen maar beschikbaar op het Windows platform. JSP: Java Server Pages, ontwikkeld door Sun en alleen maar te gebruiken in combinatie met een Java Web Server. De belangrijkste voordelen van PHP boven de andere twee zijn: Vrij: PHP is zowel gratis als ook onder geen enkele softwareverkoper onder controle Platformonafhankelijk: is niet beperkt tot een enkel besturingssysteem of webserver Krachtig: PHP heeft uitstekende faciliteiten om te kunnen samenwerken met databases, grafische bestanden, XML en PDF PHP versus JavaScript De fundamentele verschillen tussen PHP en JavaScript zijn: JavaScript Is een cliënt-side scripting taal Statements worden door de webbrowser gerund Scripts worden normaliter gerund na een event Kan de pagina veranderen nadat hij eerst wordt getoond PHP Is een server-side scripting taal Statements worden gerund door de webserver De scripts worden uitgevoerd als de server de pagina laadt De pagina kan niet worden gewijzigd nadat deze naar de browser is verstuurd. PHP en MySQL in het voortgezet onderwijs Bladzijde - 4

Waar wordt PHP voor gebruikt? Leerdoelen Hier wordt uit de doeken gedaan waarvoor je PHP allemaal kunt gebruiken. De meeste dingen komen in latere paragrafen uitgebreider aan de orde. Benaderen van databases Een PHP script kan overweg met een groot aantal relationele databases door gebruik te maken van SQL. PHP kan de resultaten van SQL-queries in HTML-formaat weergeven. PHP bezit een aantal functies waarmee je standaard SQL bewerkingen kunt uitvoeren op verschillende database management systemen (DBMS): Verbinding met de DBMS server m.b.v. gebruikersnaam en wachtwoord. Gebruik van CREATE, SELECT, INSERT en UPDATE SQL statements Het ontvagen van resultaten en het kunnen benaderen van de waardes van rijen en kolommen. Deze bewerkingen worden ondersteund door DBMS pakketten waaronder dbase, Informix, msql, Oracle en Sybase Bewerken van webformulier gegevens Een PHP script kan gegevens ontvangen uit een webformulier; de gegevens uit dat formulier kunnen worden bewerkt, opgeslagen in een bestand of een database of verzonden via e-mail naar iemand. De gegevens uit een webformulier kunnen ook worden gevalideerd aan server kant. Bestands operaties Een PHP script kan bestanden op de server benaderen (ongeacht OS) Een PHP script kan ook de inhoud van mappen en bestanden lezen en schrijven. Netwerk operaties PHP scripts kunnen netwerk operaties uitvoeren zoals het versturen en het ontvangen van e-mails. PHP scripts kunnen contact maken met andere netwerkservers. Het draaien van programma s Belangrijk punt Een PHP script kan programma s op de computer laten draaien. De instelling hiervoor is meestal om veiligheidsredenen (standaard) uitgezet. Een belangrijk punt is dat je moet begrijpen dat PHP code nooit naar de browser wordt verstuurd. Je kunt daarom nooit de code in beeld krijgen. Als een webserver een PHP script laadt dan wordt door de server: de ingebouwde PHP code uitgevoerd tekst door het PHP script gegenereerd, ingebed in HTML de HTML pagina naar de browser verstuurd De browser ziet dus alleen maar de uiteindelijke HTML pagina PHP en MySQL in het voortgezet onderwijs Bladzijde - 5

PHP: een eenvoudig voorbeeld Leerdoelen Je gaat nu je eerste PHP script schrijven en het resultaat ervan bekijken in een web browser. PHP: een eenvoudig voorbeeld Aandachtspunten m.b.t. dit script Gebruik van kladblok Het script uitvoeren Een eenvoudig voorbeeld van een PHP script: <html> <head> <title>een eenvoudig voorbeeld van een PHP script</title> </head> <body> <p> print( "Deze pagina is gegenereerd door PHP!" ); </p> </body> </html> De PHP code is verwerkt tussen de standaard HTML code; in dit voorbeeld is de PHP code geplaatst tussen de en tags. Al het andere is normaal HTML. De HTML tags worden in blauw weergegeven. De begin- en eindtags van PHP in rood. PHP scripts dien je op te slaan met de extensie:.php OPDRACHT: typ de bovenstaande code over in de editor en sla het bestand op als hallo.php in de public.htm map Het is erg belangrijk dat je het bestand opslaat met de.php extensie. Als dat namelijk mislukt kan de server de PHP code in het document niet parsen. Als kladblok automatisch de extensie.txt er achter plaatst, kun je het beste het bestand eerst als.txt opslaan en vervolgen in de verkenner het bestand een nieuwe naam geven en de.txt vervangen door.php. Er zijn een aantal dingen welke je beslist moet doen alvorens je de PHP bestanden succesvol kunt zien. Volg deze regels zorgvuldig op anders zal het niet lukken: Je moet je pagina s online bekijken of offline als je een webserver op je machine hebt staan met ondersteuning van PHP. Alleen dan kan de code geparsed worden. Het zien van je pagina s Start de browser. Typ op de adresbalk de juiste URL. Druk op Enter. Je krijgt dan een pagina te zien die er ongeveer zo uitziet: PHP en MySQL in het voortgezet onderwijs Bladzijde - 6

broncode Als je kijkt naar de broncode van deze getoonde webpagina dan ziet die er als volgt uit: De PHP code is verdwenen en vervangen door tekst die door het script is gegenereerd. Dat is gebeurd tijdens het runnen van het script op de webserver. Onthoud goed; je mag nooit PHP code in de broncode van een webpagina aantreffen. Als dat wel het geval is heb je ergens een fout gemaakt in het script. Om het bekijken van bestanden gemakkelijker te maken kun je in plaats van iedere keer de volledige URL in te typen ook een map in de public.htm map aanmaken waarin je je scripts plaatst die je wilt testen. Ik heb voor dit werkboek op de server een map werkboek aangemaakt. Als je nu het adres van de webserver intypt, moet je iets te zien krijgen dat er zo uitziet (zorg dat er geen index.html of index.php in de public.htm map staat): Als je op de link werkboek klikt, krijg je de bestanden in de map te zien. Door nu op de bestanden te klikken worden de script uitgevoerd. Je kunt het beste de link naar de map met bestanden op de webserver bij je favorieten zetten waardoor je snel toegang hebt tot je bestanden. PHP en MySQL in het voortgezet onderwijs Bladzijde - 7

Het print statement Leerdoelen Door een tweede voorbeeld uit te voeren krijg je meer inzicht in het belangrijkste statement: print(). PHP: een eenvoudig script Een PHP script wordt opgebouwd uit een aantal opeenvolgende statements die worden gescheiden door puntkomma s. Het belangrijkste statement is print: dit statement genereert tekst dat aan de webpagina wordt toegevoegd. Een print statement heeft de volgende basisvorm: print( dit is een stuk tekst ); Dit voorbeeld voegt de tekst dit is een stuk tekst toe aan de webpagina. Op de vorige bladzijde zagen we een voorbeeld van het gebruik van het print statement. OPMERKING: in plaats van print kan ook echo als statement gebruikt worden. PHP versus JavaScript Het PHP print statement komt overeen met de JavaScript methode document.write(). In PHP: print( dit is een stuk tekst ); In JavaScript: document.write( dit is een stuk tekst ); 2 e voorbeeld met print statement Probeer het volgende script ook uit. Noem het hallo2.php, sla het op de de public.htm map en voer het script uit door het in je browser op te roepen. <html> <head> <title>een tweede eenvoudig voorbeeld</title> </head> <body> print( "<h1>een eenvoudig PHP voorbeeld</h1>" ); print( "<p><strong>deze pagina gebruikt PHP!</strong></p> " ); <p>php code kan op flexibele manier geplaatst worden print( " tussen normale HTML code." ); </p> </body> </html> PHP en MySQL in het voortgezet onderwijs Bladzijde - 8

resultaat Het resultaat zal er ongeveer zo uitzien: Als je vervolgens naar de broncode van de HTML pagina kijkt, zal die er ongeveer zo uitzien: <html> <head> <title>een tweede eenvoudig voorbeeld</title> </head> <body> <h1>een eenvoudig PHP voorbeeld</h1> <p><strong>deze pagina gebruikt PHP!</strong></p> <p>php code kan op flexibele manier geplaatst worden tussen normale HTML code.</p> </body> </html> PHP en MySQL in het voortgezet onderwijs Bladzijde - 9

PHP voor dynamische webpagina s Leerdoelen Hier leer je hoe je met PHP gegevens van webformulieren kunt ophalen, veranderen en weergegeven waardoor er iedere keer wijzigingen optreden in de webpagina s. Dynamische webpagina s Eenvoudig voorbeeld Het HTML formulier De HTML code die door PHP wordt gegenereerd kan invoergegevens gebruiken om dynamische webpagina s te maken, gebaseerd op de waarden van de invoergegevens. Die gegevens kunnen komen uit een webformulier of uit andere bronnen. Laten we eens een eenvoudig voorbeeld bekijken: We halen een naam uit een webformulier op en laten die zien als onderdeel van een welkomstbericht. Hier is de HTML code die je nodig hebt. Typ de code over en sla het op in je public.htm map onder de naam halloform.html : <html> <head> <title>eenvoudig PHP voorbeeld 3</title> </head> <body> <form method="get" action="hallojij.php"> <p>typ hieronder je naam in. <p> Klik op de knop: <strong>verstuur</strong></p> <p><input type="text" size="25" name="naam"></p> <p><input type="submit" value= Verstuur ></p> </form> </body> </html> Opmerking Let erop dat het formulier als een.html bestand wordt opgeslagen. Er is geen enkele reden om dat bestand als een.php bestand op te slaan omdat er geen enkele PHP code instaat. Het formulier bevat een variabele name. Deze variabele bevat straks de tekst die de gebruiker in het tekstvak intypt. De action in het formulier bepaalt dat de server het bestand hallojij.php moet uitvoeren als er op de knop wordt geklikt. Dat bestand gaan we nu maken. Het script hallojij.php Typ het volgende script in de editor en sla het op als hallojij.php in je eigen map. <html> <head><title>hallo print( $name ); </title> </head> <body> <h1>hallo print( $name ); </h1> </body> </html> Opmerking In het script verwijst de variabele $name naar de variabele in het invoerveld van het invulformulier dat door PHP door middel van de HTTP GET methode wordt overgedragen. PHP en MySQL in het voortgezet onderwijs Bladzijde - 10

Hoe ziet het er uit? Als je het formulier in je browser laadt, kan het er zo uitzien: Na invullen en klikken op de verstuurknop krijg je onderstaand scherm: Bijbehorende HTML broncode <html> <head><title>hallo Piet </title> </head> <body> <h1>hallo Piet</h1> </body> </html> PHP en MySQL in het voortgezet onderwijs Bladzijde - 11

PHP Code Format Leerdoelen Hier leer je dat er verschillende formats zijn die je kunt gebruiken om PHP code in te bedden in webpagina s en hoe je commentaar aan je code kunt toevoegen. PHP Code formats Er bestaan 3 manieren om PHP in HTML code in te bedden: De eenvoudigste manier is die om de code tussen de volgende tags te plaatsen: <? code <? print( Dit is PHP ); Deze methode kan problemen opleveren als PHP gebruikt wordt in combinatie met XML omdat XML ook gebruik maakt van deze tags. Daarom zullen we deze manier in dit werkboek niet gebruiken. stijl Als PHP samen met XML gebruikt wordt is het raadzaam dat je deze stijl gebruikt. Dit is de meest gebruikte methode. We zullen die verder in dit werkboek blijven gebruiken. print( Dit is PHP ); <script> tag stijl Als alternatief, maar wel een beetje uit de tijd, is de manier om de HTML script tags te gebruiken: <script language= php > print( Dit is PHP ); </script> PHP commentaar In PHP code kun je op twee manieren commentaar verwerken: // een regel commentaar voorafgegaan door een dubbele slash /* meerregelig commentaar wordt omsloten door slash-asterix. asterix-slash */ PHP vs JavaScript In JavaScript worden dezelfde stijlen van commentaar gebruikt als bij PHP. PHP en MySQL in het voortgezet onderwijs Bladzijde - 12

Werken met variabelen in PHP Leerdoelen Hier leer je werken met variabelen in PHP scripts en hoe je variabelen uit HTML formulieren naar PHP scripts overbrengt. Variabelen in PHP Variabelen beginnen in PHP altijd met het dollarteken ($), zoals we al hebben gezien in het script op bladzijde 10 waar we de variabele $naam hebben gebruikt. Het dollarteken moet worden gevolgd door een letter of een underscore; de rest van de variabelenaam kan bestaan uit letters, cijfers en underscores. Voorbeelden van PHP variabelen kunnen zijn: $i $auteur $query2 $student_id Opmerking HTML formulier variabelen en PHP PHP variabele zijn hoofdlettergevoelig. $student_id is een andere variabele als $student_id. Als variabelen uit een HTML formulier in een PHP script worden overgebracht wordt door PHP automatisch voor elke formuliervariabele een PHP variabele gemaakt: met dezelfde naam als de formuliervariabele maar met een dollarteken ervoor Bijvoorbeeld: als er een formuliervariabele bestaat met de naam wachtwoord dan wordt de PHP variabele $wachtwoord. Dat kon je ook al zien in het script op bladzijde 10: formuliervariabele naam wordt PHP variabele $naam. Variabelen en waardetoekenning In PHP worden aan variabelen waarden toegekend, net als in JavaScript. Daarvoor wordt het is-teken (=) gebruikt en de toekenning wordt afgesloten net zoals alle statements met een puntkomma (;). $i = 0; $bewerker = Piet Geelen ; $query2 = SELECT * FROM Cursussen ; $student_id = 1001234; Het laten zien van variabelewaarden Je kunt de waarden van PHP variabelen aan de tekst van een webpagina toevoegen door op verschillende manieren gebruik te maken van het print of het echo statement: print( De bewerker van dit werkboek is ); print($bewerker); print( De bewerker van dit werkboek is $bewerker ); print( De bewerker van dit werkboek is. $bewerker); Al deze vormen hebben als resultaat dat op de webpagina de volgende tekst te zien is: De bewerker van dit werkboek is Piet Geelen Het weergeven van speciale tekens We hebben gezien dat je met print tekst aan een webpagina kunt toevoegen. Als tekst wordt omgeven door dubbele aanhalingstekens: worden variabelenamen vervangen door hun waarden letters voorafgegaan door een backslash (\) worden beschouwd als bijzondere tekens, inclusief: \n - nieuwe regel \$ - het dollarteken \ - het dubbel aanhalingsteken PHP en MySQL in het voortgezet onderwijs Bladzijde - 13

Voorbeeld van weergave bijzondere tekens Het PHP statement : print("het twee minuten durende \nreclamefilmpje voor \"Chanel 5\" \nheeft ongeveer \$61.000.000 gekost."); Het resultaat in de browser ziet er ongeveer als volgt uit: Als je naar de broncode van de HTML pagina gaat kijken ziet die er als volgt uit: Nut van /n Datatypes Je vraagt je misschien af wat het nut is om af en toe in de PHP code gebruik te maken van de code /n (nieuwe regel). Dat is vooral van belang bij complexe scripts. Het maakt het lezen van de HTML broncode eenvoudiger maar ook het opsporen van eventuele fouten. PHP ondersteunt de volgende belangrijke datatypes: integers floating point getallen booleans strings arrays Een array in PHP heeft de volgende notatie: $array_naam[index] (PHP ondersteunt ook objecten, maar die vallen buiten het bestek van dit werkboek) Rekenkundige operatoren x + y x. y x wordt bij y opgeteld als beide numeriek (getallen) zijn y wordt achter x geplakt; het maakt niet uit, getallen of strings Voorbeeld: $dag = 1; $maand = januari ; $gebeurtenis = nieuwjaarsdag ; print($dag..$maand. is.$gebeurtenis); Resultaat: 1 januari is nieuwjaarsdag Andere rekenkundige bewerkingen zijn: x y trekt y van x af x * y vermenigvuldigt x met y x / y deelt x door y x % y modulus van x en y (het getal dat overblijft als x gedeeld wordt door y) x ^ y x tot de macht y PHP en MySQL in het voortgezet onderwijs Bladzijde - 14

Vergelijkingsoperatoren Vergelijkingsoperatoren vergelijken de waarden van twee variabelen en geven een boolean waarde (waar(true) of onwaar(false)) terug. x == y waar als x en y aan elkaar gelijk zijn, anders onwaar x!= y waar als x en y ongelijk aan elkaar zijn, anders onwaar x > y waar als x groter is dan y, anders onwaar x < y waar las x kleiner is dan y, anders onwaar x >= y waar als x groter is dan of gelijk is aan y, anders onwaar x <= y waar als x kleiner is dan of gelijk is aan y, anders onwaar x && y waar als zowel x als y waar zijn, anders onwaar x y waar als óf x óf y waar is, anders onwaar!x waar als x is onwaar, anders onwaar PHP vs JavaScript PHP gebruikt nagenoeg dezelfde set operatoren als JavaScript. Maar merk wel op dat stringconcatenatie in PHP met de punt operator gebeurt terwijl dat in JavaScript met de + operator plaatsvindt. PHP en MySQL in het voortgezet onderwijs Bladzijde - 15

Het gebruik van controle structuren in PHP Leerdoelen Hier leer je welke belangrijke controle structuren er in PHP zijn en hoe je ze moet gebruiken. Dit wordt gedaan aan de hand van verschillende voorbeelden. voorwaardelijk statement: if Dat kan op de volgende manieren worden gebruikt: Enkelvoudig statement Meervoudige statements if(expressie) statement; if(expressie) statement; else statement; if(expressie) { statement; statement; } if(expressie) { statement; statement; } else statement; statement; } Na de expressie (voorwaarde) volgt ofwel een enkelvoudig statement of een opeenvolging van statements tussen accolades geplaatst. Zorg er wel voor dat elk statement wordt afgesloten met een puntkomma. Plaats echter geen puntkomma na het sluithaakje van de voorwaarde en ook niet na de else. De regels die hier gelden zijn ook van toepassing op de volgende structuren: for loop for ( initialisatie; test; ophoging/verlaging) statement; of {statement; statement; etc.} while loop while (test) statement; of {statement; statement; etc.} for loop voorbeeld Stel dat je een array met namen hebt. Die kun je in PHP onder andere zo opstellen: $namen = array( Fief, Piet, Igor, Dimitri, Serge ); Wil je nu alle namen uit de array in één keer onder elkaar in een genummerde lijst in een webpagina plaatsen, kun je de volgende code (typ deze over in de editor) gebruiken: <html> <head> <title>weergeven van namen met een for loop</title> </head> <body> /* Deze loop zal alle namen van de array in een genummerde lijst onder elkaar PHP en MySQL in het voortgezet onderwijs Bladzijde - 16

op het scherm zetten. */ $namen = array("fief", "Piet", "Igor", "Dimitri","Serge"); print("in de array zitten de volgende namen:<br>"); print("<ol>"); for($i = 0; $i < count( $namen); $i++) print ( "<li><h4>$namen[$i]</h4></li>" ); print("</ol>"); </body> </html> Sla het bestand op in je map onder de naam namen.php. Als je het script uitvoert, krijg je het volgende te zien: PHP en MySQL in het voortgezet onderwijs Bladzijde - 17

Omgaan met strings in PHP Leerdoelen Hier leer je hoe je met string moet omgaan in PHP door gebruik te maken van enkele operaties die op strings van toepassing zijn. Testen of string geen waarde heeft Vaak is het handig om te testen of een string variabele die uit een HTML formulier afkomstig is geen waarde heeft, dus een lege string is. Daarvoor gebruiken we de operator! Bijvoorbeeld: if(!$wachtwoord) print( <strong>je moet een wachtwoord invullen</strong> ); Dit werkt in feite met elk type PHP variabele, om na te gaan of er aan die variabele een waarde is toegekend. string vergelijking Gebruik de volgende operatoren om twee strings met elkaar te vergelijken: Gebruik == om te testen of twee strings identiek zijn aan elkaar Gebruik < om te testen of string 1 lexicografisch vóór string 2 komt Gebruik > om te testen of string 1 lexicografisch na string 2 komt Lexicografisch betekent alfabetisch en/of numeriek. Je kunt ook gebruik maken van de operatoren <= en >= die respectievelijk staan voor vóór of gelijk aan en na of gelijk aan. De volgende vergelijkingen zijn waar: abc == abc abc < bcd bcd > abc Voorbeeld met == We zullen de == operator gebruiken in een PHP script dat een korte beschrijving geeft van de profielen die in de bovenbouw Havo en Vwo voorkomen. Allereerst maken we een webpagina met een keuzemenu waar je de waarde van de variabele profiel kunt kiezen. Opmerking profielen.html formulier Houd er rekening mee dat het volgende voorbeeld een eenvoudige stringvergelijking uitvoert die werkt op basis van elke vergelijking die gevonden wordt. Daarom is het essentieel dat je ervoor moet zorgen dat de waarden die je in je HTML formulier stopt exact overeenkomen met de waarden waarin je in je PHP script naar op zoek bent. Gebruik je editor om de volgende code over te nemen en die je daarna opslaat als profielen.html <html> <head> <title>informatie over profielen</title> </head> <body> <h4> De situatie in schooljaar 2007-2008</h4> <p> Kies een profiel en klik op de knop <strong>informatie</strong>:</p> <form method="get" action="profielinfo.php"> <select name="profiel"> <option selected> Natuur en Techniek <option> Natuur en gezondheid <option> Economie en Maatschappij <option> Cultuur en Maatschappij </select> <input type="submit" value="informatie"> </form> PHP en MySQL in het voortgezet onderwijs Bladzijde - 18

</body> </html> profielinfo.php Neem ook de volgende code over in je editor en sla het bestand op als profielinfo.php <html> <head> <title>informatie over: print( $profiel ); </title> </head> <body> if ( $profiel == "Natuur en Techniek" ) { <h1>natuur en Techniek</h1> <p>dit is het profiel met als profielvakken:<br> wiskunde B, natuurkunde en scheikunde </p> } else if ( $profiel == "Natuur en Gezondheid" ) { <h1>natuur en Gezondheid</h1> <p>dit is het profiel met als profielvakken:<br> wiskunde AB (of B), biologie en scheikunde </p> } else if ( $profiel == "Economie en Maatschappij" ) { <h1>economie en Maatschappij</h1> <p>dit is het profiel met wiskunde als profielvakken:<br> AB (of B) en economie </p> } else if ( $profiel == "Cultuur en Maatschappij" ) { <h1>cultuur en Maatschappij</h1> <p>dit is het profiel met als profielvakken:<br> wiskunde A en geschiedenis.</p> } </body> </html> Uitvoeren van het voorbeeld Laad het formulier (profielen.html) in je browser. Kies vervolgens een profiel en klik op de knop informatie. De volgende schermen zijn te zien: PHP en MySQL in het voortgezet onderwijs Bladzijde - 19

Na een keuze van Natuur en Gezondheid krijg je het volgende te zien nadat je op de knop Informatie hebt geklikt: PHP en MySQL in het voortgezet onderwijs Bladzijde - 20

Het gebruik van multipass scripts Leerdoelen Hier leer je scripts zo aan te passen dat ze meerdere malen kunnen worden aangeroepen. Aanpassen voorbeeld Het is mogelijk dat we het voorbeeld van de profielen zodanig aanpassen dat we geen twee aparte webdocumenten nodig hebben. In plaats daarvan kunnen we die twee pagina s combineren tot een script. Dat betekent dat we het webformulier als onderdeel integreren in het PHP script. We geven de herziene versie van het script de naam profielinfo2.php. In het aangepaste script is een extra voorwaardelijk statement ingebouwd om te bepalen wat er moet gebeuren: Als het script wordt uitgevoerd terwijl er geen keuze is gemaakt (in feite geen waarde aan de variabele is toegekend). Dan moet alleen het formulier worden getoond, eventueel met de aanvulling dat er een selectie moet worden gemaakt. Als het script wordt uitgevoerd als er wel een waarde aan de variabele is toegekend. Dan wordt de informatie van het profiel getoond zoal in het vorige voorbeeld is uitgewerkt. Dit is een voorbeeld van een multipass script - een script dat zichzelf aanroept om te worden uitgevoerd. profielen2.php Typ de volgende code in je editor en sla het op als profielen2.php. <html> <head> <title>informatie over profielen</title> </head> <body> if (!$profiel ) { <h4> De situatie in schooljaar 2007-2008</h4> <p> Kies een profiel en klik op de knop <strong>informatie</strong>:</p> <form method="get" action="profielinfo.php"> <select name="profiel"> <option selected> Natuur en Techniek <option> Natuur en gezondheid <option> Economie en Maatschappij <option> Cultuur en Maatschappij </select> <input type="submit" value="informatie"> </form> } else if ( $profiel == "Natuur en Techniek" ) { <h1>natuur en Techniek</h1> <p>dit is het profiel met als profielvakken:<br> wiskunde B, natuurkunde en scheikunde </p> } else if ( $profiel == "Natuur en Gezondheid" ) { <h1>natuur en Gezondheid</h1> <p>dit is het profiel met als profielvakken:<br> wiskunde AB (of B), biologie en scheikunde </p> } else if ( $profiel == "Economie en Maatschappij" ) { PHP en MySQL in het voortgezet onderwijs Bladzijde - 21

<h1>economie en Maatschappij</h1> <p>dit is het profiel met wiskunde als profielvakken:<br> AB (of B) en economie </p> } else if ( $profiel == "Cultuur en Maatschappij" ) { <h1>cultuur en Maatschappij</h1> <p>dit is het profiel met als profielvakken:<br> wiskunde A en geschiedenis.</p> } </body> </html> Voer het script uit en kijk hoe het werkt. Je moet geen enkel verschil merken met het vorige voorbeeld, alleen in de URL zie je een andere naam staan. Kijk vervolgens naar de URL als je het script uitvoert. Die URL blijft gelijk. Dat komt omdat het script zichzelf aanroept. Hoe werkt het? Als je het script voor de eerste keer opent is er nog geen optie geselecteerd uit het formulier wat inhoudt dat de variabele $profiel nog geen waarde heeft. Dat betekent dat in dat geval het formuliergedeelte wordt afgebeeld op het scherm om je in staat te stellen een keuze te maken. Als je op de knop Informatie klikt, roept het script zich zelf aan. In dit geval heeft de variabele $profiel een waarde. Daarom wordt nu de informatie over het profiel getoond en niet het formulier. PHP en MySQL in het voortgezet onderwijs Bladzijde - 22

PHP en Databases Leerdoelen In dit gedeelte leer je hoe je met PHP een database kunt benaderen aan de hand van een aantal voorbeelden door gebruik te maken van PHP database functies voor het MySQL DBMS. Gegevens uit een database halen In dit werkboek concentreren we ons vooral erop om gegevens uit een database te halen en die in een webpagina te tonen. PHP is in staat om SQL bewerkingen door te voeren op een relationeel database managementsysteem (DBMS), maar we zullen ons alleen maar toeleggen op SELECT bewerkingen. Het halen van gegevens uit een database met behulp van PHP verloopt in 4 stappen: Maak contact met het DBMS Stuur een SQL query naar de database en ontvang het resultaat (bijvoorbeeld een aantal rijen) Haal elke rij uit dat resultaat en doe er vervolgens iets mee (bijvoorbeeld een HTML format geven) Verwijder het resultaat (rijen) nadat je er klaar mee bent PHP heeft voor elk DBMS een set database functies waarmee het kan werken. In ons geval kijken we alleen maar naar het MySQL DBMS. De functie mysql_connect Format: mysql_connect(hostnaam,gebruikersnaam,wachtwoord) Werking: maak een verbinding met het MySQL DBMS dat op de computer draait met de naam hostnaam waarbij je de vereiste gebruikersnaam en wachtwoord ingeeft. De functie zorgt ervoor dat een foutmelding in beeld gebracht wordt als er om een of andere reden geen verbinding met het DBMS tot stand gebracht kan worden. Dat kan in de trant van: verkeerd wachtwoord, verkeerde gebruikersnaam, DBMS is niet op die computer aangetroffen. Bij ons op school staat het DBMS op de server die je kunt bereiken op www.nsgroenewoud.nl De hostnaam is localhost, je gebruikersnaam en wachtwoord krijg je van mij tijdens de les. Iedereen heeft een eigen database te beschikking. De naam daarvan wordt ook in de les bekend gemaakt. Voor de voorbeelden in het werkboek gebruiken we de volgende gegevens: gebruikersnaam: nsgroene_werkboe wachtwoord: php2004 De verbinding met het DBMS ziet er dan als volgt uit: mysql_connect( localhost, nsgroene_werkboe, php2004 ); De functie mysql_select_db(db) Format: mysql_select_db(database) Werking: selecteert een specifieke database die gehost is door het DBMS. In onze voorbeelden zullen we gebruik maken van de database nsgroene_werkboek. Dat betekent dat we de database kunnen selecteren door de code: mysql_select_db( nsgroene_werkboek ); PHP en MySQL in het voortgezet onderwijs Bladzijde - 23

De functie mysql_query Format: resultaat = mysql_query(sql) Werking: zendt de SQL query naar de database. De functie stuurt een PHP resultaat object terug dat alle rijen van een tabel uit een database bevat die de uitkomst vormen van de opgegeven query. Onze database werkboek bevat de tabel landen met verschillende gegevens id land hoofdstad werelddeel inwoners 1 Frankrijk Parijs Europa 59000000 2 Ierland Dublin Europa 3660000 3 Griekenland Athene Europa 10700000 4 Verenigde Staten Washington Amerika 281000000 5 Japan Tokio Azie 130000000 6 Zuid Afrika Pretoria Afrika 43800000 7 Marokko Rabat Afrika 31200000 8 China Beijing Azie 1200000000 We kunnen nu een volgende SELECT query maken: $query = SELECT * FROM landen ORDER BY inwoners ; $resultaat = mysql_query($query); Opmerking De functie mysql_fetch_row() Van nu af aan gaan we de SQL sleutelwoorden als SELECT, FROM etc. met kleine letters schrijven. Format: row = mysql_fetch_row(resultaat) haalt de volgende rij uit het object resultaat. Geeft als terugkeerwaarde false als er geen nieuwe rijen meer zijn. Normaal wordt deze functie gebruikt in een while loop: while ( row = mysql_fetch_row(resultaat) ) { doe iets met die rij; } Elke kolom van een rij wordt benaderd met een array notatie: De eerste kolom is row[0] De tweede kolom is row[1] Etc. Om nu de eerste kolom van alle rijen van de uitkomst van een query in beeld te brengen gebruik je de volgende code: while ( $row = mysql_fetch_row($resultaat) ) { print($row[0]. <br>\n ); } Een volledig voorbeeld landen.php Nu zullen we al het voorafgaande eens in een compleet voorbeeld laten zien: selecteer alles uit de database tabel landen en toon dat als een tabel op het scherm gesorteerd op werelddeel. <html> <head> <title>lijst van alle landen uit de tabel</title> </head> PHP en MySQL in het voortgezet onderwijs Bladzijde - 24

<body><h2>lijst van alle landen</h2> <table border="1"> <tr> <td><strong>id</strong></td> <td><strong>naam</strong></td> <td><strong>hoofdstad</strong></td> <td><strong>werelddeel</strong></td> <td><strong>inwoners</strong></td> </tr> mysql_connect( localhost, nsgroene_werkboek, php2004 ); mysql_select_db( nsgroene_werkboek ); $query = select * from landen order by werelddeel ; $resultaat = mysql_query($query); while ( $row = mysql_fetch_row($resultaat) ) { <tr> <td> print($row[0]); </td> <td> print($row[1]); </td> <td> print($row[2]); </td> <td> print($row[3]); </td> <td> print($row[4]); </td> </tr> } </table> </body> </html> Resultaat Als de code goed is ingevoerd krijg je iets te zien dat hier op lijkt: id land hoofdstad werelddeel inwoners 7 Marokko Rabat Afrika 31200000 6 Zuid Afrika Pretoria Afrika 43800000 4 Verenigde Staten Washington Amerika 281000000 8 China Beijing Azie 1200000000 5 Japan Tokio Azie 130000000 3 Griekenland Athene Europa 10700000 2 Ierland Dublin Europa 3660000 1 Frankrijk Parijs Europa 59000000 De query aanpassen We kunnen de select query naar believen aanpassen om de gebruiker te laten bepalen wat voor informatie hij wil zien. Normaal wordt dat gedaan door een HTTP variabele naar het script te sturen die dan als onderdeel van de query kan worden gebruikt. Laten we het vorige script eens aanpassen: Zorg ervoor dat er een HTTP variabele $werelddeel als input komt (bijvoorbeeld uit een webformulier) Gebruik deze variabele om alleen maar de landen te selecteren uit dat specifieke werelddeel select * from landen where werelddeel = $werelddeel ; Als de waarde uit het invoerveld Europa is, wordt de query select * from landen where werelddeel = Europa ; PHP en MySQL in het voortgezet onderwijs Bladzijde - 25

We gaan nu de code aanpassen van het bestand landen.php. We slaan het vernieuwde bestand vervolgens op als landenperwerelddeel.php Hieronder staat het bijgewerkte script. De regels waarin wijzigingen ten opzichte van het bestand landen.php staan, zijn cursief afgedrukt. <html> <head> <title>keuze voor landen uit een bepaald werelddeel</title> </head> <body> if (!$werelddeel ) { <h4> Maak een keuze uit een werelddeel</h4> <p> Kies een werelddeel en klik op de knop <strong>mijn keuze</strong>:</p> <form method="get" action="landenperwerelddeel.php"> <select name="werelddeel"> <option selected> Afrika <option> Amerika <option> Australie <option> Azie <option> Europa </select> <input type="submit" value="mijn keuze"> </form> if (!$werelddeel ) { <html> <head> <title>lijst van alle landen uit print($werelddeel); </title> </head> <body><h2> Lijst van alle landen uit print($werelddeel); </h2> <table border="1"> <tr> <td><strong>id</strong></td> <td><strong>naam</strong></td> <td><strong>hoofdstad</strong></td> <td><strong>werelddeel</strong></td> <td><strong>inwoners</strong></td> </tr> mysql_connect( localhost, nsgroene_werkboe, php2004 ); mysql_select_db( nsgroene_werkboek ); $query = select * from landen where werelddeel = $werelddeel order by werelddeel ; $resultaat = mysql_query($query); while ( $row = mysql_fetch_row($resultaat) ) { <tr> <td> print($row[0]); </td> <td> print($row[1]); </td> <td> print($row[2]); </td> <td> print($row[3]); </td> <td> print($row[4]); </td> </tr> } </table> </body> </html> PHP en MySQL in het voortgezet onderwijs Bladzijde - 26

De eenvoudigste manier om dit script te runnen is door gebruik te maken van de HTTP GET methode om de variabele $werelddeel aan te bieden, waardoor het mogelijk wordt om de variabele aan de URL te koppelen. Bijvoorbeeld: htpp://www.nsgroenewoud.nl/pigeelen/werkboek/landenperwerelddeel.php?werelddeel=europa Alternatief Als alternatief kun je met de opgedane kennis een webformulier ontwerpen dat de variabele $werelddeel doorgeeft. Het is echter sneller om de vereiste gegevens aan de URL toe te voegen, bijvoorbeeld:?land=frankrijk Wees voorzichtig! Als je niet de goede code aan de URL toevoegt of een formulier dat de gegevens naar het PHP script moet sturen onjuist opzet, zal het script wel runnen maar niet in staat zijn enig resultaat als output te laten zien. Waarom? Omdat de select query specifieke informatie vraagt over het werelddeel waarvan je de landen wilt laten zien. Als je Europa als werelddeel hebt gekozen, moet je de volgende output te zien krijgen: Een uitgebreider voorbeeld Een algemene manier om in PHP met databases te werken is de zogenaamde tweetraps procedure: Allereerst geef je de gebruiker een index waarmee je een samenvatting van alle items in de database te zien krijgt Geef de gebruiker de mogelijkheid om op elk item te klikken om alle gegevens per item weer te geven Dit patroon zie je vaker op het web. Bijvoorbeeld bij www.bol.com Daar kun je bijvoorbeeld voor boeken kiezen van een schrijver. Je krijgt dan alle titels in beeld en elke titel heeft een link waarachter een uitgebreide informatie van die titel te vinden is. We zullen twee scripts gaan gebruiken: het index script en het detail script. landenindex.php <html> <head> <title>index van alle landen</title> </head> <body><h2>index van alle landen</h2> <table border="1"> <tr> <td><strong>id</strong></td> <td><strong>naam</strong></td> </tr> PHP en MySQL in het voortgezet onderwijs Bladzijde - 27

mysql_connect( localhost, nsgroene_werkboek, php2004 ); mysql_select_db( nsgroene_werkboek ); $query = select id,land from landen order by id ; $resultaat = mysql_query($query); while ( $row = mysql_fetch_row($resultaat) ) { <tr> <td> print($row[0]); </td> <td> print( a href=\ landendetails.php?land=row[1]\ $row[1]</a> ); </td> </tr> } </table> </body> </html> landendetails.php Resultaat <html> <head> <title>details van print($naam); </title> </head> <body> <h2 style= color:navy > Details van print($naam); </h2> mysql_connect( localhost, nsgroene_werkboek, php2004 ); mysql_select_db( nsgroene_werkboek ); $query = select * from landen where land = $land ; $resultaat = mysql_query($query); while ( $row = mysql_fetch_row($resultaat) ) { <p>landnummer: <b> print($row[0]); </b></p> <p>hoofdstad: <b> print($row[2]); </b></p> <p>werelddeel: <b> print($row[3]); </b></p> <p>inwoners: <b> print($row[4]); </b></p> } </body> </html> Laad landenindex.php. Je krijgt dan iets te zien dat er zo kan uitzien: PHP en MySQL in het voortgezet onderwijs Bladzijde - 28

Klik vervolgens op de link Japan. Dan krijg je het volgende in beeld: Opdracht Als je gebruik maakt van de multipass script techniek die we eerder uit de doeken hebben gedaan, moet het mogelijk zijn om de scripts landenindex.php en landendetails.php in één multipass script samen te voegen. PHP en MySQL in het voortgezet onderwijs Bladzijde - 29

PHP en het valideren van formuliergegevens Leerdoelen Hier leer je om met behulp van PHP string functies en de multipass script techniek formuliergegevens op de server te valideren. PHP voor formulier validatie PHP string functies zijn erg nuttig om aan de server kant formuliergegevens te valideren. Daarbij is de multipass script techniek erg behulpzaam: Het maken van een formulier, de validatiecode en de actie in één script Als het script voor de eerste keer wordt uitgevoerd verschijnt een leeg formulier Als je op de knop drukt, wordt het script opnieuw aangeroepen: als de data niet correct zijn, wordt het formulier weer getoond (met de gegevens die wel juist zijn, zodat de gebruiker die niet nog een keer hoeft in te vullen) samen met een foutmelding erbij Als de ingevulde gegevens correct zijn wordt de scriptactie uitgevoerd Typ onderstaande code over in je editor en sla het bestand op als formuliervalidatie.php <html> <head> <title>voorbeeld van een formulier validatie</title> </head> <body> if ( $naam && $email ) { <p>welkom op onze website <b> print($naam); </b></p> } else { <form method="get" action="formuliervalidatie.php"> <input type="hidden" name="opnieuw" value="yes"> <p><strong>naam: </strong> <input type="text" name="naam" value=" print( $naam ); " size="40"></p> if (!$naam && $opnieuw ) print( "<b style=\"color:red\">** je moet nog je naam invullen!</b>" ); <p><strong>e-mail:</strong> <input type="text" name="email" value=" print( $email ); " size="30"></p> if (!$email && $opnieuw ) print( "<b style=\"color:red\">** Je moet nog je e-mailadres invullen!</b>" ); <p><input type="submit" value="log in"> <input type="reset" value="wis"></p> </form> } </body> </html> PHP en MySQL in het voortgezet onderwijs Bladzijde - 30

Het script runnen Als je het script runt, krijg je een formulier te zien dat er ongeveer zo uitziet: Probeer het script uit door niet alle gegevens in te vullen en klik vervolgens op Log in: Vul niets in Vul alleen je naam in Vul alleen je e-mailadres in Je krijgt dan een scherm te zien dat er ongeveer zo uitziet: Hoe werkt het? De eerste voorwaarde is alleen maar waar als in beide invoervelden de gegevens zijn ingevuld. Let er wel op dat in beide velden ook onzin kan worden ingevuld om het script toch te laten werken. if ($naam && $email) { Dit resulteert in het bericht: Welkom op onze website waarbij op de plaats van de puntjes de op het formulier ingevulde naam wordt weergegeven. De verborgen variabele opnieuw krijgt de waarde yes toegekend als de Log in knop op zijn minst een keer is ingedrukt. <input type="hidden" name="opnieuw" value="yes"> Als de Log in knop is ingedrukt en de naam heeft geen waarde dan is de volgende voorwaarde waar: if (!$naam && $opnieuw) { Als de Log in knop is ingedrukt en het e-mailadres is nog niet ingevuld dan is de volgende voorwaarde waar: if (!$email && $opnieuw) { De laatste twee voorwaarden laten foutmeldingen op het scherm zien die in rood worden afgebeeld. PHP en MySQL in het voortgezet onderwijs Bladzijde - 31

PHP vs JavaScript Zowel PHP als JavaScript zijn in staat om formuliergegevens te valideren. Welke methode moet je nu gebruiken? De voor- en nadelen van JavaScript: JavaScript werkt sneller dan PHP omdat er geen HTTP verzoeken aan de server noodzakelijk zijn Echter, JavaScript validatie werkt helemaal niet als JavaScript op de PC is uitgeschakeld of niet voor handen. De voor en nadelen van PHP PHP werkt trager vanwege de http verzoeken aan de server Echter, PHP validatie werkt altijd, onafhankelijk van de capaciteiten en instellingen van de browser. PHP en MySQL in het voortgezet onderwijs Bladzijde - 32

PHP en E-mail Leerdoelen Hier leer je hoe je met behulp van PHP een e-mail kunt versturen met de mail functie. De functie mail() PHP is in staat om e-mail te versturen met behulp van de functie mail(): mail (aan, onderwerp, gegevens, [headers]) het betreft een boolean functie. Het geeft de waarde waar terug als het bericht succesvol naar de mail server is verstuurd aan: is het e-mailadres voor wie de e-mail is bedoeld onderwerp: is het onderwerp van het e-mailbericht gegevens: is de eigenlijke inhoud van het e-mailbericht headers: zijn optioneel extra toevoegingen voor het e-mailbericht (bijvoorbeeld de van-header) PHP e-mail voorbeeld Verander het bestand formuliervalidatie.php zodanig dat de variabelen $naam en $email uit het formulier naar jouw eigen e-mailadres worden verstuurd. Daarvoor moet je in het script de volgende code invoegen: mail ( mijnemail@provider.nl, gegevens van webformulier, gebruikersnaam = $naam\n e-mailadres = $email, Van: webformulier_script ); Zorg ervoor dat op de plaats van mijnemail@provider.nl je eigen e-mailadres is ingevuld. Sla het bestand op als form_email.php. Als het werkt zal niet alleen een begroeting op de website plaatsvinden maar ook de inloggegevens naar de webmaster worden verstuurd. PHP en MySQL in het voortgezet onderwijs Bladzijde - 33

Het gebruik van de functie include() Leerdoelen Hier leer je wat het nut is van de functie include(). functie include() Tot nu toe hebben we iedere keer in alle scripts waar we een verbinding met de database hebben gemaakt een aantal dezelfde regels code gebruikt: Het tot stand brengen van de verbinding met de databaseserver Het verbinden met de database zelf Om dat te bewerkstelligen moeten we onze inloggegevens kenbaar maken. Daarin schuilt een gevaar. Zeker als we de GET methode gebruiken om de waarden van die variabelen (inloggegevens) door te geven, worden die zichtbaar gemaakt. Dat kan natuurlijk niet de bedoeling zijn. Beter is het om die gegevens op de webserver onder te brengen en die vervolgens in de scripts die je laat runnen op te roepen als ze nodig zijn. Daarvoor heeft PHP de functie include() bedacht. Die werkt als volgt: Je maakt een include-bestand met inloggegevens om een verbinding met de database tot stand te brengen en noemt dat verbinding.php. Dat sla je op in de submap includes op de server. In een script roep je met de functie include() dat bestand op om uitgevoerd te worden. Daarmee wordt het contact met de database tot stand gebracht. Het is mogelijk om hele stukken code onder te brengen in include-bestanden. Dat wordt vooral gedaan als die stukken code in scripts vaker voorkomen. Door dan gebruik te maken van de functie include() voorkom je extra codeerwerk waardoor de code ook nog eens overzichtelijker wordt. De functie include() zorgt voor: Veiligheid Minder codeerwerk Overzichtelijkheid verbinding.php Neem de volgende code over in je editor en sla het op in de map includes op de server en geef het de naam verbinding.php: mysql_connect( localhost, nsgroene_werkboek, php2004 ) or die( verbinding met server mislukt vanwege:. mysql_error()); mysql_select_db( nsgroene_werkboek ) or die( database error:. mysql_error()); wijzigen bestand landen.php Je kunt er nu voor kiezen om eerder gemaakte bestanden aan te passen. We nemen het bestand landen.php. <html> <head> <title>lijst van alle landen uit de tabel</title> </head> <body><h2>lijst van alle landen</h2> <table border="1"> <tr> <td> <strong>id </strong> <td> <td> <strong>naam </strong> <td> <td> <strong>hoofdstad </strong> <td> <td> <strong>werelddeel </strong> <td> <td> <strong>inwoners </strong> <td> </tr> PHP en MySQL in het voortgezet onderwijs Bladzijde - 34

// verbinding met database tot stand brengen include('includes/verbinding.php'); // zoekvraag uitvoeren $query = "select * from landen order by werelddeel desc"; $resultaat = mysql_query( $query ); // resultaten van de zoekvraag weergeven while ( $row = mysql_fetch_row( $resultaat ) ) { } <tr> <td> print( $row[0] ); </td> <td> print( $row[1] ); </td> <td> print( $row[2] ); </td> <td> print( $row[3] ); </td> <td> print( $row[4] ); </td> </tr> // resultaat set vrij maken mysql_free_result( $resultaat ); // contact met de database verbreken mysql_close( $verbinding ); </table> </body> </html> PHP en MySQL in het voortgezet onderwijs Bladzijde - 35

Oefenopdrachten Leerdoelen Hier leer je toepassen wat je eerder hebt geleerd en wat je uit de PHP documentatie op Internet, uit boeken of handleidingen kunt halen. Opdracht 1 Gebruik van print()-statement Maak een eenvoudig PHP script dat de weekdagen, beginnend bij maandag, onder elkaar laat zien. Het gebruik van herhalingsstructuren is hierbij niet toegestaan. Sla het bestand op als weekdagen1.php Opdracht 2a Gebruik van array en for-lus Maak een array met de variabelenaam $weekdagen, beginnend bij maandag. Maak nu ook een PHP script waarmee je met behulp van een for-lus de weekdagen onder elkaar afbeeld. Sla het bestand op als weekdagen_for.php Opdracht 2b Gebruik van array en while-lus Maak dezelfde opdracht als bij 2a, maar nu met een while-lus. Sla het bestand op als weekdagen_while.php Opdracht 2c Opdracht 2d Maak dezelfde opdracht als 2b, maar nu zo dat de dagen in omgekeerde volgorde worden afgebeeld, dus beginnend bij zondag en eindigend bij maandag. Sla het bestand op als weekdagen_while2.php Gebruik van HTML-opmaakkenmerken in PHP Pas opdracht 2c zo aan dat de weekdagen nu automatisch genummerd worden. Je moet daarbij denken aan een geordende lijst, waarbij de dagen een nummer krijgen. Zondag is 1 en maandag is 7. Sla het bestand op als weekdagen_while3.php Opdracht 3 Gebruik van formulier en rekenkundige operaties Maak een HTML pagina waarin je vermenigvuldigingstafel kunt laten zien. In een invoerveld geef je een getal op kleiner dan 100, je drukt op een knop en in dezelfde pagina krijg je dan ook de uitkomst te zien. Als je daarna een ander getal in het invoerveld opgeeft en weer op de knop drukt, komt het nieuwe tafeltje in beeld. Sla het bestand op als tafeltje.php Opdracht 4 Gebruik van weergave van data in tabelvorm Verander opgave 3 zodanig dat: de uitvoer in een tabel zonder border wordt weergegeven. de eerste kolom in de tabel de cijfers rechts heeft uitgelijnd. tussen het invoerformulier en de uitkomst de mededeling komt te staan: Hieronder staat het tafeltje van $getal, waarbij deze zin wordt weergegeven in de <h4> tag en de variabele $getal in rood wordt afgedrukt. Sla het bestand op als tafeltje2.php Opdracht 5 Gebruik van arrays, datum en tijd Laat op een pagina de juiste datum en tijd zien in Nederlands format. Aanwijzingen: maak arrays van dagen en maanden in het Nederlands en gebruik verder de functie date(). Kijk op de website voor het format van deze functie. Het is niet de bedoeling om hier de functie setlocale() te gebruiken. De uitkomst op het scherm moet er ongeveer zo uitzien: PHP en MySQL in het voortgezet onderwijs Bladzijde - 36

Uiteraard met aangepaste datum en tijd! Sla het bestand op als tijd.php Opdracht 6 Gebruik van rekenkundige operaties en meerdere voorwaarden Maak een formulier waarin je meteen kunt zien hoeveel belasting je moet betalen bij een bepaald belastbaar inkomen. Standaard staat het bedrag op 0 ingesteld. Zo gauw je bij inkomen een bedrag invult, wordt daaronder vermeld hoeveel belasting je moet betalen. Daarbij die je rekening te houden met de volgende gegevens: Inkomen in Belastingtarief (%) schijf tot 16.265 33,55 1 vanaf 16.265 tot 29.543: 40,50 2 vanaf 29.543 tot 50.652: 42 3 vanaf 50.652: 52 4 Er hoeft geen rekening gehouden te worden met belastingvrije voet en dergelijke. Aanwijzing: maak van de verschillende schijven variabelen hoeveel belasting je maximaal moet betalen in die schijf. Gebruik ook de functie number_format() om de opmaak van getallen te regelen. Zet daarbij het aantal decimalen op 0 zodat de getallen worden afgerond op gehele getallen. Bovendien kun je daar aangeven dat er punten moeten komen te staan na duizendtallen: bijvoorbeeld 65.000. Controleer ook of er een getal is ingevoerd met de functie is_numeric(). Stel je hebt 135.000 verdiend. Als je de pagina hebt gemaakt moet die er zo uitzien nadat je het bedrag hebt ingevuld en op de knop hebt gedrukt: Sla het bestand op als belasting.php PHP en MySQL in het voortgezet onderwijs Bladzijde - 37