Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdHenriette Lenaerts Laatst gewijzigd meer dan 9 jaar geleden
1
Les 06: PHP Errorhandling & MySQL PHP: Errorhandling & MySQL Front-end development
2
2 Agenda van vandaag (1:30) Front-end development Toets (focus) duur: 10 minuten (1:20 over) Vragenrondje duur: 10 minuten (1:10 over) Uitleg PHP Error handling duur: 15 minuten (0:55 over) Maken lesoefening 1 duur: 15 minuten (0:40 over) PHP & MySQL duur: 15 minuten (0:25 over) Maken lesoefening 2 duur: 15 minuten (0:10 over) Weekopdracht bespreken duur: 5 minuten Les 6 > agenda
3
2 Leerdoelen (bron: modulewijzer) Front-end development Je kent de verschillende niveau’s van error_reporting in PHP en kunt deze aanpassen Je kunt Exceptions afhandelen met die() Je kunt vanuit PHP verbinding leggen met een MySQL database Je kunt vanuit PHP queries uitvoeren op een MySQL database Je kunt gegevens uit een database weergeven in XHTML Les 6 > leerdoelen
4
Front-end development Les 6 > errorhandling Er kunnen bij de ontwikkeling van een applicatie op verschillende niveaus fouten worden gemaakt. (X)HTML, CSS en Javascript Deze errors kun je met behulp van bijv. Firebug debuggen. Met debuggen wordt het opsporen van fouten bedoeld. Firefox heeft diverse debugging addons die je in de browser kunt installeren. PHP Deze errors worden door de PHP-parser op de webserver gegenereerd. Error-handling op de webserver kun je vooraf in PHP configureren (php.ini) maar kun je ook per script on-the-fly instellen MySQL Deze errors worden gegenereerd door de database engine. Deze zullen worden doorgegeven aan de interface waar de MySQL instructies worden gegeven. In ons geval is de interface een PHP script waarbij door middel van functions interactie met de database plaats vindt. Voorbeeld: aanroep function mysql_connect(). Als dit niet goed gaat zal de function een foutmelding aan PHP geven. Error handling
5
Front-end development Les 6 > errorhandling > PHP Error types Er zijn binnen PHP 3 error types te onderscheiden: Syntax errors (notatie, schrijfwijze). Deze errors zorgen er voor dat het PHP script stopt. Afhankelijk van de PHP instellingen wordt de foutmelding direct aan de gebruiker getoond Runtime errors (bijv. verkeerde aanroep van functions). Deze errors stoppen het script niet, al wordt niet alles goed uitgevoerd. Afhankelijk van de PHP instellingen wordt de foutmelding direct aan de gebruiker getoond Logical errors (logische fouten). Deze errors zijn het lastigst omdat het gaat om een denkfout van de programmeur. Denk bijvoorbeeld aan het verkeerd gebruiken van condities in een if (> ipv. <) Of je vergeet een else te programmeren waardoor een bepaald stuk script toch wordt uitgevoerd. Logical errors zijn het gevaarlijkst omdat er geen foutmelding verschijnt terwijl vaak wel informatie wordt getoond. (die dan niet goed is!) Een logische fout is dus eigenlijk geen fout, maar ongewenste functionaliteit ;-) PHP Error types Klik hier voor werkend voorbeeld
6
Front-end development PHP Error types Les 6 > errorhandling > PHP Error types Je kunt PHP vertellen hoe om te gaan met foutmeldingen of errors. Dit doe je eenmalig in de configuratie van PHP (xampp/php/php.ini) Deze instellingen kun je echter ook in je script nog overrulen. Als je in eerste instantie helemaal geen errors wilt zien dan heb je de mogelijkheid om in php.ini in te stellen via display_errors = off Wil je dit vervolgens per script ongedaan maken dan kan dat met de volgende instructie: Dus eerst kun je het tonen van foutmeldingen voor alle scripts uitschakelen waarna je per script dit weer kan inschakelen.
7
Front-end development PHP Error reporting Les 6 > errorhandling > PHP Error reporting Binnen PHP zijn er ook verschillende error levels. Deze zijn als volgt onderverdeeld: Notices hoeven geen probleem te zijn en stoppen ook de uitvoering van het script niet Warnings indicatie dat er een probleem is maar hoeft het script niet te stoppen zoals bijv. division by zero Errors dit type stopt de verwerking van een script zoals bijv. syntax error. NumberConstantReport On 1 2 4 8 256 512 1024 2048 8191 E_ERROR E_WARNING E_PARSE E_NOTICE E_USER_ERROR E_USER_WARNING E_USER_NOTICE E_STRICT E_ALL Fatal run time error (stop script) Run-time warnings Parse errors Notices User-generated User-generated User-generated Recommendations for compatibility and interoperability All errors, warnings and recommendations
8
Front-end development PHP Error reporting Les 6 > errorhandling > PHP Error reporting Vuistregel voor het gebruik van Error reporting binnen PHP Developing als je aan het ontwikkelen bent dan wil je iedere soort error voorbij zien komen: Live (production) als je ontwikkelde site live gaat zet je je error_reporting level zo laag mogelijk: PHP.INIPHP script error_reporting = on PHP.INIPHP script error_reporting = off Je wilt gebruikers niet vermoeien met jouw syntax-fouten (stupidity), of inzicht bieden in je paden/database structuur (security) Je wilt weten wat je applicatie in alle denkbare situaties te melden heeft
9
Front-end development PHP debugging Les 6 > errorhandling > PHP debugging Hoe ga je nu te werk als ‘het niet werkt’? Voorkom frustratie Neem op tijd rust; ga wandelen met de hond; bel je vriend(in). Kortom, zorg er voor dat je uitgerust bent als je gaat debuggen. Verzeker je ervan dat je de juiste pagina voor je hebt! Is de versie in je editor wel dezelfde als de versie in je browser? Verzeker je er van dat je de PHP pagina via http:// bekijkt! Je pagina dubbelklikken in de verkenner gaat niet werken, dit wordt omgezet naar file:// waardoor de PHP code niet wordt geparsed. Zorg er dus ook voor dat je webserver/database engine draait Dus Apache den MySQL moeten via het XAMPP control panel worden gestart. Verzeker je van de juiste PHP/MySql versie PHP versie 4 werkt iets anders dan PHP versie 5; ook qua syntax. Een uitgebreidere debug handleiding vind je hier.
10
2 Front-end development while loop Aantal keer doorlopen van een lusconstructie. Wordt gebruikt bij repeterende taken. ”; // toon resultaat onder elkaar $i++; } ?> de while is erg handig als we alle resultaten van een query willen doorlopen PHP: iterate (while) PHP: iterative statements (while)
11
Front-end development die() Les 6 > errorhandling > die() function PHP heeft een function die je kunt gebruiken bij het afvangen van fouten. Dit is de zgn. die() function. Zodra er een fout optreedt (bijv. als het maken van een connection met een database server niet lukt) kun je de gebruiker een (aanvullende) foutmelding tonen. <?php $link = mysqli_connect('localhost', 'mysql_user', 'mysql_password'); // controle of connection maken is gelukt if (!$link) { die('Could not connect: '. mysqli_error()); } echo 'Connected successfully'; mysqli_close($link); ?> Bovenstaand voorbeeld laat zien dat er ook een function mysqli_error() is. Deze function haalt de error op die ontstaat als er richting mysql iets fout gaat. Deze function kun je weer in de die() function gebruiken om zo de opgehaalde error te tonen. Klik hier voor werkend voorbeeld
12
Front-end development Les opdracht 1: debugging Les 6 > errorhandling > lesopdracht 1 In deze opdracht staan 5 syntactische en 5 logische fouten. Verbeter ze, en controleer of het nu goed werkt. Kijk eerst naar de code Wat is de bedoeling van dit script? Verbeter de syntax fouten Aptana en de foutmeldingen in je browser helpen je hier Verbeter de logische fouten Ga de code testen, en zoek uit wat er aan de hand is als er dingen gebeuren die niet kloppen. >> les6opdracht1.php | les6opdracht1.phpsles6opdracht1.phples6opdracht1.phps
13
Front-end development PHP en MySQL Les 6 > PHP en MySQL vraag: Hoe doe je dat? In les 5 hebben we SQL queries gemaakt en deze uitgevoerd via PHPMyAdmin. Hoe kun je nu vanuit je eigen PHP scripts gegevens uit een MySQL database halen? Met andere woorden: hoe kun je vanuit PHP queries uitvoeren op je database? antwoord: met Built-in functions Het antwoord is redelijk simpel: je maakt gebruik van zgn. ‘built-in’ functions die je in PHP kunt aanroepen. Deze functions kun je vinden op PHP.NET en beginnen allemaal met “mysqli_” waarbij de “i” op het eind staat voor “improved”.kun je vinden op PHP.NET Bijvoorbeeld “mysqli_connect” zorgt voor de verbinding met een database server. En met “mysqli_select_db” open je de juiste database op de server. En met “mysqli_query” voer je een SQL query uit. Op de volgende sheets vind je een voorbeeld van een PHP script dat gebruik maakt van mysqli functions.
14
Front-end development PHP en MySQL: connect Les 6 > PHP en MySQL > sample // Connecting, selecting database $link = mysqli_connect('mysql_host', 'mysql_user', 'mysql_password') or die('Could not connect: '. mysqli_error()); echo 'Connected successfully'; mysqli_select_db($link,'my_database') or die('Could not select database'); Connectie maken vanuit PHP met server en database $link = mysqli_connect (‘localhost’, ‘root’, ‘’) Maak eerst een link (verbinding) met de database-server. Localhost of de locatie van een extern dbms (bijv. sql.cmi.hro.nl) Gebruikersnaam (root is de superuser) Wachtwoord (bij de standaardinstallatie is die leeg) or die(‘verbinden db mislukt’) of stop het script als dat niet lukt en stuur nog wat laatste woorden. mysqli_connect_db($link, ‘classicmodels’) Selecteer de database waarmee je op de server wil werken. Ook hr kan je het script weer stoppen als dat mislukt.
15
Front-end development PHP en MySQL: query Les 6 > PHP en MySQL > sample // Performing SQL query $query = 'SELECT * FROM my_table'; $result = mysqli_query($link, $query) or die('Query failed: '. mysqli_error()); SQL query samenstellen en uitvoeren Resultaat komt in variabele $result $result = mysqli_query ($link, ‘SELECT * FROM customers’) Stuur een query naar de database en bewaar het complete resultaat
16
Front-end development PHP en MySQL: resultaten Les 6 > PHP en MySQL > sample // Printing results in HTML echo " \n"; while ($line = mysqli_fetch_array($result, MYSQL_ASSOC)) { echo "\t \n"; foreach ($line as $col_value) { echo "\t\t $col_value \n"; } echo "\t \n"; } echo " \n"; Verwerking van Resultaat: samenstellen en tonen html $line = mysqli_fetch_array ($result, MYSQL_ASSOC) Haal een record (rij) op van het resultaat als een associatieve array Doordat binnen het resultaat steeds de volgende gegeven wordt kun je zo makkelijk mbv een while-lus alle rijen uitlezen. echo $line[‘contactLastName’] lees een veld van een rij uit de array (uiteraard kun je ook met foreach de hele array bekijken)
17
Front-end development PHP en MySQL: opruimen Les 6 > PHP en MySQL > sample // Free resultset mysqli_free_result($result); // Closing connection mysqli_close($link); Vrijgeven resultaat (leegmaken geheugen op server) en sluiten verbinding met database mysqli_free_result($result) Ruim alle resultaten op. Omdat resultaten flink wat geheugenruimte innemen is het netjes om die weer terug te geven aan de server mysqli_close($link) Verbreek de verbinding met de database Omdat het aantal verbindingen met een database-server beperkt is, is het netjes om deze te verbreken als je hem niet meer nodig hebt
18
Front-end development Les opdracht 2: MySQL in PHP Les 6 > PHP en MySQL > lesopdracht 2 Maak verbinding met de database classicmodels die we vorige week gemaakt hebben en toon van de eerste 15 customers de voor-, achternaam en plaats netjes in een tabel. CarineSchmittNantes JeanKingLas Vegas Verzamel eerst informatie over de gegevens Waar staat de database Hoe heet de database Hoe heet de tabel Wat zijn de veldnamen Welke query heb je nodig Bedenk welke kennis van php je nodig hebt De powerpoint presentatie kan je daar natuurlijk bij helpen Maak een html-pagina We noemen hem wel php, maar eerst gaan we de html kloppend maken. Doctype, header, body en een dummy tabel Waar komt de php in de pagina? Bedenk waar de php moet komen en zet commentaar in je pagina wat waar moet gebeuren En ga dan op die plaatsen de php schrijven Klik hier voor werkend resultaat
19
Volgende les: CRUD applicaties met PHP SQL injection Front-end development 19 Huiswerk: PHP6 and MySQL5: lezen hoofdstuk 9 en 10 Weekopdracht 7 maken
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.