Les 06: PHP Errorhandling & MySQL PHP: Errorhandling & MySQL Front-end development.

Slides:



Advertisements
Verwante presentaties
Het Forum Hoe ga je te werk met het forum?
Advertisements

Informatieanalyse en databaseontwerp Practicum 2 Welkom bij het practicum IID: Query’s, Orde in de Chaos.
Httpd.conf Aanpassen van het Apache 2 configuratiebestand om mod_rewrite via.htaccess toe te staan.
Les 4 cursus WordPress. Wat gaan we doen (1) 1. Importeren via Word problemen 2. Alle pagina’s en berichten verwijderen, incl prullenbak leegmaken 3.
Instructie Programmeren Task 1 5JJ70. Task 1.1: Hello World •Klik naast de laatste accolade in de grijze kantlijn om een breakpoint neer te zetten, anders.
Module 7 – Hoofdstuk 5 (1) SQL – een begin.
Databases via internet
PHP & MYSQL LES 03 PHP & DATABASES. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Base: bewerkingen 2 soorten - Oplopend- Aflopend.
HTML Les 1: Introductie HTML
Inhoud Kenmerken ODBC HTML & PHP Inlogfunctie. Inhoud Kenmerken ODBC HTML & PHP Inlogfunctie.
WordPress les 3.
Instructie Programmeren Task 1 5JJ70. Task 1.1: Hello World Klik naast de laatste accolade in de grijze kantlijn om een breakpoint neer te zetten, anders.
Instructie Programmeren Debuggen 5JJ70. Debuggen: Wat is het probleem Je programma compileert, maar werkt niet zoals verwacht, wat nu? Vraag je af: wat.
HET CURRICULUM VITAE = VISTEKAARTJE NUMMER 2
Download en installeer de gereedschappen
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Handleiding Interactieve versie mbv DSB Onderwerp 7 – Gilden.
Klik op de berichtenbalk op Bewerken inschakelen,
Van doelen naar reflectie
Workshop PHP Een productencatalogus Met database.
Lezing door Kick de Wolff
Hoofdstuk 16 en 19 PHP en MYSQL
Klik ergens op het witte deel van deze pagina om verder te gaan
MET DANK AAN COLLEGA’S IN DEN LANDE ! vee 2012
Handleiding Interactieve versie mbv DSB Onderwerp 8 – Quiz.
Handleiding Interactieve versie mbv DSB Onderwerp 4 – Bloei van steden.
Starten met PHP Dynamischer bouwen. PHP is een een scripttaal waarmee de server pagina’s in elkaar kunt laten zetten. Het verschil met HTML: Een php pagina.
PHP & MYSQL LES 02 PHP & FORMULIEREN. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Instructie eBook Pack via ELO.
Starten met PHP Dynamischer bouwen.
Welkom bij Immersive space, de flashles Tijdens deze lessen, leren wij je werken met het programma adobe flash.
OFC28 mediawijsheid les 7 leren door te maken
Samenvatting Havo 5.
MINECRAFT PLAATJES TUTORIAL #3 KUBUSCRAFT.
Instructie Programmeren Task 7
Front-end development
?.
Les 0 Structured Query Language SQL. Programma Les 0 – Introductieopdracht Les 1 Les 2 Les 3 Schriftelijke toets.
Loopbaan oriëntatie en begeleiding
Docentinstructie: Het is aan te bevelen de eerste dia’s klassikaal te tonen en met uitleg te bespreken. Als na zes dia’s een korte demo van Celsius/Fahrenheit.
BIMAIV03 Les A1 BIMAIV03 Les A1 Databases. De gegevens in een database vormen de grondstof voor informatie De informatie wordt opgevraagd in de taal met.
Solliciteren: wat wil ik?
Opdracht 4 Video invoegen Gebruik deze presentatie om de opdracht te maken en zet hier je naam:.
Hoe maak ik een PowerPoint presentatie?
Codetuts Academy Les 6 Module 2a Php Fundamentals 1.
Les 3 - Operators Workshop Php Basic. ICT Academy Php Basic Content Operators Wiskundig Toewijzing Vergelijking.
Inloggen >> Gegevensaanlevering en controle in Peridos In Release 3.3 van Peridos is er een nieuwe module gebouwd voor het aanleveren en bekijken van gegevens.
Codetuts Academy Les 2 Module 2a Php Fundamentals 1.
Woordjes leren.
Aan de slag met haarlemmermeervoorelkaar.nl een praktische handleiding Stap 1. Aanmelden Ga naar
C++ Les 1: introductie. Programmeren Programma’s scripts Websites libraries (Sound, GUI, netwerking…)
Trimester 2. Hfdst 1: e-Presentatie, master! e-Presentatie Met de hulp van Powerpoint gaan we leren hoe we een elektronische presentatie kan maken.
Les 1. Wat voor les krijgen we nu? Tijdens de lessen over hoofdstuk 9, 10 en 11 krijg je op een andere manier les. Het doel is om je zelfstandigheid te.
Uitleg  In dit spel is het de bedoeling dat je zoveel mogelijk punten verzamelt door vragen goed te beantwoorden.  In ronde 2, 3 en 4 staat er ook een.
Javascript.
Gevorderde programmeer Les
Het postkantoor van windows
ASP.NET MVC Web Development
ClupApp van HTV Berg & Dal
Informatie-analyse 1: Er zijn veel manieren om een database te vullen
Software Development fundamentals
Software Development fundamentals
Database connect formulieren 1 februari 2016.
Software Development fundamentals
Software Development fundamentals
Software Development fundamentals
Digitale toetsen Quayn.
Transcript van de presentatie:

Les 06: PHP Errorhandling & MySQL PHP: Errorhandling & MySQL Front-end development

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

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

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

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

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.

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 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

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

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 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.

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)

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

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

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.

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.

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

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)

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

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

Volgende les:  CRUD applicaties met PHP  SQL injection Front-end development 19 Huiswerk:  PHP6 and MySQL5: lezen hoofdstuk 9 en 10  Weekopdracht 7 maken