Inhoud. Cursus PHP & MySQL



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

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

Test Joomla op je PC 1

Koppeling met een database

Handleiding Websitebeheer

Central Station. CS website

1 Inleiding Installatie 21. WAMP met Apache Friends 23. XAMPP starten en controleren 26. LAMP 32 De installatie ongedaan maken 33

Over PHP. PHP en MySQL. 1.1 Inleiding. In dit hoofdstuk maak je kennis met PHP. Hoe werkt deze

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

Een database gebruiken

HTML en CSS. Je website bestaat uit HTML. Dat is een taal die browsers (Internet explorer, Chrome, Safari) kunnen lezen.

Producten toevoegen. Inleiding

CMS Template Handleiding

Handleiding website. Inloggen Start uw internet browser en ga naar

A.C. Gijssen. 0.3 PHP en MySQL

Handleiding Word Press voor de bewoners Westerkaap 1

Bijlage Inlezen nieuwe tarieven per verzekeraar

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

Handleiding FTP. Uitleg over het aanpassen van de website uit het basispakket, met het programma FileZilla

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

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

Inhoud. Handleiding Dododent. Beste tandarts of praktijkmanager,

Online aanvragen - Gebruikershandleiding. Online aanvragen Gebruikershandleiding

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

Bij het opstarten van het programma zie je

Om in te loggen in het CMS (Content Management Systeem) gaat u naar Hier ziet u het inlogscherm:

Van Dale Elektronisch groot woordenboek versie 4.5 activeren en licenties beheren

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

Xampp Web Development omgeving opzetten onder Windows.

OVM 2.0. Stappenplan. Leerling exporteren en importeren

JOOMLA! GEBRUIKSVRIENDELIJKHEID IN DE PRAKTIJK. Tips en hulpmiddelen voor gebruiksvriendelijkheid

Mach3Framework 5.0 / Website

Handleiding OVM 2.0. Beheerder. Versie oktober 2012

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

PHP-OPDRACHT SITE BOUWEN

GEBRUIKERSHANDLEIDING Content Management Systeem. Gebruikershandleiding RelaxWeb CMS

Handleiding NarrowCasting

Leerlingenhandleiding Beginnen met FlexBase

CMS Made Simple eenvoudig uitgelegd CMS MADE SIMPLE- Eenvoudig uitgelegd

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

Automatische conversie banknummers naar het IBAN formaat

Handleiding bij WSM MailformGenerator

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.

Gebruikershandleiding

Handleiding Resultaatmeetsysteem en Mezzedo

Inhoud van de website invoeren met de ContentPublisher

Handleiding wordpress

Elektronisch factureren

Die vraag krijg ik regelmatig. De meest voorkomende situaties zijn deze:

Drupal lokale installatie op Windows 7.

Handleiding Joomla! Frontend, content en gallery. september 2014 versie 1.0

Handleiding voor het gebruik van de community website van OBS t Padland

mymanualsolarapp - What s Your Solar Power Today?

Globale kennismaking

Basis handleiding CMS

Handleiding. Ouderportaal. CBS De Lichtbaak

USB Webserver installatie en gebruik

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

Zorgmail handleiding. Inhoud

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

Van Dale Groot woordenboek van de Nederlandse taal 14 activeren

OFFICE 365. Start Handleiding Leerlingen

Een weblog maken voor je klas

Aan de slag met Acadin

van PSD naar JavaScript

Gebruikershandleiding Website RKVVO

Inhoudsopgave. versie 0.8


Toelichting op enkele knoppen: (als u de muis bij een knop houdt, verschijnt een tekst met een korte aanwijzing (tooltip) bij deze knop).

Handleiding CMS Online Identity Webontwikkeling. Handleiding CMS

Foto web applicatie documentatie

LES 11: VAN LOKAAL NAAR ONLINE. Lesoverzicht: Aan de slag Domeinnaam Web hosting FTP gegevens FTP programma s Database exporteren Samenvatting

Handleiding. Beheeromgeving

Handleiding CMS Made Simple

UNIDIS KLANTENDAG 2013 UW ADMINISTRATIE SEPA PROOF TRAINING

Downloaden beveiligingscertificaat BRON Voor Windows XP en eerdere versies van Windows

De online winkel is te bereiken via en via een link op de site

Publiceren met WordPress

Inloggen. In samenwerking met Stijn Berben.

De nieuwste editie van dit document is altijd online beschikbaar: Activeren en beheren licenties

Handleiding Mijn Kerk

Websites i.s.m. School

De webserver c.q. uw hosting-account (waarop Mail to Go Pro geïnstalleerd wordt), dient te voldoen aan minimaal de volgende vereisten :

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

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

Beginnen met Drupal 7. Voor beginners

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

Handleiding voor het presenteren van uw kunstwerken op

Handleiding website Buurten Met Uitzicht

Loremipsumdolorsitamet,consectetue radipiscingelit.aeneancommodoligula egetdolor.aeneanmassa.cumsociisnat oquepenatibusetmagnisdisparturient

Handleiding Webwinkel

Factuur Beheer. Gebruikers handleiding

Downloaden beveiligingscertificaat BRON Voor Windows versies vanaf Windows Vista

Bitrix Site Manager gebruikershandleiding BureauZuid

Algemene handleiding beheermodule: WORDPRESS. digital4u.nl effectief op internet

Handleiding Mooy Logistics Servicedesk

Het gebruik Rechten Distributie t.b.v. commerciële doeleinden Vragen of opmerkingen Voor wie is de ZZP-Tool... 4

Handleiding gebruik ledengedeelte website Amsterdamse Golf Club

Transcriptie:

Cursus PHP & MySQL

Inhoud Inhoud... 2 1. Inleiding... 3 2. Ontwikkelomgeving... 4 3. HTML en CSS... 7 4. Programmeren... 13 5. Variabelen... 23 6. Opbouw website... 27 7. Interactie... 30 8. MySQL... 31 9. Database en PHP... 32 10. Fotoalbum... 40 11. Webwinkel... 42 Bijlage 1: usbwebserver... 45 betekenis symbolen Informatie opdracht Aandachtspunt 2

1. Inleiding De cursus PHP & MySQL behandelt de programmeertaal PHP en het databaseprogramma MySQL zodat je in staat bent om bijvoorbeeld een eenvoudige webwinkel te bouwen. Om deze cursus te kunnen volgen wordt enige kennis van HTML en CSS verondersteld. HTML is nodig voor de structuur van je webpagina s, invoer van gegevens via formulieren en links te maken naar de verschillende pagina s. Alle opmaak wordt geregeld via een CSS. Als je van deze onderwerpen meer wilt weten vraag dan naar de cursus HTML en CSS. Je kunt ook kijken op http://www.handleidinghtml.nl/ PHP & MySQL werken volgens het client-server-principe. Dit betekent dat je naast je pc waar een browser is geïnstalleerd (client) ook een webserver nodig hebt. In de praktijk als je website online gaat, neem je een abonnement bij een provider om je site te hosten. In deze leeromgeving maak je gebruik van een lokaal geïnstalleerde webserver. Programmeren betekent nog steeds dat er code ingetoetst moet worden. Om deze klus gemakkelijker te maken gebruik je een editor. Het voordeel van een editor is dat deze je code controleert op fouten. Door met kleuren te werken laat de editor zien of de code aan bepaalde voorwaarde voldoet. Het werkt ongeveer als de spellingscontrole in Word. Notepad++ is een voorbeeld van een editor. Alle genoemde software is open source software en gratis te downloaden. Veel succes. Er is vraag naar php-programmeurs op de arbeidsmarkt! http://www.insyde.nl/ 3

2. Ontwikkelomgeving Om de opdrachten in deze cursus te kunnen maken heb je een ontwikkelomgeving nodig. Zoals in de inleiding al is verteld, websites werken volgens het cliënt-server-principe. Hierbij is de browser de cliënt kant; een programma als Internet Explorer of Firefox is op elke pc wel aanwezig. In de praktijk wordt je website gehost bij een provider en daar draait de webserver. Tijdens deze cursus werk je met een webserver op je pc. Er zijn meerdere webservers gratis te downloaden zoals Xampp en EasyPHP. In deze cursus is gekozen voor USB-webserver. De webserver voert de programma s, die samen je website vormen, uit. Het is echter ook handig om een programma te hebben waarin je de programma s schrijft, een editor. Dit kan ook met een eenvoudige tekstverwerker als Kladblok, maar een editor heeft als voordeel dat je programmacode in kleuren wordt gepresenteerd. Als je code niet aan de syntax voldoet dan krijg niet de juiste kleur. Dit voorkomt erg veel typefouten en werkt dus prettiger. Editors zijn in diverse soorten en maten gratis te downloaden; hier is gekozen voor Notepad++. Opdracht downloaden usbwebserver Ga naar de website www.usbwebserver.net Download programma en handleiding (zie bijlage) en installeer USBWebserver Opdracht Installeren USBWebserver In de bijlage van deze cursus is de handleiding te vinden waarin de installatieprocedure wordt behandeld. - Voer de installatie uit. Let op: plaats het gedownloade zip-bestand in de juiste map; daar wordt het programma geïnstalleerd. Er worden geen vragen gesteld over mappen e.d. - Start USB Webserver op en kijk of bij Apache en MySQL groene vinkjes verschijnen 4

Opdracht testen USBwebserver Start je browser op en toets in als url: http://localhost:8080/index.php Als voorgaande acties zijn gelukt verschijnt er een scherm met een dankwoord. Opdracht testen MySQL MySQL is een databaseprogramma. Hoe je een database aanlegt en gegevens invoert, wordt later behandeld. Er is een PHP-programma meegeleverd waarmee je de meeste handelingen in MySQL via een grafische interface kunt uitvoeren; dit programma heet PHPMYADMIN. - Start Internet Explorer op (of een andere browser) - Toets als url in: http://localhost:8080/phpmyadmin - Gebruikersnaam en wachtwoord staan gegeven (root en usbw) - Klik op Start In het eerste scherm staan links (grijze kolom) de databases. Rechts een serie tabbladen met diverse acties. 5

Opdracht downloaden en installeren Notepad++ Ga naar de website www.notepad-plus-plus.org en download de laatste versie. Installeer Notepad++. Je werkomgeving is nu klaar. - Er draait een webserver (Apache) die je PHP-programma s uitvoert. - Met de editor Notepad++ kun je de programma s invoeren. - Het databaseprogramma MySQL is operationeel Let op de mappenstructuur: - Usbwebserver heeft een map ROOT waarin de php-programma s moeten staan - Er is een map MYSQL/DATA/ waar de database komt te staan Notepad++ - Bij Instellingen / voorkeuren / nieuw document kun je de bestandslocatie aangeven; bv. usbwebserver/root 6

3. HTML en CSS Om deze cursus te kunnen uitvoeren is enige kennis van HTML en CSS noodzakelijk. HTML is nodige voor: - Structuur van de webpagina s (schermindeling) - Structuur van de website (sitemap) - Invoerformulieren Structuur webpagina s. In HTML-code zijn er drie mogelijkheden om de structuur van een pagina te bepalen: - Frames - Tabellen - Divisions Frames worden bijna niet meer gebruikt omdat je met tabellen en divisions flexibeler bent. In het voorbeeld wordt de opbouw van een pagina gegeven met de tabel-code en met de division-code. Via een CSS wordt de opmaak bepaald zoals achtergrondkleur, grootte van het vak en de positie. Om een CSS te kunnen maken moet je weten wat classes en id s zijn. Als je het voorbeeld niet begrijpt vraag dan naar de cursus HTML en CSS of het boek HTML en CSS de basis van uitgever Pearson. Voorbeeld voetbalvereniging NOAD (Nooit Opgeven Altijd Doorgaan) In het voorbeeld zijn de tabellen van een rand (border) voorzien zodat je kunt zien dat er meerdere tabellen in elkaar genest zijn. 7

In HTML-code: 8

Toelichting: - Let op het inspringen; hierdoor is duidelijk te zien dat er vier tabellen zijn. - Met commentaarregels kun je aangeven welke functie elke tabel heeft - De links naar andere pagina s: <a href= nieuws.html >NIEUWS</a> - De link naar het stylesheet (zie 4 e regel) - In de pagina gastenboek-toevoeg.html vind je de code voor een formulier. CSS Midden, groen, kop, menu en inhoud zijn classes die horen bij de html-tag <td>. Omdat elke cel in een tabel een andere opmaak kan hebben, moet je voor elke cel een classe maken. 9

Hetzelfde voorbeeld met divisions. De html-code. 10

CSS De classes zijn vervangen door id s. Id s beginnen met een # In de HTML-code kun je zien dat elke <div> zijn eigen id heeft. 11

Opdracht HTML en CSS Op de CD die bij het cursusboek zit staan de bestanden NOAD_TABLE.ZIP en NOAD_DIV.ZIP. - Plaats deze bestanden in de map van waaruit je webserver programma s opstart (bij Xampp is dat bv. htdocs en bij usbwebserver de map root). - Laat de zip-files uitpakken. - Start je webserver - Start de table-versie van de website van NOAD (http://localhost:8080/home_table.html - Of start de div-versie (http://localhost:8080/home_div.html) Het is mogelijk dat de zip-file tijdens het uitpakken een map heeft aangemaakt; de url wordt dan http://localhost:8080/noad_table/home_table.html. De webserver voert ook html-bestanden uit. Omdat er geen servergerichte programmeertaal in voor komt, zal de server niets anders doen dan de code doorsturen naar de browser. De browser voert html en css uit. 12

4. Programmeren Simpel gezegd is programmeren een opdracht in mensentaal omzetten naar een computertaal; een programmeur is een soort tolk. Omdat de computer binair werkt kan hij slechts eenvoudige handelingen verrichten. De taak van de programmeur gaat dus verder dan de taak van een tolk. Naast het vertalen moet een programmeur de opdracht ook kunnen analyseren. In dit geval betekent analyseren dat de opdracht vertaald moet worden naar deel-opdrachten die door de computer uitgevoerd kunnen worden. Een beetje logisch kunnen nadenken is een belangrijke eigenschap van een programmeur. In de volgende opdrachten worden de handelingen die een computer kan uitvoeren besproken. Dit zijn de controlestructuren: - De sequentie (opdrachten in volgorde uitvoeren) - De beslissing (een keuze maken uit ja/nee-vragen) - De herhaling (lussen maken waarin opdrachten worden herhaald) Variabelen. De meeste websites zijn interactief, d.w.z. dat de gebruiker acties kan uitvoeren waardoor de computer andere resultaten laat zien. Denk bv. aan het intoetsen van een zoekopdracht in Google of het inloggen bij je bankrekening. Zodra een website om invoer van gegevens vraagt heb je te maken met variabelen. Ingevoerde gegevens worden vastgelegd in geheugen van de computer. Dat geheugen kun je vergelijken met een ladenkast. Voor op het laadje kun je de naam plaatsen van de variabele (geheugenadres); in het laadje zit de inhoud (de ingevoerde gegevens). Er zijn programmeertalen waarbij je de variabelen eerst moet declareren; dit is het benoemen van de variabelen die je gaat gebruiken en van welk type ze zijn. In PHP is dat niet nodig, afhankelijk van wat je invoert past PHP zich aan. Voer je een getal in dan wordt de variabele numeriek. In een client-server-omgeving heb je te maken met twee werelden ; de wereld van de client en de wereld van de server. In websites betekent dit dat je variabelen hebt in HTML en in PHP (later komt daar MySQL nog bij). Variabelen moeten van de client naar de server worden doorgegeven en omgekeerd. 13

POST en GET Met het Post en Get commando kunnen gegevens van de client naar de server worden gezonden. In de volgende voorbeelden wordt de werking van beide commando s besproken. POST In een website heb je een inlogscherm; in HTML ziet dat er zo uit: <form name= inlogscherm method= post action= programma.php > Inlognaam: <input name= inlognaam ><br> Wachtwoord: <input name= wachtwoord type= password ><br> <input name= submit type= submit value= log in > </form> Als het programma wordt uitgevoerd zullen, door een klik op de knop log in, de gegevens naar de server worden verzonden. Hier kunnen de gegevens worden overgenomen door PHPvariabelen; dat gaat als volgt: $inlognaam = $_POST[ inlognaam ]; $wachtwoord = $_POST[ wachtwoord ]; Echo Als inlognaam heb je ingevoerd $inlognaam ; Echo je wachtwoord is $wachtwoord ; Let op het verschil in naamgeving van variabelen: - in HTML gewoon woorden (letters) - in PHP begint elke variabele met het string-teken (dollar-teken), bovendien zijn variabelen in PHP hoofdlettergevoelig. PHP stuurt de gegevens naar de browser met het echo-commando. Post kun je overal vervangen door get en dan werkt het ook. Wat is het verschil? Bij de Get-methode zijn de variabelen zichtbaar in de url in de adresbalk. De lengte van de url is beperkt tot 1024 tekens; Post mag onbeperkt lang zijn. GET Get is ook te gebruiken om variabelen met een link mee te sturen. In HTML ziet dat er zo uit: <a href= programma.php?productnummer=1&productnaam=computer>computer</a> In PHP $productnummer = $_GET[ productnummer ]; $productnaam = $_GET[ productnaam ]; Opdracht POST en GET Test de programma s prog_post.php en prog_get.php 14

SEQUENTIE Een voorbeeld van de structuur Sequentie. De computer zal alle programma-regels achterelkaar uitvoeren. De opdracht is om een programma te schrijven waarbij de gebruiker twee getallen moet invoeren en het programma de vier basis-berekeningen (+, -, X, / ) uitvoert en de uitkomsten laat zien. Programmeren is eerder genoemd het omzetten van menselijke gedachten naar computerstructuren. Als hulpmiddel worden bepaalde schematechnieken gebruikt. Programma Structuur Diagrammen zijn schema s om structuur te brengen in je oplossing. Bij deze voorbeelden worden ze gegeven; later leer je meer over schematechnieken. PSD LEES getal een ; A LEES getal twee ; B SOM = A + B VERSCHIL = A B PRODUCT = A * B QUOTIENT = A / B SCHRIJF SOM SCHRIJF VERSCHIL SCHRIJF PRODUCT SCHRIJF QUOTIENT Opdracht Rekenen Open het programma REKENEN.PHP in een editor en bestudeer onderstaande toelichting. Regel Commando Toelichting 2 If(!empty($_POST[ submit ])) Het programma test of de submit-knop is aangeklikt of niet (leeg); JA dan wordt regel 3 t/m 16 uitgevoerd; NEE dan regel 24 t/m 39. 4 $A = $_POST[ A ]; String A wordt gevuld met de inhoud van de variabele A die via het POST-commando is overgekomen uit het HTML-formulier. Elke regel in PHP eindigt met ; (puntkomma) 6 $SOM = $A + $B De variabele SOM krijgt de inhoud van de optelling van A en B Rekenkundige operatoren: + - * / 10 echo "de som van ". $A. " en ". $B. " is: ". $SOM. "<br>"; Optellen Aftrekken Vermenigvuldigen Delen Het echo-commando regelt de weergave via het scherm; tekst staat tussen. Tekst en variabelen worden gescheiden door een punt. HTML-codes kunnen opgenomen worden als tekst. 15 echo "<a href=\"rekenen.php\"> Als HTML-codes ook voorkomen in PHP (zie aanhalingstekens ) dan wordt vóór de HTML-code een \ (backslash) geplaatst. 15

Opdracht Drukkerij Voor het drukken van informatiegidsen wordt door een drukkerij het te betalen bedrag exclusief BTW als volgt bepaald: vast tarief 75,00 + 0,02 per pagina. Maak een programma dat aan de hand van het ingelezen aantal pagina s het te betalen bedrag inclusief 19% BTW berekent en afdrukt. PSD Lees AANTAL BEDRAG = 75 + (0.02 * AANTAL) BTW = BEDRAG * 0.19 BETALEN = BEDRAG + BTW Schrijf BEDRAG Schrijf BTW Schrijf BETALEN Opdracht Verkoopprijs Een winkelier heeft de behoefte aan een programma dat, aan de hand van de ingevoerde inkoopprijs, voor hem de verkoopprijs inclusief BTW berekent en afdrukt. De winstmarge voor de winkelier is 25% van de inkoopprijs, de BTW is 19%. Maak een PSD en programma. Voorbeeld: Inkoopprijs is 60,00 Winst 25% van 60,- 15,00 + Verkoopprijs excl. btw 75,00 BTW 19% van 75,- 14,25 + Verkoopprijs incl. btw 89,25 In programma s zitten vaak vragen die testen of een variabele inhoud heeft of niet. Hiermee kun je vaststellen wat de gebruiker heeft gedaan; bv. geklikt op de knop verzenden/submit. Dit is van belang om te weten welk deel van het programma moet worden uitgevoerd. Voorbeelden van dergelijke vragen: If(!empty($_POST[ submit ])) if(isset($_post[ submit ])) Deze vragen doen hetzelfde; kijken of $_POST[ submit ] NIET LEEG is; is er op de submit-knop geklikt? 16

BESLISSING De winkelier uit de opdracht Verkoopprijs heeft gevraagd of het programma aangepast kan worden. In het assortiment zitten nu ook producten met een BTW-tarief van 6%. Naast de inkoopprijs moet de winkelier ook kunnen aangeven welk BTW-tarief van toepassing is. Lees INKOOPPRIJS Lees BTW_TARIEF WINST = INKOOPPRIJS * 0.25 VERKOOPPRIJS = INKOOPPRIJS + WINST BTW_TARIEF = laag JA NEE BTW= VERKOOPPRIJS * 0.06 BTW = VERKOOPPRIJS * 0.19 WINKELPRIJS = VERKOOPPRIJS + BTW Schrijf VERKOOPPRIJS Schrijf BTW Schrijf WINKELPRIJS Opdracht BTW-tarief - open programma btwtarief.php in editor - bestudeer code en zie toelichting - laat het programma uitvoeren door de webserver if($btwtarief== laag ) { $btw = $verkoopprijs * 0.06; } else { $btw = $verkoopprijs * 0.19; } Vergelijkingsoperatoren: = = < > <= >=!= of <> Logische operatoren && of and of or De vraag staat tussen haakjes () Omdat er meerdere opdrachten kunnen volgen bij antwoord JA, worden de opdrachten tussen accolades {} geplaatst. Na else komen de opdrachten die worden uitgevoerd als de vraag met NEE is beantwoord Is gelijk aan Kleiner dan Groter dan Kleiner dan of gelijk aan Groter dan of gelijk aan Niet gelijk aan (ongelijk) Twee vergelijkingen die beide moeten voldoen Bv. $leeftijd>18 && $student== ja Twee vergelijkingen waarvan er een voldoende is Bv. $leeftijd<18 $student== ja 17

Opdracht Energienota Een energiebedrijf hanteert twee tarieven voor het verbruik van elektriciteit (exclusief BTW): - tarief 1: vastrecht 200,- per jaar en 0,50 per KWU - tarief 2: vastrecht 100,- per jaar en 0,75 per KWU Maak een PSD en programma dat inleest: - het verbruik in KWU en - het gekozen tarief. Het te betalen bedrag inclusief 19% BTW wordt afgedrukt. Opdracht CAO De vakbond heeft tijdens CAO-onderhandelingen met een bedrijfstakorganisatie de volgende loonsverhoging afgesproken: - iedereen krijgt een salarisverhoging van 5% over het laatst genoten maandsalaris aanvullende voorwaarden o de verhoging is minimaal 80,- o de verhoging is maximaal 200,-. Maak een PSD en programma waarbij een werknemer zijn maandsalaris kan invoeren en als antwoord zowel het oude als het nieuwe salaris ontvangt. 18

LUSSEN In programmeertalen zijn lussen herhalingen van opdrachten. Er zijn twee soorten lussen: - De tellende lus: het aantal herhalingen is bekend - De voorwaardelijke lus: het aantal herhalingen is afhankelijk van een voorwaarde Van beide structuren ga je voorbeelden bekijken en opdrachten maken. Schrijf een programma dat vraagt om een getal en vervolgens de tafel van dat getal afdrukt Lees GETAL TELLER = 1 ZOLANG TELLER < 11 UITKOMST = TELLER * GETAL Schrijf TELLER X GETAL = UITKOMST TELLER = TELLER + 1 Opdracht Tafel - Open het programma tafel.php in een editor, bestudeer de code en de toelichting. - Test het programma. for($teller=1; $teller<11; $teller=$teller+1) De variable teller regelt hoe vaak een lus wordt doorlopen; Beginstand teller: $teller =1 Eindstand controle: $teller<= looptijd Teller-sprong: $teller++ dus met sprongetjes van 1 For ($teller=$a; $teller<=$b; $teller=$teller+$c) Dit is een voorbeeld waarbij de teller begint bij de waarde van varibale A, zal doortellen tot de waarde van variabele B is bereikt en zal tellen met sprongetjes van waarde C 19

Opdracht Spaargeld Bij je geboorte heb je een mooi cadeau gehad van opa en oma; ze hebben ƒ 1.000,- voor 20 jaar vastgezet op een spaarrekening tegen 5%. Als je 20 jaar wordt komt het geld vrij. Hoeveel euro s ontvang je dan? (de koers in 2002 om guldens om te rekenen naar euro s was 2,20371; d.w.z. voor ƒ 2,20371 kreeg je 1,- ). Maak een PSD en een programma dat het spaarbedrag berekent na 20 jaar. Opdracht Wisselkoers Als je naar landen als Engeland of de Verenigde Staten gaat kun je niet met euro s betalen. Omdat je moeite hebt met omrekenen van euro s naar dollars of ponden, maak je een programma dat lijstjes kan maken zoals afgebeeld. Sta je dan in Amerika in een winkel en zie je iets leuks staan voor $ 89,00 dan kun je in het lijstje opzoeken wat het bedrag in euro s is. Maak een PSD en programma dat als invoer kent de valutasoort en de wisselkoers. 20

Voorwaardelijke lus Bij een voorwaardelijke lus worden opdrachten herhaald tot aan bepaalde voorwaarde is voldaan. Stel je hebt 12.500,- gewonnen met de straatprijs in de postcodeloterij. Je buurvrouw had 2 loten en wint 25.000,-. Hoe lang moet je je 12.500,- op de bank zetten om te laten groeien tot 25.000,-? (bij dergelijke grote bedragen geeft de bank 7% rente) Lees SPAARBEDRAG DUBBEL = 2 * SPAARBEDRAG JAAR = 0 ZOLANG SPAARBEDRAG < DUBBEL RENTE = SPAARBEDRAG*0.07 SPAARBEDRAG = SPAARBEDRAG + RENTE JAAR = JAAR + 1 Schrijf SPAARBEDRAG Schrijf JAARss Het winnende lot van je buurvrouw. Opdracht Postcodeloterij Open het programma postcodeloterij.php in een editor, bestudeer de code en de toelichting. while ($spaarbedrag < $dubbel) {.......... } De while opdracht zal de opdrachten tussen de sccolades blijven doorlopen zolang het antwoord op de voorwaarde JA is; dus zolang het spaarbedrag kleiner is dan het dubbele, zal het programma doorgaan met renteberekeningen, het spaarbedrag verhogen met de rente en het aantal jaren met 1 verhogen. Hoe kun je het programma aanpassen zodat het spaarbedrag na elk jaar te zien is. 21

Opdracht Auto Voor de aanschaf van een auto spaar je elke maand 100,-. Dit bedrag zet je op een spaarrekening die 7% rente geeft. Na hoeveel maanden sparen kun je een auto kopen van 10.000,-? Maak een PSD en programma dat als invoer kent: - het maandelijkse spaarbedrag, - rentepercentage - de waarde van de auto (Let op: 7% is de rente per jaar; de rente per maand is dan 7%/12.) 22

5. Variabelen Zoals eerder gezegd en in de opdrachten ook duidelijk is geworden; variabelen spelen een belangrijke rol. Tot nu toe ben je alleen enkelvoudige variabelen tegengekomen; enkelvoudig wil zeggen dat de variabele maar één gegeven kan onthouden. Voorbeeld; als de volgende twee regels in je programma staan wat staat er dan in het geheugen? $naam= Kees ; $naam= Henk ; De laatste invoer zal $naam onthouden, dus Kees heeft plaatsgemaakt voor Henk. Stel je hebt twee variabelen met de volgende inhoud: $naam1= Kees ; $naam2= Henk ; Hoe kun je de inhoud van de variabelen wisselen? Gebruik een derde variabele $naam3 Naast enkelvoudige zijn er ook samengestelde variabelen die ook wel geïndiceerde variabelen of array s worden genoemd. Deze variabelen krijgen een index of volgnummer mee. Voorbeeld: $naam[1]= Kees ; $naam[2]= Henk ; $naam[3]= Hans ; Nu worden alle namen onthouden in het geheugen omdat er drie variabelen zijn. Wat is het verschil tussen $naam1 en $naam[1]? In $naam1 is de 1 een deel van de naam; in $naam[1] is de 1 een volgnummer en kan vervangen worden door een variabele (denk aan een teller en zie voorbeeld). $getal = $_POST[ getal ]; For($teller=1; $teller<11; $teller=$teller+1) { $uitkomst[$teller]=$teller*$getal; } Opdracht Tafel2 Open opdracht tafel.php in een editor en pas de code zodanig aan dat eerst de uitkomsten worden berekend en met behulp van een tweede tellende lus worden afgedrukt 23

Sessies en cookies. Om variabelen van de client naar de server te sturen heb je de commando s $_POST en $_GET. Als je de inhoud van de variabelen bij meerdere webpagina s nodig hebt moet je ze dus telkens meesturen. Dit is lastig en daarom heeft men de Sessions en cookies bedacht. In beide gevallen worden de variabelen opgeslagen op de harde schijf en kunnen dus altijd weer bij de volgende pagina worden opgevraagd. Verschillen: Variabelen in een session worden aan de serverkant opgeslagen en worden gewist na een bepaalde tijd of als je de website afsluit. Variabelen in een cookie worden aan de clientkant opgeslagen en blijven daar staan tot de gebruiker ze wist. Als je gebruikt wilt maken van sessions dan moet elk programma beginnen met de zin SESSION_START(); De session vullen: $_SESSION[ inlognaam ]=$inlognaam; De session uitlezen: $inlognaam=$_session[ inlognaam ]; Opdracht Tafel3 Open programma tafel2.php in een editor en voer de volgende wijzigingen door: - verwijder de tweede tellende lus die de uitkomsten toont - plaats op de eerste regel de code die een session start - stop de uitkomsten in de session - sla het programma op Maak een nieuw programma met de naam tafel3.php waarin: - op regel 1 weer de session wordt gestart - de inhoud van de session wordt uitgelezen - met een tellende lus de uitkomsten worden getoond ondanks het feit dat de variabele $uitkomsten een array is kun je gewoon doen: bij het plaatsen in de session $_SESSION[ uitkomsten ]=$uitkomsten bij het uitlezen van de session $uitkomsten=$_session[ uitkomsten ] variabelen in PHP passen zich aan aan de inhoud, dus stop je er een array in dan wordt de variabele van het type array. 24

Datum en tijd. De computer is goed in rekenen, vooral in het binaire stelsel (tweetallig, nullen en eenen). De mens gebruikt het tientallig-stelsel om mee te rekenen (aantal vingers). Rekenen is dus niet moeilijk mits het is gebaseerd op een talstelsel. Bij datum en tijd ligt dat moeilijker; hier is geen talstelsel in te ontdekken. De ontwerpers van besturingssystemen hebben naar oplossingen gezocht. Bij Microsoft (Windows) telt men het aantal dagen vanaf 1-1-1900 en de tijd in procenten van de dag. Voorbeeld Datum vandaag geboortedatum = leeftijd in dagen 01-01-2010 10-03-1985 = 9063 Voorbeeld: 12:00 uur is als getal 0,5. Op het middaguur is een dag half voorbij. De ontwerpers van LINUX tellen in seconden vanaf 1-1-1970. $datum=time(); Echo $datum; Het resultaat van deze twee regels is: Time() is de functie die de datum opvraagt van de computer $datum bevat het aantal seconden dat verstreken is tussen 1-1-1970 en de datum van vandaag Opdracht Datum Open het programma datum.php in een editor en bekijk de code. Time() is een functie die de datum en tijd uitleest van de computer (server) Met de opdracht $tijd=time() plaats je de datum en tijd in de variabele $tijd. De variabele $tijd bevat dus het aantal secondes van de huige datum (Linux) Met de functie date() kun je het aantal secondes omzetten naar een datum: $datum=date("d-m-y",time()) Een ingevoerde datum omzetten naar PHP-variabele: $datinv=$_post["datum"]; list($d,$m,$j)=split("-",$datinv); $invdatomz=mktime(0,0,0,$m,$d,$j); Met de variabele $datum en $invdatomz kun je gaan rekenen. Als je b.v. je geboortedatum invoert en deze vergelijkt met de huidige datum, dan kun je je leeftijd laten berekenen. 25

Functies Functies zijn stukjes code die een bepaalde handeling uitvoeren (een functie hebben). In de opdrachten heb je al enkele functies voorbij zien komen: Round($bedrag,2) het getal in $bedrag wordt op 2 decimalen afgerond Time() vraagt de datum op van de computer Een functie is te herkennen aan de haakje; een functie bestaat uit een woord met daarachter haakjes waar al dan niet parameters tussen staan. Parameters zijn gegevens waarmee de functie aan de slag moet. De ontwikkelaars van PHP hebben al heel veel functies ingebouwd: http://www.phphulp.nl/php/tutorials/php-functies/6/ Je kunt ook zelf functies maken. Dit is nuttig als bepaalde handelingen regelmatig en veelvuldig terugkomen in je programma s. De code die een bepaalde handeling verricht zet je in een functie en waar nodig roep je de functie aan. Alle zelfgemaakte functies kun je in één bestand onderbrengen en bij de andere programma s laat je het bestand met de functies invoegen (include). Opdracht Functie-btw Maak het volgende programma en bewaar het onder de naam functies.php: <?php Function btwberekenen($bedrag) { $btw=$bedrag * 0.19; $btw= round($btw,2); Return $btw; }?> Open het programma drukkerij.php in een editor - Wis de regel $btw=$bedrag * 0.19; - Zet hiervoor in de plaats o Include( functies.php ); o $btw=btwberekenen($bedrag); Sla het programma op en voer het uit. Wat is het grote voordeel van deze werkwijze? Als de overheid het btw-percentage aanpast hoef je alleen de functie aan te passen en niet al je programma s waarin btw-berekeningen zitten. 26

6. Opbouw website Modulaire opbouw De website van voetbalclub NOAD uit hoofdstuk 3 is niet modulair van opbouw. De website bestaat uit 5 pagina s die kopieën van elkaar zijn; alleen het blokje met inhoud is telkens anders. Het nadeel van deze methode is dat bij verandering van layout of als er een menu-item bij komt, alle pagina s veranderd moeten worden. Deze manier van werken kan bij vijf pagina s, maar een website groeit snel naar tientallen of zelfs honderd pagina s. Het zal duidelijk zijn dat er dan anders gewerkt moet worden; namelijk modulair. Neem de website van NOAD als voorbeeld. Als je alles op een rij zet kun je de volgende blokken (modules) maken: - De kop van de pagina; bevat alleen een afbeelding - De menubalk met de links - De informatie van pagina Home.html - De informatie van pagina Nieuws.html - De informatie van pagina Leden.html - De informatie van pagina Wedstrijden.html - De informatie van pagina Gastenboek.html Er moet nu een hoofdpagina gemaakt worden die, afhankelijk van de keuze van de gebruiker, de juiste modules invoegt. Deze pagina waarin bijna alle besturing zit en die altijd wordt opgestart noemt men index.php. Opdracht Verbouwing Door de volgende handelingen uit te voeren wordt de website van NOAD modulair. 1. Open de pagina Home.html in een editor 2. Sla deze pagina op onder de naam index.php 3. Selecteer de regel met de afbeelding: <img src="noad.jpg" width=700px> 4. Open een nieuw document in de editor en plaats deze regel 5. Sla het nieuwe document op onder de naam kop.html 6. Selecteer het menu met de links 7. Open een nieuw document en plaats het menu 8. Sla het document op onder de naam menu.html 9. Selecteer de regels waar de informatie staat 10. Open een nieuw document en plaatst de tekst 11. Sla het document op onder de naam home.html 12. Herhaal actie 9, 10 en 11 voor de bestanden nieuws.html, leden.html, wedstrijden.html, gastenboek.html en gastenboek_invoer.html Je hebt nu de volgende modules: Kop, menu, home, nieuws, leden, wedstrijden, gastenboek en gastenboek_invoer. Nu nog de besturing regelen. 27

13. ga naar de pagina index.php en voer de volgende wijzigingen door - vervang <img src="noad.jpg" width=700px> door <?php include( kop.html );?> - vervang het menu met alle links door <?php include( menu.html );?> - vervang de informatie Waardoor moet de informatie vervangen worden? Afhankelijk van de keuze uit het menu door de gebruiker moet hier de gevraagde module verschijnen. Hoe weet je nu welke keuze de gebruiker heeft gemaakt? In de oude situatie was dat duidelijk; je riep een nieuwe pagina op, maar nu moet telkens index.php worden aangeroepen. Bij $_GET heb je gezien dat er een variabele kan worden meegegeven aan een link. Je gaat dus eerste de module menu.html aanpassen. 14. de link is nu: <a href= home.html >HOME<.a> dat moet worden <a href= index.php?pagina=1 >HOME</a> bij nieuws wordt het <a href= index.php?pagina=2 >NIEUWS<a> verander op dezelfde wijze de andere links sla menu.html op Terug naar de pagina index.php. 15. vervang de in formatie door <?php If(isset($_GET[ pagina ])) { $keuze = $_GET[ pagina ]; } Else { Include( home.html ); } If($keuze==1) { Include( home.html ); } If($keuze==2) { Include( nieuws.html ); } Enz. 16. Sla index.php op en test de website via de webserver. Hoe zal de link naar gastenboek_invoeg in de module gastenboek.html eruit komen te zien? Wat moet er in index.php toegevoegd worden? 28

Stel de website wordt uitgebreid met de pagina FAQ (frequently asked questions) Wat moet er dan gebeuren? - Een module gemaakt worden waarin de FAQ-informatie staat - In de module menu.html een link toevoegen; let op paginanummer. - In de pagina index.php een $keuze toevoegen om de nieuwe module te includen. 29

7. Interactie In de beginjaren van internet bestonden de websites uit statische pagina s; dat wil zeggen de website bood informatie en de gebruiker kon die lezen. Al snel ontstond er de behoefte aan meer interactie. Naast lezen kon de gebruiker bv. ook vragen stellen door een mail te sturen. Later in deze cursus, als MySQL er bij komt, leer je hoe een gebruiker zich kan registreren, inloggen, een vraag voorleggen aan een forum, shoppen in een webwinkel. Email versturen. Gegevens die verstuurd moeten worden, moet je eerst invoeren via een formulier in HTML. Misschien heb je ooit gehoord van het sturen van een HTML-formulier als email met de zin: <FORM METHOD="post" ACTION="mailto:naam@provider.nl" ENCTYPE="text/plain"> Op de volgende website kun je lezen dat deze manier van werken wordt afgeraden. http://www.handleidinghtml.nl/html/formulieren/formulieren03.html in PHP bestaat de functie mail(). Opdracht mailen - Open het bestand mailen.php in een editor - Bestudeer de code - Plaats in regel 11 je eigen emailadres - Voer het programma uit Waarschijnlijk verschijnt er een foutmelding! Bij usbwebserver is php.ini te vinden in de map settings Als je php.ini moet aangepast moet je eerst de webserver afsluiten en daarna weer opstarten. 30

8. MySQL Als je inlogsystemen en webwinkels wilt bouwen kun je niet zonder database werken. In deze cursus volgt nu een inleiding in de taal SQL (structured query language). Dit is een gestandaardiseerde taal speciaal voor databases. Het is van belang om enige kennis van SQL te hebben; de commando s zijn nodig om een database te bewerken. Opdracht SQL Start PHPMYADMIN op, activeer de database cursus en voer de volgende opdrachten uit: 1. Select * from gastenboek order by datum desc (leest het hele gastenboek uit op volgorde van datum; laatste bericht bovenaan) 2. Select * from gastenboek where datum> 2010-01-31 order by datum desc (idem 1 maar alleen de berichten na 31 januari 2010) 3. Select * from gebruikers where g_naam= peter gabriels and g_wachtwoord= pga (selecteert de gebruiker met de naam peter gabriels en het wachtwoord pga) 4. Select LL_NR, LL_NAAM, LL_TEL from leerlingen order by LL_NAAM (nummer, naam en telefoonnummer van alle leerlingen in alfabetische volgorde) 5. Select leerlingen.ll_naam, klasindeling.klas from leerlingen, klasindeling where leerlingen.ll_nr = klasindeling.leerlingnr and klasindeling.klas= 3A and schooljaar= 1011 (laat naam en klas zien van leerlingen die in schooljaar 2010/2011 in 3A zitten) 6. Select l.ll_naam, k.klas from leerlingen l, klasindeling k where l.ll_nr = k.leerlingnr and k.klas= 3A and k.schooljaar= 1011 (hetzelfde als opdr. 5 maar nu met alias-namen) 7. Delete from gastenboek where datum< 2010-02-01 (alle berichten van vóór 1 febr. 2010 worden verwijderd) 8. Update klasindeling set klas= 3A where leerlingnr=125 and schooljaar= 1011 (wat gebeurt hier?) 9. Insert into leerlingen (LL_NR, LL_NAAM) values( 130, Nigel de Jong ) (nieuwe leerling waarvan alleen de naam bekend is) 10. Insert into leerlingen values( 131, Mark Bommel, veld 12, 1234 MB, Heerlen, 0625364736 ) (nieuwe leerling waarvan alle gegevens bekend zijn.) Wil je meer weten van SQL vraag dan naar de cursus SQL. Kijk op http://www.w3schools.com/sql/default.asp De tabellen leerlingen en klasindeling hebben een relatie. Dit is mogelijk omdat beide tabellen het kenmerk leerlingnummer gemeenschappelijk hebben. 31

9. Database en PHP MySQL Tot nu toe bestonden de programma s uit HTML en PHP-code, de opmaak was geregeld via een CSS. Nu komt er nog een taal bij om gegevens in een database te kunnen raadplegen of bewerken; deze taal is SQL. Even op een rij: - Uitgevoerd door de browser o HTML-code voornamelijk voor opbouw pagina s en invoerformulieren o CSS voor de opmaak - Uitgevoerd door de webserver (Apache) o PHP-code voor de structuur zodat er gebeurt wat de gebruiker vraagt - Uitgevoerd door databaseprogramma (MySQL) o SQL om gegevens te raadplegen of te muteren in een database. Dataverkeer in schema bij een inlogsysteem. In de volgende opdrachten worden de meest voorkomende handelingen besproken; dit zijn: - inhoud van een tabel uitlezen (bijvoorbeeld bij een gastenboek) - een record opvragen (bv. de controle bij een inlogsysteem) - een record toevoegen (bv. het registreren van een nieuwe klant) - een record verwijderen (bv. een product verwijderen uit je winkelmandje) - een record wijzigen (bv. als iemand zijn wachtwoord wijzigt) In de gegeven programma s wordt de tabel leerlingen gebruikt. Bij de opdracht wordt telkens gevraagd om de programma s zodanig aan te passen dat dezelfde actie op de tabel producten wordt uitgevoerd. 32

Opdracht tabel_uitlezen - Open programma tabel_uitlezen.php in een editor - Bestudeer de code; lees vooral de groene commentaarregels - Voer het programma uit. - Pas het programma zo aan dat de tabel producten wordt uitgelezen van de database verkoop. Van de producten zijn 4 kenmerken vastgelegd: nummer, omschrijving, voorraad en prijs. 33

Opdracht record_opvragen - Open programma record_opvragen.php in een editor Dit programma vraagt eerst om een kenmerk van een leerling (leerlingnummer) en laat vervolgens alleen de gegevens van die ene leerling zien. - Bestudeer de code; lees vooral de groene commentaarregels - Voer het programma uit. - Wijzig het programma om één product te kunnen opvragen van de tabel producten uit de database verkoop. 34

Opdracht record_verwijderen - Open het programma record_verwijderen.php in een editor - De code lijkt veel op record_opvragen. Dit komt omdat je eerst wilt controleren of het juiste record wordt verwijderd. Dus eerst opvragen om te controleren, dan pas verwijderen. - Bestudeer de code. o Regel 21 t/m 60 is programma record_opvragen.php o Regel 35, 36 en 37 zijn toegevoegd om te vragen of het verwijderen moet plaatsvinden. o Regel 4 t/m 18 controleert of je hebt gekozen voor JA en of de verwijdering is gelukt. - Voer het programma uit. - Wijzig het programma zodat een product verwijderd kan worden. 35

Opdracht record_toevoegen Bij het toevoegen spelen twee actie een belangrijke rol: - Het invoeren van de gevraagde gegevens - Het vastleggen van de gegevens in de database. Je ziet vaak bij invoervelden in formulieren een sterretje staan *) met de boodschap verplicht veld. Er zal dan in het programma een controle moeten plaatsvinden op deze velden daadwerkelijk inhoud hebben. Waar mogelijk kan nog controle plaatsvinden op de geldigheid van de inhoud; deze laatste controle blijft in deze opdracht buiten beschouwing. - Open het programma record_toevoegen.php in een editor - Bestudeer de code (let op: de code in dit boekje is niet volledig afgedrukt.) - Voer het programma uit - Wijzig het programma zodat een product kan worden toegevoegd. 36

37

Opdracht record_wijzigen - Open programma record_wijzig.php in een editor - Bestudeer de code o Regel 55 t/m 67: html-formulier om leerlingnummer in te voeren o Regel 29 t/m 50: leerlinggegevens worden opgevraagd en getoond in een formulier; dit is nodig omdat je de gegevens kunt wijzigen (nieuwe invoer) o Regel 4 t/m 25: gewijzigde gegevens worden overgenomen van formulier naar PHP; wijzigingen worden met sql-commando update verwerkt in database. - Voer het programma uit. - Wijzig het programma zodat de gegevens van een product gewijzigd kunnen worden. 38

39

10. Fotoalbum Een fotoalbum is een mooi voorbeeld waarin alle acties met een database terugkomen. Er zijn echter ook een paar nieuwe elementen: - Hoe gaat een database om met plaatjes? - Hoe kun je het tonen van tientallen foto s gebruiksvriendelijk maken - Hoe kun je een foto toevoegen (uploaden van een bestand). Plaatjes in een database. MySQL kent het veldtype BLOB (Binairy Large OBject). Hierin kunnen grote tekstbestanden maar ook plaatjes worden opgeslagen. Voor meer informatie zie http://dev.mysql.com/doc/refman/5.1/en/blob.html Het gebruik van BLOBs heeft tot gevolg dat een database erg groot wordt, bovendien levert het bewerken van blob-velden de nodige problemen op. Oplossing is heel simpel: - Plaats de foto s in een map - Zet in de tabel foto s in een veld de bestandsnaam van de foto. Foto s tonen. Om gebruiksvriendelijk door een album te kunnen bladeren moet je keuzes maken: - Hoe groot wil je de afbeelding tonen? meestal zie kleine afbeeldingen (thumbnails) en als de afbeelding aanklikt verschijnt de afbeelding in ware grootte. - Hoeveel afbeeldingen wil je op een scherm plaatsen? Stel je wilt 5 foto s naast elkaar en maximaal 3 rijen; daaronder de links naar volgende of vorige schermen. Bijvoorbeeld het volgende scherm. 40

Opdracht fotoalbum. - Open programma foto_album.php in een editor - Beantwoord de volgende vragen o In welke regel wordt bepaald dat er 15 foto s worden afgedrukt? o Welke variabele bepaalt dat er 5 foto s naast elkaar komen? o Hoeveel foto s worden maximaal tegelijk opgevraagd en bij welk commando (in welke regel) is dat te zien? o Als je op de link 16-30 klikt, wat verschijnt er dan in de url-balk? Foto toevoegen. Het toevoegen van een record in een tabel is niet zo moeilijk, maar hier moet er ook nog een bestand worden geupload. PHP kent de functie: move_uploaded_file() Wat er tussen de haakjes moet komen, zie programma foto_uploaden.php Of http://www.w3schools.com/php/php_file_upload.asp Opdracht foto uploaden. - Open programma foto_uploaden.php in een editor - Beantwoord de volgende vragen o Welke soort bestanden kunnen er worden geupload? o Hoe groot mag en bestand maximaal zijn? o In welke regel worden de gegevens vastgelegd in de database? o In welke regel wordt het bestand geupload? 41

11. Webwinkel Een webwinkel bestaat voor de klant uit drie programma s: - Het tonen van de producten met eventuele zoekfunctie - Het bestellen van producten door ze in de winkelwagen te leggen - De inhoud van de winkelwagen als bestelling vastleggen met opties o Klant moet zich registreren en inloggen o Betalen via IDEAL of andere elektronische wijze. Voor een beheerder zijn de volgende programma s van belang: - Beheren van de producten die in de webwinkel liggen - Afhandelen van de orders - Beheren klantenbestand en betalingen Omdat deze laatste drie programma s basishandelingen bevatten, worden ze hier niet besproken. In deze leerlijn benaderen we de webwinkel vanuit de klant. Het betalen laten we ook achterwegen omdat de betaling meestal via IDEAL verloopt. Kijk voor meer informatie op http://www.ideal.nl/acceptant/ Opdracht winkel_tonen - Open het programma winkel_tonen.php - Er zit geen zoekfunctie in, het programma leest de tabel producten uit en toont het resultaat. - Let op de wijze waarop de producten worden getoond; in een formulier. o Waarom is dit nodig? o Welke productkenmerken worden allemaal meegenomen? o Wat zijn input-velden van het type hidden? 42

