1
Cursus PHP & MySQL Informaticaprojecten Bachelor Toegepaste Informatica academiejaar 2008 - 2009 Jaar 1 Semester 1 & 2 Groep D feneX
Cursus PHP & MySQL
Voorwoord Deze cursus PHP & MySQL werd opgesteld door een groep studenten uit het eerste jaar Toegepaste Informatica aan de Artesis Hogeschool Antwerpen. Dit als onderdeel van een opdracht voor het vak Informaticaprojecten. Dit jaar wordt er van de studenten verwacht dat zij zichzelf en de andere studenten binnen hun groep gedurende het ganse eerste semester vertrouwd maken met PHP en MySQL. Er werd getracht dit met behulp van peer-teaching te doen, de verschillende groepsleden zullen elkaar onderwijzen en elkander helpen de stof te begrijpen en te leren toepassen. Aan de hand van de verschillende lessen die we doorheen het eerste semester gegeven en gevolgd hebben, werd deze cursus opgesteld. Deze cursus werd geschreven door een negental eerstejaarsstudenten, met name door Pieter-Jan Beelen, Maarten Casteels, Mathias De Rijke, Jeroen D‟hulst, Joris Dirickx, Martijn Moreel, Samantha Napier, Nick Quadens en Bart Vervliet; het moge duidelijk zijn dat deze cursus dus geen allesomvattend naslagwerk is. Toch hebben wij getracht om de studenten binnen onze groep een degelijke basiskennis van PHP en MySQL mee te geven. Voor die doeleinden valt deze cursus dus wel te gebruiken.
Inhoud
Hoofdstuk 1 Inleiding _________________________________________________________________
Cursus PHP & MySQL Groep D
Hoofdstuk 1: Inleiding 1.1 Wat is PHP & MySQL? PHP is een krachtige server-side scripting taal die onder andere gebruikt wordt voor het maken van dynamische- en interactieve websites. Het is volledig open source en werd door en voor webdevelopers ontwikkeld. PHP staat voor PHP: Hypertext Preprocessor, vroeger stond de afkorting voor Personal Home Page Tools, maar naarmate de taal evolueerde, heeft men ook de naam aangepast. PHP is, zoals eerder al aangehaald werd, een server-side scripting taal – meer hierover later – die binnen HTML-pagina‟s gebruikt kan worden of als gewone scriptingtaal. Al wordt het vooral gebruikt voor webontwikkeling. Je zou het een gratis alternatief voor gelijkaardige producten als Microsofts Active Server Pages (ASP) en Suns Java Server Pages (JSP) kunnen noemen. Dit wil echter in geen opzicht zeggen dat PHP een flauw afkooksel van eerder genoemde producten is. In de volgende paragraaf zal snel duidelijk worden waarom dat niet het geval is.
MySQL op zijn beurt is een open source SQL relationeel database management systeem (RDBMS). Het is dus een database waarin je tal van gegevens kunt opslaan in tabellen. We gebruiken queries om gegevens uit de database op te halen, aan te passen, enz. Meer hierover later.
1.2 Waarom PHP & MySQL? Zoals in de vorige paragraaf reeds aangehaald werd, is PHP niet de enige scripting taal die je kunt gebruiken. Er zijn een aantal alternatieven zoals ASP en JSP, al brengt de combinatie van PHP en MySQL toch wel enkele voordelen met zich mee. Allereerst is PHP volledig open source, wat wil zeggen dat het je vrijwel niks kost om een server met MySQL en PHP te draaien. Dit staat in schril contrast met de kosten die gepaard gaan met het hosten van een ASP/SQL- of een JSP/Oracle server. Even ter vergelijking:
Item
ASP/SQL
JSP/Oracle
PHP/MySQL
Development tools
$0 – 2499
$0 – 2000
$0 – 249
Server
$999
$0 – 35 000
$0
RDBMS
$4999
$15 000
$0 – 220
© feneX – Cursus PHP & MySQL
p1
Een tweede voordeel is dat PHP relatief makkelijk om leren is. In tegenstelling tot bijvoorbeeld JSP hoef je niet meteen over een diepe kennis van een onderliggende programmeertaal te beschikken. PHP heeft een relatief simpele syntax die ook voor „gewone mensen‟ gemakkelijk te begrijpen is.
Nog een groot pluspunt is dat PHP vrijwel volledig cross-platform is. Dit wil zeggen dat een PHP-server op zo goed als elk systeem perfect zal draaien (Windows, Unix,…).
Daarenboven is PHP zeer stabiel en snel. Het werkt samen met Apache Server: die vaak de meest stabiele web server genoemd wordt. De server hoeft slecht sporadisch te worden herstart, en niet bij elke wijziging van de instellingen. Voorts verwerkt PHP code zo goed als even snel als ASP en zelfs ettelijke keren sneller dan JSP of ColdFusion.
1.3 Server-Side Scripting Een concept dat je ook goed moet begrijpen, is dat PHP een server-side scripting taal is. Dit wil zeggen dat de code vooraf op de server wordt uitgevoerd alvorens die getoond wordt aan de gebruiker. Dit in tegenstelling tot andere client-side technologiën die vaak gebruikt worden bij webontwikkeling. HTML-code wordt bijvoorbeeld volledig door de browser geïnterpreteerd en is dus client-side. CSS en JavaScript werken op dezelfde manier.
Het feit dat PHP een server-side scripting taal is, zorgt ervoor dat de taal vooral geschikt is om sites met snel veranderende inhoud, forums en andere webapplicaties die met databases werken te maken.
© feneX – Cursus PHP & MySQL
p2
1.4 Getting Started Vooraleer je met PHP aan de slag kunt, zijn er een aantal dingen die je nodig hebt. Allereerst is het handig dat je over enige basiskennis HTML beschikt. Gezien PHP binnen HTML-bestanden geschreven wordt, spreekt het uiteraard voor zich dat een beetje voorkennis van HTML wel van pas zal komen. De invoer die je gaat gebruiken in je PHP-scripts zal ook aangeleverd worden aan de hand van HTML-forms. Bijgevolg moet je dus wel in staat zijn om een HTML-form te schrijven. Meer hierover kom je nog te weten in het volgende hoofdstuk. Om de PHP-code zelf te schrijven, hebben we uiteraard ook een programma nodig. Je zou dit simpelweg in kladblok kunnen doen, maar er bestaan natuurlijk nog een boel andere alternatieven die je het veel makkelijker zullen maken om tot een duidelijke en gestructureerde code te komen. In deze cursus hebben wij gekozen om met Dreamweaver te werken. Een tweede optie is om met Microsoft Expression Web 2 te werken. Beide zijn complete editors die net als Visual Studio 2008 met een handige IntelliSense functie geleverd worden. Expression kun je via MSDNAA downloaden, Dreamweaver zul je elders op de kop moeten tikken... Een laatste tooltje dat je nog zult nodig hebben om met PHP aan de slag te kunnen, is XAMPP. Gezien PHP een server-side scripting taal is, moet de code dus ook op een server uitgevoerd kunnen worden. XAMPP is een bundelpaket dat Apache Web Server en MySQL bevat. Eens je dit geïnstalleerd en opgestart hebt, kun je je PHP-documenten in je httpdoc folder plaatsen. Als je dan naar je localhost surft, kun je het resultaat van je eerder geschreven code bekijken.
1.5 De Basis Zoals hierboven reeds vermeld staat, is PHP een scripting taal die volledig binnen HTML geïntegreerd kan worden. De vraag is natuurlijk hoe je dit precies doet. Een blok PHP-code moet steeds beginnen met . Je kunt ook met de korte notatie werken, die er als volgt uitziet: … ?>; maar het wordt echter aangeraden om steeds de volledige notatie te gebruiken, kwestie van zo min mogelijk problemen tegen te komen. Je kunt deze blok code overal in de body van je HTML-document plaatsen. Het enige dat je dan nog moet doen, is zorgen dat je je bestand opslaat met een .php extentie. Op de volgende pagina vind je een voorbeeld van hoe PHP-code er zou kunnen uitzien.
© feneX – Cursus PHP & MySQL
p3
Het kleine stukje code hierboven zal Hello World op het scherm afdrukken, zoals je ook al wel kon afleiden uit de commentaar die bij de code stond. In PHP zijn er een aantal verschillende manieren om commentaar toe te voegen. Om één regel commentaar toe te voegen, gebruik je twee forward slashes (//Commentaar) of een hekje (#Commentaar). Je kunt echter ook een aantal regels commentaar toevoegen, dit doe je door je commentaar tussen /* Commentaar */ te zetten. Merk op dat er een puntkomma achter “Hello World” staat. Net als in de meeste andere programmeertalen wordt ook in PHP elk statement afgesloten met een puntkomma. In het volgende hoofdstuk zul je meer over de syntax en structuur van PHP leren.
© feneX – Cursus PHP & MySQL
p4
Hoofdstuk 2 Syntax & Basisstructuren _________________________________________________________________
Cursus PHP & MySQL Groep D
© feneX – Cursus PHP & MySQL
p5
Hoofdstuk 2: Syntax & Basisstructuren 2.1 Types PHP is een relatief gemakkelijke taal om mee te werken, daar de syntax vrij losjes is. Zo hoef je variabelen niet op voorhand te initialiseren. Je hoeft bij de declaratie van je variabelen ook geen expliciet type op te geven. PHP kent de variabele automatisch toe aan het juiste type. Als je een stuk tekst invoert, zal die bijvoorbeeld automatisch opgeslagen worden als een string. Ook wanneer je bewerkingen met variabelen doet, zal PHP de verschillende operanden automatisch converteren naar het juiste type.
De verschillende types binnen PHP zijn integers, doubles, booleans, arrays, NULL en objecttypes. We gaan ervan uit dat je de primaire types wel kent uit andere programmeertalen, maar voor de volledigheid geven we toch nog snel een kleine beschrijving mee. Zo zijn integers gewone gehele getallen, terwijl doubles reële getallen zijn. Een boolean is een speciaal type dat enkel twee waarden aanneemt: true of false. Dan zijn er nog arrays en objecttypes, waar we later in de cursus op terugkomen. Ten slotte heb je nog NULL, wat een beetje een vreemde eend in de bijt is. Het is een manier om je variabele geen waarde mee te geven en leeg te laten.
Wanneer je met PHP werkt, zul je echter minder met types in contact komen dan in andere talen, gezien de taal de typedeclaratie automatisch afhandelt.
2.2 Variabelen & Constanten We hebben het in de bovenstaande paragraaf al eventjes kort gehad over variabelen. Wat we nog niet hebben aangehaald, is hoe we deze moeten declareren. In PHP schrijft men steeds een dollarteken voor de identifier van een variabele om duidelijk te maken dat we met een variabele te maken hebben. Een variabele-declaratie zou er dus als volgt kunnen uitzien. $var = 15; De naam van een variabele mag enkel met een underscore of een letter beginnen en mag verder slechts alfanumerieke karakters en underscores bevatten. Wanneer variabelen niet expliciet geïnitialiseerd worden, worden ze op de standaardwaarde geïnitialiseerd.
© feneX – Cursus PHP & MySQL
p6
Constanten binnen PHP krijgen geen dollarteken voor hun identifier en worden met hoofdlettersgeschreven. (Bijvoorbeeld: E_ALL)
2.3 Operators Merk op dat in het voorbeeld uit de vorige paragraaf de toekenning van de variabele gebeurt aan de hand van het gelijkheidsteken en dus niet met dubbelpunt is gelijk aan, zoals in Oberon of pseudo-code wel het geval is.
Naast de toekenning zijn er binnen PHP natuurlijk nog een boel andere operators. Hieronder vind je een kleine samenvatting.
Toekennings-
Beschrijving
operators =
Toekenning
+=
Telt de variabele rechts op bij de variabele links
-=
Trekt de variabele rechts af van de variabele links
*=
Vermenigvuldigt beide variabelen
/=
Deelt variabele links door variabele rechts
%=
Berekent de restdeling van de links en de rechtse variabele
.=
Concatineert beide variabelen
Uit bovenstaande tabel kun je nu de wiskunde operanden vast wel afleiden. Het plus- (+)
en minteken (-) wordt uiteraard gebruikt voor de optelling en de
aftrekking. Het sterretje (*) voor de vermenigvuldiging, de forward slash (/) voor de deling en het procentteken (%) voor de restdeling. Ook zijn er increment (++) en decrement (--) operators voorzien binnen PHP die één optellen bij of aftrekken van een bepaalde variabele.
Vergelijkende-
Beschrijving
operators ==
Gelijkwaardig
===
Volledig identiek, ook wat type betreft
<
Kleiner dan
>
Groter dan
<=
Kleiner of gelijk aan
>=
Groter of gelijk aan
© feneX – Cursus PHP & MySQL
p7
Logische
Beschrijving
operators !
Niet
&& / and
En
|| / or
Of
2.4 Selectie- & Loopstructuren 2.4.1 Selectiestructuren PHP kent dezelfde selectiestructuren die we ook in andere programmeertalen zijn tegengekomen: de if else-structuur en de case-structuur. Die laatste heet in PHP echter switch.
Allereerst zullen we de syntax van de if else structuur bekijken. Die ziet er als volgt uit: if (conditie) { statement; } else { statement; } De conditie schrijf je tussen haakjes, terwijl je de statements na de conditie binnen accolades plaatst. Dit is enkel verplicht als je meer dan één statement schrijft, maar voor de overzichtelijkheid schrijven we deze altijd. Merk op dat de else-tak optioneel is en dat je een else if kunt maken door gewoon een extra if toe te voegen binnen de else-tak.
De tweede en laatste selectiestructuur die je in PHP kunt gebruiken, is de switch. Deze gebruik je vooral als je een bepaalde variabele wilt checken. Naargelang de waarde van deze variabele ga je dan verschillende opdrachten uitvoeren. We bekijken de syntax van de switch op de volgende pagina.
© feneX – Cursus PHP & MySQL
p8
switch (uitdrukking) { case waarde1: statements; break; case waarde2: statements; break; default: statements; break; }
2.4.2 Lusstructuren Ook wat iteraties betreft, kent PHP dezelfde structuren waar we al vertrouwd meer geraakt zijn binnen andere programmeertalen en pseudo-code: de while, de repeat until en de for-lus. In PHP heten die dan while, do while en for.
De eerste lus die we nader zullen bekijken, is de while. Hierbij controleer je eerst of de conditie waar is, waarna je de statements binnen de body van de lus gaat uitvoeren zolang de conditie waar blijft. De syntax ziet er als volgt uit: while (conditie) { statements; } De twee iteratiestructuur is de do while, vergelijkbaar met de repeat until uit Oberon of pseudo-code. Hierbij ga je de opdrachten binnen de lus minstens één keer uitvoeren alvorens je de conditie gaat checken. Zolang de conditie waar is, blijf je de opdrachten uitvoeren. De syntax vind je opnieuw hieronder: do { statements; } while (conditie); De derde loop die we gaan bespreken, is de for. Deze gebruik je wanneer je van tevoren weet hoeveel keer je de lus wilt uitvoeren. De syntax hiervan vind je op de volgende pagina.
© feneX – Cursus PHP & MySQL
p9
for (initialisatie lusvariabele, conditie, increment) { statements; }
Hieronder vind je nog een voorbeeld om het iets duidelijker te maken.
for ($i = 1; $i<11; $i++) { //Druk de getallen van 1 tot 10 af. print (i); }
Naast de drie eerder besproken lussen bestaat er ook nog een for-each lus, waar we later op terug zullen komen.
2.5 Invoer & Uitvoer In PHP kun je uiteraard ook gegevens in- en uitlezen. Dat is natuurlijk enigszins logisch gezien PHP zich hoofdzakelijk richt op het creëren van dynamische webpagina‟s. We zullen in eerste instantie beginnen met de uitvoer. Hiervoor kun je twee verschillende dingen gebruiken: ofwel het echo- of het print statement. Als je je de vorige paragrafen nog herinnert, weet je vast nog wel dat we hierboven reeds een voorbeeld van het echo statement gebruikt hebben. Je zou op de volgende twee manieren „Hello World‟ kunnen laten afdrukken op het scherm: Beide manieren zijn zo goed als volledig identiek aan elkaar. Het blijft dus eender welke van de twee je gebruikt. Wij hebben echter steeds voor de print gekozen, omdat deze ook nog teruggeeft of de print opdracht gelukt is of niet, wat later tijdens complexere scripts misschien nog wel van pas kan komen.
© feneX – Cursus PHP & MySQL
p 10
De invoer voor je PHP-scripts wordt aangeleverd door HTML en meer bepaald door HTML-forms. Daarom dat het dus handig is dat je als PHP-scripter al een beetje kaas van HTML gegeten hebt. Voor de volledigheid overlopen we de forms hier wel nog even in de vlucht. Zulk een invoerformulier zou er bijvoorbeeld als volgt kunnen uitzien:
In bovenstaand voorbeeld zou je al heel wat dingen moeten opmerken: allereerst de form-tag met zijn attributen action en method, alsook de verschillende inputtags. Met het action attribuut vertel je waar de waarden uit de form naartoe moeten. Meestal zal dit dezelfde pagina zijn. In onze voorbeelden hebben wij vaak van het volgende gebruik gemaakt: