1. MySQL & PHP Met php en MySQL betreden we een volledige nieuwe wereld van webdatabasetoepassingen.
1.1. MySQL MySQL is een snelle, eenvoudig te gebruiken open-source DBMS die op veel websites voor
databases wordt gebruikt. MySQL wordt ontwikkeld, uitgebracht en ondersteund door het Zweedse bedrijf MySQL AB.
Voordelen van MySQL ✓
Het is snel.
✓
Het is goedkoop, gratis voor niet-commercieel gebruik.
✓
Het is eenvoudig te gebruiken.
✓
Het is voor verschillende besturingssystemen geschikt.
✓
Er is veel technische ondersteuning beschikbaar op het internet.
✓
Het is veilig.
✓
Het ondersteunt ook grote databases.
✓
Het kan worden aangepast naar je eigen behoeften.
1.2. PHP php is een open-source scriptingtaal waarmee je eenvoudige, dynamische, interactieve
webpagina’s kunt maken. php is de afkorting van PHP Hypertext Preprocessor en is een uitbreiding op een taal,
ontworpen door Rasmus Lerdorf met de oorspronkelijke naam: Personal Home Page tools.
Voordelen van PHP ✓
Het is snel.
✓
Het is goedkoop; gratis.
✓
Het is eenvoudig te gebruiken.
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 2 !
✓
Het is voor verschillende besturingssystemen geschikt.
✓
Er is veel technische ondersteuning beschikbaar op het internet.
✓
Het is veilig.
✓
Het ondersteunt een heel pak DBMS-systemen, waaronder MySQL.
✓
Het kan worden aangepast naar je eigen behoeften.
1.3. De samenwerking tussen MySQL en PHP Als je de voordelen van beide open-source pakketten vergelijkt dan zal je al gauw merken dat deze twee dus perfect samen passen.
1.4. PHP en MySQL installeren Om een dynamische website op basis van MySQL en PHP te kunnen uitbouwen, moet je beschikken over webruimte die beide tools ondersteunen. Die webruimte kan je huren op het internet. Je kan ook zelf een webserver opzetten en de nodige software installeren. Het installeren van deze tools valt buiten het bereik van deze cursus. Wens je er echter meer over te weten? Het internet kan een goede hulp zijn. Er werd voor jou een persoonlijke database aangemaakt binnen MySQL op de schoolservers.
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 3 !
2. Communiceren met MySQL Om onze MySQL-database op te bouwen, kunnen we op verschillende manieren communiceren met de DBMS.
2.1. phpMyAdmin Eén van de manieren om met de MySQL-DBMS te communiceren is via een php-tool met de naam phpMyAdmin. Ook op de servers van de school werd deze tool geïnstalleerd. Je kan phpMyAdmin bereiken via de url: ________________________________________________ Om toegang te krijgen heb je een persoonlijke gebruikersnaam en wachtwoord nodig. Jouw login is: ____________________________________________________ Jouw wachtwoord is: _______________________________________________ Probeer jouw login uit. Als alles goed gaat dan krijg je een pagina te zien die er ongeveer uitziet zoals in de volgende afbeelding.
!
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 4 !
2.2. SQL-commando’s via een eenvoudige webpagina Een andere manier om jouw database binnen MySQL te bereiken is via SQL zelf. Om dit te doen zullen we gebruik maken van een html-pagina, die we configureren zodat die met je persoonlijke databank communiceert. Je kan de html-pagina kopiëren uit de groepsmap van de leerkracht en kopiëren naar de Webpagina’s-map (Sites-folder) binnen jouw persoonlijke map. De te kopiëren pagina heet: ___________________________________________ Als je de pagina gekopieerd hebt, dan open je het document met een eenvoudige teksteditor. In de pagina dien je je eigen GEBRUIKERSNAAM en WACHTWOORD in te vullen in de juiste regels om te kunnen connecteren met de MySQL-DBMS:
Je kan de pagina nu uittesten door te surfen naar de volgende url: ______________________________________________________________ Als alles goed gaat, krijg je de volgende pagina te zien:
! In het 2de veld kan je bij wijze van test het SQL-commando: SHOW DATABASES intikken. Druk nu op de knop Submit Query en je krijgt het resultaat te zien: een lijst met databases waar jij kan mee werken.
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 5 !
3. Een database bouwen 3.1. Te koop aangeboden We gaan een online productencatalogus samenstellen. Je bent eigenaar van een dierenwinkel en wilt een catalogus maken voor je klanten met informatie over de dieren die te koop worden aangeboden. Het is niet haalbaar dieren online te verkopen, al speel je wel met het idee om klanten in staat te stellen dieren online te ‘reserveren’ voordat ze in de winkel worden opgehaald. Momenteel is de toepassing eenvoudigweg een online catalogus. Klanten kunnen deze catalogus op het web doornemen en vervolgens naar de winkel komen om een dier te kopen. De gegevens over deze dieren zijn opgeslagen in de database PetCatalog die de klanten kunnen doorzoeken naar informatie over specifieke dieren of diersoorten. Je plan voor de toepassing ziet er als volgt uit: ✓
Klanten in staat stellen informatie over een specifiek dier te selecteren.
✓
Een beschrijving tonen van het dier als de klant op een hyperlink klikt.
3.2. De database ontwerpen In de voorbeeldtoepassing zoeken de klanten in de online catalogus naar gegevens over dieren die ze misschien willen kopen. Je wilt klanten in dit geval informatie bieden die ze aanzetten tot het kopen van een dier. Je wilt de volgende gegevens in de database hebben voor je klanten: ✓
De diersoort: poedel, hamster, eenhoorn, ...
✓
Een naam van het huisdier.
✓
Een beschrijving van het dier.
✓
Een afbeelding van het dier.
✓
De prijs van het dier.
We zullen beginnen met 2 tabellen aan te maken in de database. De eerste tabel gaan we gebruiken om de verschillende soorten huisdieren in te bewaren. De tweede tabel gebruiken we dan om de huisdieren zelf in op te slaan.
De tabel PetType aanmaken De tabel PetType gaan we aan maken met behulp van een SQL-commando. We voorzien één veld in de tabel. Het veld moet de soort bevatten en is uniek en verplicht in te vullen. We gaan dit doen met onze eenvoudige SQL-editor in onze persoonlijke webmap. Vergeet niet de databasename in te vullen in de editor. De database die voor jou werd aangemaakt is: MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 6 !
Het SQL-commando hiervoor is: CREATE TABLE PetType ( Type VARCHAR( 20 ) NOT NULL, UNIQUE (Type) );
Als je dit commando submit dan krijg je ofwel “Query completed. No results returned.” Ofwel een foutboodschap. In dit geval verbeter je je fout en probeer je het opnieuw. Met het commando SHOW TABLES; kan je zien of de tabel aangemaakt werd.
De tabel PetType opvullen We gaan nu met een SQL-commando INSERT INTO de tabel opvullen met verschillende soorten huisdieren. Gebruik het volgende commando om de soort ‘hond’ weg te schrijven in de tabel. INSERT INTO PetType (Type) VALUES ("hond");
Gebruik hetzelfde commando om de soorten ‘kat’, ‘hamster’, ‘kanarievogel’, ‘parkiet’, ‘goudvis’, ... toe te voegen.
De tabel PetType opvragen Als we nu willen zien welke gegevens er in de tabel aanwezig zijn gebruiken we een SELECT-commando. Welk commando moeten we schrijven om alle soorten huisdieren alfabetisch onder elkaar te bekomen?
De tabel Pet aanmaken In de tabel Pet zullen we de huisdieren opslaan die we te koop aanbieden. Van elk huisdier houden we een naam, een beschrijving, de kleur en de prijs bij. De tabel Pet zullen we aanmaken met behulp van phpMyAdmin.
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 7 !
Open phpMyAdmin en selecteer in de linkerkolom de database die voor jou reeds werd aangemaakt. Vindt ook de tabel PetType terug die we met SQL-commando’s hebben aangemaakt. Probeer nu zelf de volgende tabel aan te maken.
Het overeenkomstig SQL-commando om deze tabel aan te maken is: CREATE TABLE Pet ( ID INT NOT NULL AUTO_INCREMENT , Name VARCHAR( 50 ) NOT NULL, Description TEXT, Type VARCHAR( 20 ) NOT NULL, Color VARCHAR( 20 ), Price DOUBLE, UNIQUE (ID) );
De tabel Pet
De tabel Pet opvullen via een importbestand We kunnen de tabel ook opvullen met een importbestand. Haal het importbestand pet.csv over naar je persoonlijke map. Het importbestand bevat de gegevens die moeten worden geïmporteerd. De velden worden gescheiden door een ;-karakter en de regels worden afgesloten met een ↩-karakter. Unicorn;Spiraal hoorn;paard;wit;5000↩ Pegasus;Gevleugeld;paard;wit;8000↩ Lion;”Groot; Met manen in de nek”;kat;geel;2000↩
Probeer nu zelf te vinden, hoe je het bestand kunt importeren in de tabel Pet met behulp van phpMyAdmin.
De tabel PetType opvragen Controleer zowel in phpMyAdmin als met een SQL select-commando of de gegevens geïmporteerd zijn.
3.3. De database bevragen met SQL Geef bij elke vraag het gepaste SQL-commando. 1. Geef een overzicht van alle dieren in de tabel Pet. Zorg er voor het duurste dier onderaan staat. ______________________________________________________________ ______________________________________________________________ 2. Geef een lijst van alle soorten huisdieren die in de tabel PetType zitten. Sorteer de soorten. ______________________________________________________________ ______________________________________________________________ 3. Geef een lijst van alle soorten huisdieren die in de tabel Pet zitten. Sorteer de soorten. Let op: er mogen geen dubbels voorkomen. ______________________________________________________________ ______________________________________________________________ 4. Geef het aantal dieren dat we op dit moment te koop aanbieden. ______________________________________________________________ ______________________________________________________________ MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 9 !
5. Geef de prijs van het goedkoopste en het duurste huisdier. ______________________________________________________________ ______________________________________________________________ 6. Geef de naam van het duurste huisdier. ______________________________________________________________ ______________________________________________________________ 7. Geef de naam, omschrijving en de prijs van alle katten die we op dit moment te koop aanbieden. ______________________________________________________________ ______________________________________________________________ 8. Geef een lijst van alle dieren die we voor maximum 100 euro kunnen aankopen. ______________________________________________________________ ______________________________________________________________ 9. Geef een lijst van alle witte dieren die meer dan 6000 euro kosten. ______________________________________________________________ ______________________________________________________________ 10. Geef een lijst van alle soorten huisdieren. Vermeld per diersoort, hoeveel huisdieren we er van in de tabel Pet zitten hebben. ______________________________________________________________ ______________________________________________________________
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 10 !
4. PHP PHP staat voor PHP Hypertext Preprocessor. Het is een server-side scripttaal en wordt net als ASP eerst door de server bewerkt alvorens de pagina naar de bezoeker wordt gestuurd. Een groot voordeel van PHP is dat het Open Source is. Daarnaast is het platform onafhankelijk. Doordat het open source is kun je zeer veel voorbeelden vinden op het internet van applicaties en is het zeer toegankelijk. En doordat het platform onafhankelijk is hoef je niet met allerlei standaarden rekening te houden. Kortom, een zeer goede keus!
4.1. Inleiding PHP Deze cursus is gericht op de beginnende programmeur op het internet. De cursus vereist kennis van HTML en internet. Verder hoef je niets te kennen. PHP (hypertext preprocessor) is te gebruiken voor het maken van meer omvattende pagina's op internet. HTML kent zijn beperkingen in bijvoorbeeld het maken van een gastenboek, een formulier, een beveiligd deel, een webwinkel etc. HTML is een statische taal. PHP daarentegen is een dynamische taal. Waar HTML ophoudt, daar begint de wereld van de PHP programmeur.
Een HTML pagina werd opgeslagen als een index.html bestand. Een PHP pagina sla je op als een index.php bestand. PHP herken je in een bestand aan de begint tag . Daartussen staat PHP code. PHP code wordt verwerkt in de code van HTML. Je kunt gewoon het programma blijven gebruiken dat je ook gebruikte voor het maken van een gewone HTML pagina. Wat niet aan
te raden valt is een WYSIWYG programma (what you see is what you get) als Frontpage of Dreamweaver. PHP is een serverside taal. HTML wordt op de computer van de bezoeker uitgevoerd en kan
lokaal op de computer bekeken worden voordat je het plaatst op het internet. Een serverside taal houdt in dat je de pagina eerst moet uploaden naar een server en dan vanaf daar kun je de pagina bekijken. Wat wel kan is bijvoorbeeld Notepad/kladblok van Windows. Het resultaat van de pagina komt in de browser te staan als HTML. Alleen voordat de pagina te zien is wordt de pagina eerst uitgevoerd door de server om er een pagina van te maken en verstuurt de server uiteindelijk een hele pagina naar de browser van de bezoeker. De tags van PHP komen op een logische plaats binnen de HTML pagina. In plaats van de tekst zet je er dan de tags van PHP neer met de bijbehorende manier om een tekst weer te geven. Dit zal later in de cursus duidelijk worden. Verder kun je de PHP code zoveel mogelijk proberen te scheiden van de HTML code. De ervaring leert dat je na wat oefeningen vanzelf een manier gaat bedenken om de code overzichtelijk te houden. En de beste manier voor alles is het gewoon te doen. PHP is niet moeilijk te leren als je de basis principes weet. Het blijft moeilijk in te schatten of PHP nu werkelijk iets is voor je of niet. Daarom een aantal voorbeelden waarbij het gebruik van PHP nodig is: MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 11 !
✓
E-mail lezen + verzenden vanaf een website, denk aan hotmail voor je zelf
✓
Polls waarin je bezoekers vraagt om een mening over een onderwerp
✓
opzetten webwinkel met database erachter en het afhandelen van bestelling, creditcard betaling enzovoort
✓
Gastenboek
✓
Beveiligd deel op je site met verschillende gebruikersrechten voor de verschillende gebruikers. De een mag alleen lezen, de ander alleen lezen en toevoegen, een ander weer lezen, toevoegen en bewerken.
✓
Chatbox
Er is nog veel meer mogelijk met PHP. Mijn tip is dan ook om de cursus door te nemen en dan zelf zo snel mogelijk aan de slag te gaan. Want zelf doen blijft het leukst!!
4.2. Variabelen Je kunt PHP herkennen binnen een pagina aan de volgende tags:
of ?>
Tussen de tags komt de PHP code te staan. Het maakt niet uit waar het komt binnen een pagina. Het maken van een PHP pagina kan in elke tekstverwerker. Notepad is zeer geschikt. Een PHP bestand heeft als extensie .php of soms met een 3 of een 4 erachter. Ik gebruik .php als extensie. vb-1.php
Als resultaat krijg je Hello world!! te zien in de browser. De haakjes zijn niet verplicht, de rest is wel verplicht. Dus beginnen en eindigen met aanhalingstekens en op het eind een puntkomma plaatsen. De functie print geeft de browser de opdracht de tekst weer te geven in de browser. In plaats van print kun je ook echo gebruiken. Dit wordt veel vaker toegepast, aangezien de echo functie over meerdere regels valt te verdelen en de print functie maximaal een regel kan beslaan. vb-2.php
Dit moet als resultaat hetzelfde weergeven als vb-1.php. Beide manieren zijn te gebruiken. MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 12 !
Variabelen. Variabelen binnen PHP beginnen met een dollarteken, $, gevolgd door een variabelennaam. Ter afsluiting dient een puntkomma te worden gebruikt. Let op dat de naam van een variabele hoofdletter gevoelig is. vb-3.php
De variabele naam definieert een string als variabele. De inhoud van een string is tekst. De variabele leeftijd omvat een integer, ofwel een getal. Let op het verschil in notatie. Een string heeft altijd aanhalingstekens nodig, een integer als variabele heeft geen aanhalingstekens nodig. Beiden dienen te worden afgesloten met een puntkomma. vb-4.php
In vb-4.php wordt een variabele aangemaakt en vervolgens weergegeven op de pagina. Het aanroepen van een variabele binnen een pagina is dus zeer gemakkelijk te noemen. Variabelen zijn van groot belang binnen het programmeren. De mogelijkheid bestaat om tijdelijk een waarde op te slaan in een variabele en deze later terug te roepen in het script. In ASP wordt een variabele gedefinieerd door de instructie “dim” ofwel Dimension. In PHP begint een variabele altijd met een $ (dollarteken). Belangrijk: Een variabele mag nimmer met een cijfer beginnen. $variabele; // correcte naamgeving $1variabele; // incorrecte naamgeving $variabele1; // toegestaan
Een variabele bevat een waarde (value). Dit kan een cijfer zijn (een integer), of een woord of meer (een string) of een letter (een char). De waarde wordt aan een variabele gekoppeld door middel van het “=” teken. En een variabele dient altijd met een puntkomma te worden afgesloten. $voornaam = “Piet”;
Wil je de variabele weergeven op het scherm, dan kun je gebruik maken van de echo(); functie. Let daarbij goed op de schrijfregels. Als je een regel wilt weergeven zonder verder gebruik te maken van een variabele, dan dient de zin tussen enkele aanhalingstekens te worden geplaatst. echo 'Weergeven op het beeldscherm';
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 13 !
Ga je alleen een variabele weergeven, dan dien je geen aanhalingstekens te gebruiken. echo $variabele;
Wil je een variabele gebruiken binnen een string, dan dien je dubbele aanhalingstekens te gebruiken. In onderstaande voorbeelden staan de mogelijkheden verwerkt. Bestudeer de voorbeelden om de logica te kunnen ontdekken. echo “Mijn naam is $variabele”;
Resultaat: Mijn naam is Piet. Andere mogelijkheid om hetzelfde resultaat te krijgen is:
4.3. Arrays Een array is een ander woord voor verzamelen. Verzamelen in de zin van gegevens als het gaat om PHP. Als je bijvoorbeeld een lijst met persoongegevens wilt hebben, dan kun je met behulp van een array deze gegevens verwerken in de code.
Met bovenstaand voorbeeld zie je op het scherm 1. De [0] is de sleutel tot de gegevens. Door eerst de naam te nemen van de array en daarna de sleutel tot het juiste gegeven krijg je te zien wat je wilt. Let op dat de telling begint met 0. Als je dus “drie” wilt opvragen uit de array moet je echo $gegeven[2]; gebruiken. Als je het lastig vindt om met cijfers te werken, dan kun je zelf een sleutel definiëren. Dat wordt een “associatieve array” genoemd. Voordeel is dat je script beter te lezen valt. Als je later het script gaat bewerken of veranderen weet je sneller waar het over gaat.
Op deze manier kun je makkelijker zien welke waarde opgevraagd wordt. Dit spreekt meer tot de verbeelding dan een willekeurig nummer. Soms kan het handig zijn om een aantal namen van pagina's in een array te zetten en dan te controleren of de naam daarin voorkomt. Komt de naam niet voor in de array, dan moet de code doorgaan naar een standaard pagina, bijvoorbeeld de index. Om te controleren of de waarde in de array staat gebruik je de functie in_array().
Dit voorbeeld controleert of de naam voorkomt in de array $naam. Zo ja, dan wordt de tekst weergegeven die hoort bij de naam. Zo niet, dan wordt er niets weergegeven. Let erop dat de naam hoofdletter gevoelig is. De naam marie zal niet worden weergegeven op de site. De functie in_array(); geeft de waarde True of False terug. True als de waarde voorkomt in de array, false als de waarde niet voorkomt. "; if (in_array ("marie", $naam)) print "Uw naam is Marie"; else
print "Naam komt niet voor";
?>
In het laatste voorbeeld wordt gekeken of de naam bestaat, zo niet, dan wordt de laatste mededeling gedaan.
4.4. Operators Operator is een symbool dat een bepaalde bewerking aanduidt, aldus het Kramers Compact Nederlands woordenboek. Een voorbeeld van een operator is het “ – “ teken. Het min teken duidt de bewerking aftrekken aan.
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 15 !
Voor een programmeertaal is het gebruik van operatoren onmisbaar. Om te zorgen dat je de draad niet kwijt raakt, geef ik hier een klein overzicht van een aantal veel voorkomende operatoren.
Rekenkundige operatoren Operator
Omschrijving
Voorbeeld
Resultaat
+
optelling
2+2
4
-
aftrekking
5-2
3
*
vermenigvuldiging
4*5
20
/
deling
15/5
3
5/2
2.5
5%2
1
10%8
2
10%2
0
%
rest bij deling (modulo)
++
verhoging met 1
$x=5; $x++;
$x=6
--
verlaging met 1
$x=5; $x--;
$x=4
Toekenningsoperatoren Operator
Voorbeeld
Is hetzelfde als
=
$x=$y;
$x=$y;
+=
$x+=$y;
$x=$x+$y;
-=
$x-=$y;
$x=$x-$y;
*=
$x*=$y;
$x=$x*$y;
/=
$x/=$y;
$x=$x/$y;
.
$t=”Dit is “; $t.=”leuk”;
$t=”Dit is “.”leuk”;
%
$x%=$y;
$x=$x%$y;
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 16 !
Vergelijkingsoperatoren Operator
Omschrijving
Voorbeeld
==
is gelijk aan
5==8; // false
!=
is niet gelijk aan
5!=8; // true
>
is groter dan
5>8; // false
<
is kleiner dan
5<8; // true
>=
is groter dan of gelijk aan
5>=8; // false
<=
is kleiner dan of gelijk aan
5<=8; // true
Logische opratoren Operator &&
Omschrijving logische EN (AND)
Voorbeeld $x=6; $y=3; ($x<10 && $y>1) //true
||
logische OF (OR)
$x=6; $y=3; ($x==5 || $y==5) // false
!
logische NIET (NOT)
$x=6; $y=3; !($x==$y) // true
Het uitroepteken zul je vaak tegenkomen in voorbeeldscripts op andere sites. Bepaalt of iets niet zo is. Het kan ook staan voor een bepaalde functie van PHP. Als je in gedachte hebt wat het uitroepteken doet, dan zul je weinig moeite hebben met het begrijpen van andere scripts.
4.5. Commentaar Net als in HTML heb je af en toe de behoefte om commentaar toe te voegen aan de code. Dit om het overzicht te houden als je een pagina maakt met meer dan 100 regels aan code. Leer vanaf het begin jezelf aan dit te doen. Het lijkt wat overbodig om te doen in kleine scripts, maar verderop zul je er profijt van gaan trekken. // commentaar op 1 regel /* commentaar over meerdere regels verdeeld */
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ !17
4.6. Controlestructuren Het is normaal bij het programmeren om de code bepaalde beslissingen te laten nemen. Daarbij valt te denken aan het beslissen of het 's ochtends, 's middags of 's avonds is. Aan de hand daarvan kun je je programma een bepaalde boodschap laten weergeven. Maar om dat te kunnen moet je eerst weten hoe een controlestructuur eruit ziet.
If if ($a > $b) print "a is groter dan b";
Hierboven staat dat als $a groter is dan $b, de browser moet weergeven de tekst: “a is groter dan b”. Door middel van variabelen kun je aan $a en $b waarde toekennen. Op dit moment heb je je programma een keuze laten maken.
If … Else … Makkelijker is het om als het ene niet klopt dat de browser dan gelijk het andere kan weergeven. Door middel van het if … else statement.
In bovenstaand voorbeeld wordt de keuze gemaakt of a kleiner is dan b. Zo ja, dan wordt de eerste lijn tekst weergegeven. Zo nee. Dan wordt de tweede lijn met tekst weergegeven. Nu weet je al aardig hoe je een programma een beslissing kan laten nemen. If (conditie) { // code } else { // andere code }
If … ElseIf … If … Niet altijd heb je genoeg aan twee mogelijkheden. In zo'n geval kun je gebruik maken van een uitgebreidere controlestructuur. In deze structuur heb je de mogelijkheid om twee of meer condities te verwerken in de structuur. If (conditie) { // code } elseif (conditie) { // code
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ !18
} else { // code }
$b) { print (“a is groter dan b”); } elseif ($a == $b) { print (“a is gelijk aan b”); } else { print (“b is groter dan a”); } ?>
In bovenstaand voorbeeld wordt de vergelijking getoetst aan twee condities. Als geen van beide klopt, dan wordt de laatste zin weergegeven. De structuur valt willekeurig uit te breiden met meerdere structuren. Let daarbij wel op de juiste schrijfwijze.
While Het gaat hier om een lus-constructie. De lus wordt uitgevoerd totdat de conditie false wordt. Het kan voorkomen dat de code binnen de lus helemaal niet wordt uitgevoerd wanneer de conditie van in het begin reeds gelijk is aan false.
"; } ?>
Bovenstaand voorbeeld laat een rij zien van 1 t/m 9. De loop wordt uitgevoerd totdat de conditie $a < 10 niet meer true is. Dan houdt de loop vanzelf op met uitvoeren.
Do ... While Een andere lus-constructie is de do ... while-lus. do {
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 19 !
code; } while (conditie);
Hierbij wordt de code binnen de lus minstens één keer uitgevoerd en eventuele meerdere keren totdat de conditie false wordt. "; $i++; } while($i<=5) ?>
For De For-lus is een lus-constructie die je gebruikt wanneer je bij het starten van de lus weet hoeveel keer de lus moet uitgevoerd worden. for (initialization; condition; increment) { code to be executed; }
"; } ?>
Foreach De Foreach-lus wordt gebruikt om door arrays te lopen. foreach (array as value) { code to be executed; }
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 20 !
Elke keer men in de lus gaat wordt value gelijkgesteld aan een volgende element in de array. "; } ?>
4.7. PHP Functie Een functie is een codeblok dat uitgevoerd kan worden wanneer je het nodig hebt. Als je een functie wenst te maken moet je met de volgende punten rekening houden: ✓
alle functies starten met het woord function;
✓
geef elke functie een naam;
✓
zorg er voor dat je uit de naam kan afleiden wat de functie doet;
✓
de naam begint met een letter of een underscore (_), maar niet met een cijfer;
✓
het eigenlijke codeblok schrijf je tussen accolades { };
"; echo "My name is "; writeMyName(); echo ". That's right, "; writeMyName(); echo " is my name."; ?>
PHP Functies met parameters De functie hierboven writeMyName() is een heel eenvoudige functie. De functie schrijft alleen een string naar het scherm. MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 21 !
Om onze functie meer mogelijkheden te geven, kunnen we parameters toevoegen. Een parameter kan je vergelijken met een variabele. Het was je misschien reeds opgevallen dat een functienaam altijd gevolgd wordt door ronde haakjes (). De parameters moeten we tussen die haakjes schrijven. "; } echo "My name is "; writeMyName("Kai Jim"); echo "My name is "; writeMyName("Hege"); echo "My name is "; writeMyName("Stale"); ?>
Functies kunnen meer dan één parameter hebben. "; } echo "My name is "; writeMyName("Kai Jim","."); echo "My name is "; writeMyName("Hege","!"); echo "My name is "; writeMyName("Ståle","..."); ?>
Functies die een waarde teruggeven Functies kunnen ook (berekende) waarden teruggeven aan de instructielijn die hen opriep.
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 22 !
4.8. PHP Formulieren en gebruikersinvoer Het belangrijkste om op te merken bij html-formulieren is dat elk html-object op een formulier onmiddellijk bereikbaar is onder php. We nemen het volgende voorbeeldformulier:
Het html-voorbeeld hierboven bevat twee invoervelden en een submit-knop. Wanneer de gebruiker de velden invult en op de knop drukt dan worden de gegevens verstuurd naar het bestand welcome.php. Het bestand welcome.php ziet er als volgt uit: Welcome . You are years old.
De $_POST-variabele De $_POST-variabele is een array van variabelen en hun waarden die verstuurd werden (met de html POST methode) van een html-formulier naar een php-bestand.
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 23 !
De $_POST variabele verzamelt de gegevens van een formulier met method=”post”. Informatie die verzonden werd met de POST methode is onzichtbaar voor anderen en heeft geen beperkingen op de hoeveelheid informatie die verstuurd wordt. De tegenhanger van $_POST is $_GET. De GET-methode is minder veilig en wordt daarom hier niet verder besproken. Als alternatief op $_POST en $_GET kan ook de variabele $_REQUEST gebruikt worden die alle gegevens bevat van de 3 variabele, $_POST, $_GET en $_COOKIE, samen. Zo kan je ook schrijven: Welcome . You are years old!
4.9. De PHP Date()-functie De PHP Date()-functie vertaalt een tijdstempel in een meer leesbare datum en tijd. Een tijdstempel (of Timestamp) is het aantal seconden die verstreken zijn sinds 1 januari 1970 om 00:00:00 GMT. Dit is vergelijkbaar met ander script- of programmeertalen die eveneens datum- en tijdwaarden bijhouden als een aantal verstreken seconden sinds een bepaald datum. De eerste verplichte parameter van de Date()-functie dient om aan te duiden hoe we de datum wensten te formatteren. Er worden letters gebruikt om de delen aan te duiden. Hier de 3 belangrijkste: • d - de dag van de maand (01-31); • m - de maand als een getal (01-12); • Y - het jaartal in 4 cijfers. "; echo date("Y.m.d"); echo " "; echo date("m-d, Y"); ?>
De Date()-functie kan een optionele tweede parameter ontvangen, namelijk een tijdstempel. Wanneer je dus deze tweede parameter meegeeft dan wordt de tijd gebruikt die voorgesteld wordt door de tijdstempel anders wordt de huidige systeemdatum en -tijd gebruikt. In het voorbeeld verder wordt gebruikt gemaakt van de functie mktime() om een tijdstempel aan te maken die gelijk is aan morgen. De mktime()-functie heeft de volgende syntaxis: MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 24 !
mktime(hour,minute,second,month,day,year,is_dst)
Om de de datum van morgen af te drukken tellen we 1 op bij de dag:
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 25 !
5. PHP en MySQL 5.1. Een verbinding maken met MySQL De eerste stap bij de communicatie met je MySQL-database is verbinding met de MySQLserver maken. Om verbinding met de server te maken, moet je de naam kennen van de computer waarop de database zich bevindt, de naam van je MySQL-account en het wachtwoord van je MySQL-account. Gebruik de functie 'new PDO' als volgt om de verbinding te openen: $conn= new PDO ("mysql:host=$host;dbname=$database",$user,$password);
Om op school een verbinding te kunnen maken met de MySQL-database moet ik het volgende onthouden: $host = $account = $password =
5.2. Een database selecteren Deze instructies zullen we in iedere php-pagina moeten opnemen. Daarom slaan we dit best op in een afzonderlijk bestand die we nadien in elke pagina include’n. Maak dus een bestand met de naam connect2db.inc en voeg de volgende regels eraan toe:
“;
Vanaf nu kunnen we in elke php-pagina de volgende instructie toevoegen om een connectie te maken met de database: include(“connect2db.inc”);
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 26 !
Wanneer we de database niet meer nodig hebben moeten we uiteraard de verbinding verbreken en dit doen we met het command: $conn=null;
5.3. SQL_query’s versturen Best plaats je je SQL-query in een variabele die je naar de MySQL-server stuurt met de functie mysql_query. $query = “select * from pet”; $stmt = $con->prepare ($query); $stmt->execute(); $result= $stmt->setFetchMode(PDO::FETCH_ASSOC);
Het commando om één rij aan gegevens op te halen van het resultaat van de query hebben de volgende instructie nodig: $row=$stmt->fetch();Eén rij gegevens ophalen
Deze opdracht haalt een rij gegevens uit de gegevenstabel op en plaatst ze in de arrayvariabele $row waarvan de index-namen de veldnamen uit de tabel zijn. Voorbeeld in de tabel Pet bestaat een veld met naam petName. Dit kunnen we nu aanspreken als $row[‘petName’].
5.4. Alle rijen met gegevens met een lus ophalen Meestal zal een query meerdere rijen als resultaat op leveren. Daarom zullen we met een lus moet werken. De gebruikelijkste manier om de gegevens te verwerken gaat met een while-lus: while ($row = $stmt->fetch()) { echo “$row[‘petType’]: $row[‘petName’] ”; }
Door het command extract($row) toe te voegen, wordt de array $row opgesplitst in variabelen met een naam gelijk aan dat van de veldnaam. Hierdoor wordt de code iets leesbaarder en ziet ze er als volgt uit: while ($row = $stmt->fetch()) { extract($row); echo “$petType: $petName ”; }
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 27 !
Het programma petDisplay.php hieronder selecteert alle katten uit de tabel Pet en toont de informatie in een HTML-tabel op de webpagina. De variabele $Type bevat gegevens die door een gebruiker in een formulier zijn ingevoerd.
Displays all pets in selected category.
*/ ?> Pet Catalog
//horse was typed in a form by user
$query = "SELECT * FROM Pet WHERE Type='$pettype'"; $stmt = $con->prepare ($query); $stmt->execute(); $result= $stmt->setFetchMode(PDO::FETCH_ASSOC);
/* Display results in a table */ $pettype = ucfirst($pettype)."s"; echo "
Hieronder zie je de webpagina die het programma weergeeft.
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 28 !
! Het programma gebruikt een while-lus om alle rijen in de tijdelijke locatie op te halen. Soms is het handiger een for-lus te gebruiken, bijvoorbeeld als je een nummer in de lus moet gebruiken. Je moet weten hoeveel rijen met gegevens zijn geselecteerd als je een for-lus wilt gebruiken. Gebruik de php-functie mysql_num_rows op de volgende manier om het aantal geselecteerde rijen te achterhalen: $nrows = $stmt->rowCount();
De variabele $nrows bevat het aantal geselecteerde rijen na het uitvoeren van de query. Met dit getal maak je op de volgende manier een for-lus die alle rijen ophaalt: for ($i=0;$i<$nrows;$i++)
{ $row = $stmt->fetch(); // opdrachtenblok }
Pas het programma aan zodat het een genummerde lijst toont van alle honden in de Pet tabel en doe dit met een for-lus en noem het petDisplayFor.php. Het resultaat zou er zo moeten uitzien:
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 29 !
!
5.5. Gegevens met functie ophalen In de meeste programma’s haal je gegevens uit de database op. Vaak worden de gegevens op verschillende plaatsen in het programma gehaald of door meer dan één programma in je toepassing. Functies, opdrachtenblokken die specifieke taken uitvoeren, zijn voor deze situaties ontworpen. Het programma getData.php laat zien hoe je een functie gebruikt om gegevens op te halen. De functie in het voorbeeld haalt gegevens op voor elk willekeurig huisdier in de database Pet Catalog. De gegevens worden in een array opgeslagen, en de array wordt door het hoofdprogramma geretourneerd. Het programma kan de gegevens vervolgens op elke gewenste manier verwerken. In dit geval worden de gegevens op een webpagina weergegeven.
Gets data from a database using a function
5.6. Gegevens van de gebruiker ophalen Veel programma’s zijn ontworpen om vragen te stellen die gebruikers beantwoorden door gegevens in te voeren. Soms worden die gegevens in een database opgeslagen, en soms worden de gegevens gebruikt om informatie op te zoeken.
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 31 !
HTML-formulieren gebruiken HTML-formulieren zijn erg belangrijk voor interactieve websites. Op een van de volgende manieren geef je een formulier weer met php: Gebruik echo-opdrachten om de html voor een formulier te echoën. Bijvoorbeeld: \n \n \n \n”; ?>
Gebruik html buiten de php-onderdelen. Een eenvoudig statisch formulier hoeft niet aan het php-gedeelte te worden toegevoegd. Bijvoorbeeld:
Beide manieren produceren hetzelfde formulier. Alle velden van een formulier van het type POST worden weergegeven door het programma processform.php. Na het submit’en van het formulier wordt het programma uitgevoerd.
Script name:
Let op het volgende in het programma displayForm.php: ✓
Een array voor de labels in het formulier wordt gemaakt. De sleutels zijn de veldnamen.
✓
Het programma processform.php wordt vermeld als het script dat wordt uitgevoerd als het formulier wordt verstuurd. De gegevens in het formulier worden verstuurd naar processform.php, dat de gegevens verwerkt.
✓
Het formulier is opgemaakt met een html-tabel.
✓
Het script doorloopt de array $labels met een foreach-opdracht. De html-code voor de tabel wordt door de lus gemaakt.
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 33 !
! Als Goliath Smith het formulier invult en indient, dan produceert het programma processform.php de volgende uitvoer: firstName = Goliath midName = lastName = Smith street = 1234 Tall Street city = Big City state = TX zip = 88888
In het programma processform.php worden alle element van de ingebouwde array $_POST weergegeven omdat beide formulier in deze paragraf gebruikmaken van de methode POST, net als de meeste andere formulier.
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ !34
6. Pet Shop Herneem het programma petDisplay.php en bewaar het als petCatalog.php. Pas het aan zodat het er ongeveer uitziet zoals hieronder. Breidt eveneens de pagina uit zodat onderaan een selectielijst komt met de mogelijkheden: Hond, Kat, Paard. Wanneer men dan de submit-knop aanklikt krijgt men een lijst de zien van enkel de geselecteerde diersoort.
! De code om de selectielijst weer te geven zou er als volgt kunnen uitzien:
Zoals je ziet is de form action nog steeds processform.php. Zo kun je zien wat er doorgestuurd wordt naar het verwerkingsprogramma. De bedoeling is nu dat het programma niet processform.php aanroept wanneer de gebruiker de submit-knop aanklikt maar wel de pagina zelf (zichzelf dus), en dan enkel die records afdrukt die voldoen aan de gemaakte keuze van de gebruiker. MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 35 !
Wanneer we nu terug in het programma petCatalog.php komen, na de selectie van de gebruiker, dan bevat de waarde $_POST[“zoekType”] de keuze van de gebruiker. Aan de hand van die waarde kunnen we onze sql-query aanpassen naar: select * from Pet where Type = “$_POST[‘zoekType’]”;
Pas het programma petCatalog.php aan zodat deze keuzelijst functioneert.
6.1. Selectielijst automatisch vullen met petTypes We zullen onze Pet Catalog verder uitbreiden. Momenteel worden in de selectielijst enkel 4 vaste waarden getoond die we voorgeprogrammeerd hebben. Stel: er komt een nieuwe diersoort bij. Dan moeten we in het huidige geval onze code aanpassen. Dit wordt weleens vaak vergeten. Om dit te vermijden, zullen we ons programma aanpassen zodat de selectielijst automatisch opgevuld wordt met alle mogelijk diersoorten in onze databank. Welke sql-commando geeft ons als resultaat de verschillende diersoorten (Types) weer? ______________________________________________________________ Herschrijf nu het gedeelte van de selectielijst zodat die automatisch gevuld wordt met het resultaat van bovenstaande query.
6.2. Pet Catalog: zoekveld op naam We werken verder aan een uitbreiding van onze Pet Catalog. Zorg ervoor dat naast het selectiemenu voor de diersoort ook een invulveld komt om te zoeken op de naam.
MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ 36 !
7. Wat moet ik kennen... 7.1. ... van MySQL? Kunnen inloggen in de webtool phpMyAdmin met je persoonlijke gebruikersnaam en wachtwoord. url: http:// ___________________________________________________ login: ______________________________________________________ wachtwoord: _________________________________________________ Mijn persoonlijke database kunnen selecteren binnen phpMyAdmin. Bestaande tabellen binnen mijn persoonlijke database terugvinden en de structuur en de inhoud kunnen bekijken. Een nieuwe tabel toevoegen aan mijn persoonlijke database binnen phpMyAdmin. Velden toevoegen van verschillende gegevenstypes en veldeigenschappen zoals unique, auto-increment, null toegelaten of niet kunnen instellen bij de velden. Veldnamen en -eigenschappen kunnen wijzigen in bestaande tabel. Records kunnen invoegen, wijzigen, verwijderen in een tabel binnen je persoonlijke database binnen phpMyAdmin.
7.2. ... van PHP? Kunnen surfen naar je persoonlijke webmap of onderliggende mappen en bestanden. url: http:// ___________________________________________________ Een nieuwe webpagina kunnen aanmaken in mijn favoriete editor (TextWrangler, Espresso, ...) en binnen de pagina de correcte -tags toevoegen om de php-code in de pagina te integreren. Variabelen kunnen gebruiken. Waarden toekennen aan variabelen (=). Operatoren (+, -, *, /, %, ++, --, .) kunnen toepassen op variabelen. Toekenningsoperatoren (+=, -=, *=, /=, %=) kunnen gebruiken. Vergelijkingsoperatoren (==, !=, <, <=, >, >=) en logische operatoren (&&, ||, !) kunnen toepassen. Commentaar (// of /* en */) kunnen invoegen. Controlestructuren kunnen gebruiken zoals if (…) {…} if (…) {…} else {…} if (…) {…} elseif (…) {…} MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ !37
while (…) {…} do {…} while (…); for (…;…;…) {…}
7.3. ... van PHP en MySQL? Weten wat het bestand connect2db.inc doet en weten wanneer het moet toegevoegd worden aan onze php-programma's. Weten hoe je een sql-instructie stuurt naar de MySQL database. $query = "select * from table"; $result = mysql_query($query) or die ("fout in sql-commando!");
Weten hoe je één record ophaalt uit een MySQL tabel na het sturen van een sqlinstructie. $row = mysql_fetch_array($result); extract($row);
Weten hoe je meeerdere records ophaalt uit een MySQL tabel na het sturen van een sql-instructie. while ($row = mysql_fetch_array($result)) { extract($row); … };
7.4. ... van een WebApp maken? Kunnen in je persoonlijke webmap een submap aanmaken om al programma's (en/of webpagina's en afbeeldingen) voor je WebApp te groeperen. Kunnen een index-pagina aanmaken die in een html-table alle records uit je database tabel weergeeft in kolommen. Elke kolom is voorzien van kolomkoppen. Weten wat er bedoeld wordt met de GET-methode omgegevens door te geven aan het opgeroepen programma. Kunnen in de index-pagina van je WebApp een doorklik-link voorzien om naar een detailpagina van je record te gaan, waar je je gevens dan kunt wijzigen. Kunnen een webpagina maken met een html-formulier erop waar je alle velden van het geselecteerde record kunt op weergeven en wijzigen. Weten wat er bedoeld wordt met de POST-methode om gegevens door te geven aan het opgeropen programma. Kunnen een link aanbrengen in je index-pagina van je WebApp om records te verwijderen. MySQL - PHP - 2010 - Bert J.
U bevindt zich hier ☞ !38
Kunnen een link aanbrengen in je index-pagina van je WebApp om nieuwe records toe te voegen. Kunnen de kolomkoppen op de index-pagina voorzien van links die de tabel vervolgens sorteert volgens de aangeduide kolom. Kunnen een zoekveld voorzien op de index-pagina om records te zoeken in de tabel.