Opdracht winkel_wagen - Open het programma winkel_wagen.php - Dit programma ziet er ingewikkeld uit; o De gegevens in de winkelwagen zitten in een 2-dimensionale array, bestelling[1][1] enz. o Om te voorkomen dat gegevens verloren gaan als de klant teruggaat naar de winkel_tonen, wordt de array bestelling in een session geplaatst. o Als de klant een product aanklikt om te bestellen kunnen zich drie situaties voordoen: Het product is het eerste product, de winkelwagen moet worden aangemaakt Er zit al een of meerdere producten in de winkelwagen; het bestelde product moet worden toegevoegd aan de array Het bestelde product zit al in de winkelwagen; alleen het aantal aanpassen o De array bestelling moet gewijzigd kunnen worden Het aantal moet aangepast kunnen worden Een product moet uit de winkelwagen verwijderd kunnen worden. Kun je, door het noemen van regelnummers, aangeven waar in het programma de genoemde acties plaatsvinden. Acties zijn: Eerste product in winkelwagen Volgend product Product verwijderen Aantal aanpassen (op twee plaatsen) De array in de session plaatsen De session in de array plaatsen 43

Opdracht winkelwagen_vastleggen Als de klant klaar is met winkelen, moet de bestelling nog worden vastgelegd in de database. In het programma winkelwagen zijn de bestelde producten via een array in een session geplaatst. In het programma vastleggen moet de sessie worden uitgelezen en de gegevens in de database worden geplaatst. Hiervoor zijn twee tabellen nodig: - De tabel verkopen voor de eenmalige gegevens o Ordernummer, datum, klantnummer, betaling - De tabel verkoop_regel voor de bestelde producten o Elk product krijgt een nieuwe regel in deze tabel o Ordernummer, productnummer en aantal moeten minimaal worden vastgelegd o Is er met de klant een speciale prijs afgesproken dan dient die ook te worden vastgelegd. - Open het programma winkelwagen_vastleggen.php - Geef aan bij welke regelnummers o De factuurgegevens worden vastgelegd o De bestelde producten worden vastgelegd 44

Bijlage 1: usbwebserver Beginnen met USBWebserver 8 Om te beginnen moet u USBWebserver Versie 8 downloaden van http://www.usbwebserver.com. U dient het gedownloade bestand uit te pakken met bijvoorbeeld winrar of winzip. Open vervolgens usbwebserver.exe Het hoofdvenster van USBWebserver 8.0 verschijnt dan. Zodra achter de knoppen [Apache] en [MySQL] een groen vinkje verschijnt, is USBWebserver met alle componenten volledig gestart. USBWebserver zal standaard in u taakbalk verschijnen. Met de symbolen in de rechter boven hoek kunt u bepalen of USBWebserver in de taakbalk staat (dmv: knop minimaliseren) of dat hij naar de systemtray word verplaatst (dmv: knop met klein blokje). Root dir: Door op deze knop te klikken wordt de Root map geopend. In deze map moeten alle bestanden van uw website staan. Localhost: Nu word uw standaard browser geopend met localhost. In de browser kunt U nu, de door U in de rootmap geplaatste website, bekijken. PHPMyAdmin: Met deze knop word phpmyadmin geopend, hier kunt U databases aanmaken en beheren. De standaard inlog gegevens staan onder het inlog scherm. www.usbwebserver.com: Hiermee gaat U naar de website van USBWebserver. Apache Het webserver component van USBW is Apache 2.2. 45

Op het tweede tabblad kunt U de status van apache bekijken en beheren. Ook zijn er 2 snelkoppelingen: de logboeken en de instellingen van apache. Dit instellingen bestand is ook te bereiken via settings/httpd.conf MySQL Dit tabblad is het zelfde ingedeeld als het Apache tabblad. Het is hier mogelijk om de status van de MySQL server te bekijken en wijzigen. Ook is hier een snelkoppeling naar het instellingen bestand van MySQL geplaatst. Dit instellingen bestand is ook te bereiken via settings/my.ini Instellingen Op dit tabblad zijn de basis instellingen van USBWebserver te vinden. Taal: Hier is het mogelijk de taal te veranderen van USBWebserver. Open de browser na opstarten: Deze instelling zorgt ervoor dat gelijk de browser wordt geopend op localhost bij het starten van USBWebserver Verberg USBWebserver bij het opstarten: USBWebserver wordt automatisch in de systemtray geplaatst bij het opstarten. Root map: Hier kunt u de Root map van apache wijzigen. {path} is het volledige path naar de usbwebserver map. 46

Poort apache: De poort waarop apache te bereiken is. De apache standaard is poort 80, USBWebserver maakt gebruik van poort 8080 om conflicten met andere webservers te voorkomen Poort MySQL: De poort waarop MySQL te bereiken is. De standaard MySQL poort is 3306, USBWebserver maakt gebruik van poort 3307 om conflicten te voorkomen. Opslaan: Met deze knop worden de instellingen opgeslagen en Apache en MySQL herstart. PHP Php is geïnstalleerd als onderdeel van Apache. Deze module zorgt ervoor dat de dynamische php paginas kunnen worden uitgevoerd. De standaard instellingen zijn te bekijken via http://localhost:8080/phpinfo.php. Voor php gerelateerde vragen verwijzen wij door naar webfora als http://www.wmcity.nl en http://www.phpfreakz.nl PHPMyAdmin PHPMyAdmin wordt gebuikt voor het database beheer van de MySQL server. In PHPMyAdmin kunt U databases aanmaken, verwijderen en beheren: Ook is het mogelijk om extra gebruikers toetevoegen of het standaard wachtwoord te wijzigen. Voor uitleg over PHPMyAdmin verwijzen wij door naar de documentatie van PHPMyAdmin http://www.phpmyadmin.net/home_page/docs.php?books FAQ Waar moet ik mijn bestanden neerzetten? Al U php bestanden moet U in de map root plaatsen. U website is vervolgens te bereiken via http://localhost:8080/. Hoe kan ik bestanden chmodden? Bij USBWebserver is het niet nodig om bestanden/mappen te chmodden als u bestanden wilt uploaden/bewerken met php. Dit komt omdat USBWebserver op Windows draait. Hoe pas ik de config bestanden van apache/mysql/php aan? Al deze config bestanden staan in de map settings. Na het aanpassen van 1 van deze bestanden moet u USBWebserver herstarten voordat de wijzigingen zijn doorgevoerd. Ik krijg error's die ik op mijn normale hosting niet heb USBWebserver is standaard ingesteld op het hoogste foutmelding niveau. U kunt deze instelling wijzigen in het bestand settings/php.ini op regel 345. Om alleen de meest gangbare foutmeldingen weer te geven vervang deze regel door: error_reporting = E_ALL & ~E_NOTICE Hoe zet ik mijn website online? U kunt al u bestanden uit de root map kopieren naar hosting door middel van een ftp programma. Om de databases over te zetten moet u naar PhpMyAdmin gaan en hier klikken op Export. Daar kunt u de betreffende database selecteren en deze exporteren. Daarna moet u naar PhpMyAdmin van u hosting gaan en daar op SQL klikken. Plak de export in dit vak en druk op uitvoeren. Hoe kunnen andere mensen mijn website bekijken? USBWebserver is een programma die het mogelijkmaakt lokaal op uw computer gebruik te maken van apache/php. Indien u wilt dat anderen uw website kunnen bekijken kunt u het beste een webhosting pakket aanschaffen. Wat zijn de inlog codes van phpmyadmin? Gebruikersnaam is 'root' en het wachtwoord 'usbw' 47

48