Hoofdstuk 6. PHP Data Objects. Cursus PHP & MySQL Groep D

Maat: px
Weergave met pagina beginnen:

Download "Hoofdstuk 6. PHP Data Objects. Cursus PHP & MySQL Groep D"

Transcriptie

1 Hoofdstuk 6 PHP Data Objects Cursus PHP & MySQL Groep D

2 Hoofdstuk 1: PHP Data Objects 1.1 Inleiding Tegenwoordig kun je er bij het ontwikkelen van een website bijna niet meer omheen: het gebruik van een database. Of je nu bezig bent met een persoonlijke website met gastenboek, een site voor je bedrijf met support forum of met een ingewikkelde webshop; de basis van elke goede website wordt gevormd door een database. Er zijn vrij veel verschillende database systemen die je voor dit doeleinde kunt gebruiken en allemaal kennen ze hun eigen functies. Aangezien elke database anders is, vereist het werken ermee in PHP steeds een andere aanpak. Voor de meest gebruikte database systemen waaronder MySQL, PostgreSQL en SQLite, biedt PHP standaard ondersteuning. Echter zul je voor het benaderen van deze verschillende databases altijd nog verschillende functies gebruiken. Met de komst van PHP Data Objects (PDO) in PHP 5.1 hebben we de beschikking over een uiterst handige extensie voor het benaderen van verschillende databases. Naast het gebruik van een object georiënteerde notatie biedt deze extensie ook nog andere voordelen. Het wordt namelijk een stuk eenvoudiger om resultaat sets te verwerken, prepared statements uit te voeren en transactions te gebruiken. Nota: Vanaf PHP6 zullen de standaard database functies (mysql_*, pg_*, etc) niet standaard meer ondersteund worden. Hoewel ze waarschijnlijk nog lange tijd als extensie beschikbaar blijven, is het verstandig om nu al naar alternatieven te kijken. Vooral als je een nieuw systeem aan het ontwikkelen bent is het gebruik van PDO zeker een aanrader. In dit hoofdstuk van de cursus zullen we dieper op de werking van de PDOextensie ingaan, en dit aan de hand van verschillende voorbeelden met betrekking tot de belangrijkste functies. Voor een allesomvattende handleiding over PDO verwijzen we je graag door naar php.net.

3 1.2 Gebruik van de PDO-extensie Voor het gebruik van de PDO extensie moeten we natuurlijk wel eerst weten of de database die we willen gebruiken wel ondersteund wordt. Om PDO met een bepaalde database te gebruiken, moeten we de juiste PDO-driver geïnstalleerd hebben. Controleren welke databasedrivers geïnstalleerd zijn echo <pre> ; print_r(pdo::getavailabledrivers()); echo </pre> ; Dat levert dan het volgende resultaat op. Array ( [0] => sqlite2 [1] => pgsql [2] => mysql ) Dit betekent dat we op dit moment de juiste drivers geïnstalleerd hebben om te werken met de databasesystemen MySQL, PostgreSQL en SQLite. Er worden echter nog een boel andere databasesystemen ondersteund, zoals je uit onderstaand lijstje kunt opmaken. MySQL PostgreSQL SQLite Microsoft SQL Server ODBC Oracle Daar wij doorheen heel onze cursus met MySQL zullen werken, laten we de andere systemen buiten beschouwing. Voor meer informatie over de samenwerking tussen PDO en de andere systemen verwijzen we je opnieuw door naar php.net.

4 2.2.1 Verbinden met een Database Het verbinden met een database met behulp van PDO is kinderlijk eenvoudig. Het komt eigenlijk er op neer dat je een nieuwe instantie van de PDO klasse gaat creëren. Natuurlijk moet je bij het instantiëren van de klasse wel de juiste parameters meegeven. Hieronder zie je hoe dat in z n werk gaat voor een verbinding met een MySQL database. t', 'user', 'password'); Dat je voor het opzetten van een verbinding met elke willekeurige database telkens dezelfde regel PHP kunt gebruiken, heeft te maken met het feit dat het eigenlijke verbinden met de database achter de schermen afgehandeld wordt. De meegegeven parameters worden door de extensie geïnterpreteerd en een verbinding met de juiste database wordt gemaakt Sluiten van een Verbinding Het sluiten van een verbinding is al even eenvoudig. Het enige dat je hier dient te doen, is de instantie van de PDO-klasse vernietigen. Dat ziet er dan als volgt uit. $db = NULL; Het handmatig sluiten van een databaseverbinding is in principe niet nodig. Aangezien het bestaan van de verbinding direct afhangt van het bestaan van de instantie van de PDO klasse, zal de verbinding verbroken worden zodra een script eindigt. Het veelvuldig tussendoor sluiten en openen van verbindingen kan tot een zeker performance verlies leiden, zeker als je verbinding maakt met een externe database server.

5 1.3 Uitvoeren van Queries Nu we weten hoe we verbinding maken met een database, kunnen we verder gaan met het uitvoeren van queries. De PDO klasse heeft hiervoor twee methodes beschikbaar, genaamd query() en exec(). Er zit een klein verschil in werking van deze twee methodes. De eerste, query(), voert enkel de query uit en geeft een resultaat terug. De tweede daarentegen voert de query uit en geeft daarnaast het aantal aangepaste rijen van een INSERT, UPDATE of DELETE query terug. Een SELECT query t','user', 'password'); $sql = "SELECT naam FROM tabel"; $results = $db->query($sql); foreach($results as $row) echo $row['naam']. <br /> ; Allereerst maken we een nieuwe verbinding door een nieuwe instantie van de PDO klasse aan te maken. Vervolgens voeren we met de query() methode een SQL query uit. De resultaat set kunnen we daarna uitlezen met een for each loop. Een UPDATE query t','user', 'password'); $sql = "UPDATE tabel SET naam = 'Martijn' WHERE naam = 'Pietje'"; $affected_rows = $db->exec($sql); echo 'Aantal aangepaste rijen: '.$affected_rows;

6 Nu voeren we de query uit met de exec() methode die als resultaat dus een aantal aangepaste rijen teruggeeft. Op deze manier kun je dus direct controleren of er wel wat gewijzigd is. Een INSERT query t','user', 'password'); $sql = " INSERT INTO tabel (naam) VALUES ('Pieter-Jan') "; $results = $db->exec($sql); $insert_id = $db->lastinsertid(); echo ID van laatst ingevoegde record:. $insert_id; Vanzelfsprekend ziet een INSERT query er precies hetzelfde uit. Vaak wil je na een INSERT query het id van het laatst ingevoegde record weten. Met PDO kun je dat achterhalen met de lastinsertid() methode zoals te zien is in het voorbeeld. Natuurlijk moeten we niet vergeten om de in te voegen variabelen te beveiligen om SQL-injectie te voorkomen. Waar we normaal altijd mysql_real_escape_string() zouden gebruiken, kunnen we nu de quote() methode van de PDO klasse gebruiken. // Gegevens uit een gepost formulier verwerken t','user', 'password'); $naam = $db->quote($_post['naam']); $sql = " INSERT INTO tabel (naam) VALUES ('".$naam."') "; $db->exec($sql);

7 1.4 Foutafhandelingen In de voorbeelden op de vorige pagina hebben we nog geen enkele vorm van foutafhandeling toegepast, maar natuurlijk mag dat niet vergeten worden. Foutafhandeling in een PHP-script is een van de belangrijkste dingen die er zijn. PDO biedt drie verschillende manieren van foutafhandeling. 1. SILENT - Fouten worden onderdrukt en zullen handmatig opgevraagd moeten worden. 2. WARNING - Gebruikt de error_handler van PHP en geeft een E_WARNING. 3. EXCEPTION - Gebruikt PDOException klasse. Van dit lijstje is SILENT de standaard instelling. Dat betekent dat je altijd de code en informatie van de foutmelding met de methodes errorinfo() en errorcode() zult moeten ophalen om te controleren of er fouten opgetreden zijn. Een uitzondering op deze regel is een fout bij het verbinden met de database, oftewel het instantiëren van de PDO klasse. In dat geval wordt er een PDOException object aangemaakt dat op te vangen is met een /catch combinatie. Dit staat beschreven in onderstaand voorbeeld. $db = new PDO('mysql:host=localhost;dbname=be staat_nie echo $e->getmessage(); Dit zal de volgende melding geven: SQLSTATE[42000] [1049] Unknown database 'bestaat_niet' Zoals we zien krijgen we netjes een melding dat de opgegevens database niet bestaat. Het is belangrijk om steeds op deze manier te controleren of een verbinding gelukt is. Mocht er namelijk iets fout gaan en de fout wordt niet afgehandeld, dan zal PHP een backtrace weergeven waarin mogelijk alle details van de databaseverbinding staan. Dit omvat dus mogelijk ook gegevens als gebruikersnaam en wachtwoord van je database!

8 Als we met de standaard instelling SILENT een fout maken in een query die we uitvoeren, krijgen we daar geen foutmelding van te zien. Bijvoorbeeld: $sql = "SELECT naam FROM bestaat_niet"; $results = $db->query($sql); foreach($results as $row) echo $row['naam']. <br /> ; echo $e->getmessage(); De enige melding die we nu krijgen is: Warning: Invalid argument supplied for foreach() We zien dat $results dus geen geldig argument voor de foreach() is en dus doet dat ons vermoeden dat er iets fout gegaan is met de query. Maar als dat zo is, zouden we daar graag een foutmelding van krijgen. In dat geval zouden we ervoor kunnen kiezen om de WARNING instelling te gebruiken. Dan wordt er naast het aanmaken van een error code ook een standaard E_WARNING melding gegeven. Het type foutafhandeling kunnen we instellen door het type toe te kennen aan het attribuut dat de foutafhandeling bepaald. Dit doen we met de setattribute() methode. Op de volgende pagina vind je een voorbeeld van foutafhandeling met een WARNING. $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_WARNING); $sql = "SELECT naam FROM bestaat_niet";

9 $results = $db->query($sql); foreach($results as $row) echo $row['naam']. <br /> ; echo $e->getmessage(); De foutmelding die nu gegeven wordt: Warning: PDO::query() [function.pdoquery]: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.bestaat_niet' doesn t exist. Warning: Invalid argument supplied for foreach(). We zien dat er zowel een foutmelding gegeven wordt op het punt waar de query uitgevoerd wordt als op de plaats van de foreach(). Zoals je altijd te werk gaat met debuggen, los je nu ook eerst de eerste fout op. Dit zal in dit geval ook de tweede foutmelding laten verdwijnen. Als laatste instelling hebben we EXCEPTION over. In dat geval zal er net zoals in het geval van de fout met de verbinding, voor de fout een PDOException object aangemaakt worden. De gegevens van deze foutmelding kunnen we wederom uitlezen in het catch gedeelte van het script.

10 $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_EXCEPTION); $sql = "SELECT naam FROM bestaat_niet"; $results = $db->query($sql); foreach($results as $row) echo $row['naam']. <br /> ; echo $e->getmessage(); De volgende foutmelding werd gegenereerd: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test. bestaat_niet' doesn't exist. We zien dat we hier alleen een foutmelding op de query te zien krijgen en geen verdere meldingen dat bijvoorbeeld het argument van de foreach() niet juist is. Zoals gewoonlijk kunnen we natuurlijk het hele PDOException object uitkleden en alle informatie over een fout naar boven halen, dit staat beschreven in het voorbeeld op de volgende pagina.

11 $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_EXCEPTION); $sql = "SELECT naam FROM bestaat_niet"; $results = $db->query($sql); foreach($results as $row) echo $row['naam']. <br /> ; echo <pre> ; echo Regelnummer:. $e->getline(). <br> ; echo Bestand:. $e->getfile(). <br /> ; echo Foutmelding:. $e->getmessage(). <br/> ; echo </pre> ; De enige melding die we nu krijgen is: Regelnummer: 8 Bestand: Dummy File Path Foutmelding: SQLSTATE[42S02]: Base table or view not found: Table 'test.bestaat_niet' doesn't exist Wij zullen steeds de Exception gebruiken als foutafhandeling. Je gebruikt de /catch syntax immers toch al om te controleren of de verbinding gelukt is. Daarnaast krijg je alle opvolgende foutmeldingen die het gevolg zijn van een foute query niet te zien en kun je helemaal zelf bepalen welke informatie je wel wilt tonen.

12 1.5 Prepared Statements Op dit punt zul je misschien denken dat de PDO-extensie niet veel meer biedt dan de mogelijkheid om te verbinden met meerdere database systemen en het uitvoeren van databasegerelateerde taken. Dat is zeker niet het geval aangezien PDO met een aantal mooie features komt, waaronder het werken met prepared statements. Deze prepared statements bieden de programmeur de mogelijkheid tot het creëren van queries die veiliger zijn, waarvan de performance beter is en die eenvoudiger te noteren zijn. Het grote voordeel van prepared statements is dat een bepaalde query op een efficiënte manier vele malen achter elkaar uitgevoerd kan worden. Bij het gebruik van prepared statements wordt er allereerst een template van de uit te voeren query naar de server gestuurd. Deze wordt door de server gecontroleerd op syntax fouten en uitgevoerd om te controleren of de query logisch is. Vervolgens wordt deze opgeslagen in een speciale buffer. Op het moment dat de query daadwerkelijk uitgevoerd moet worden, stuur je de in de query in te vullen gegevens naar de database. Vervolgens wordt een complete query gevormd en uitgevoerd. Op de volgende pagina vind je een voorbeeld van een prepared INSERT statement.

13 $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_EXCEPTION); $sql = " INSERT INTO tabel (naam) VALUES (:naam) ; $stmt = $db->prepare($sql); $stmt-> bindparam(':naam', $naam, PDO::PARAM_STR); $naam = Nick ; $stmt->execute(); echo <pre> ; echo Regel:. $e->getline(). <br /> ; echo Bestand:. $e->getfile(). <br /> ; echo Foutmelding:. $e->getmessage(); echo </pre> ; In dit script hebben we eerst een template gemaakt van de INSERT query die we willen gebruiken. Het stukje ':naam' in de template is een zogenaamde parameter marker of placeholder en geeft de plaats aan waar straks een variabele ingevuld gaat worden. Vervolgens roepen we de prepare() methode aan om de query naar de server te sturen en te laten controleren. Als dat gelukt is, gebruiken we de bindparam() methode. Met deze methode koppelen we een bepaalde variabele aan een bepaalde placeholder. Op die manier weet PHP straks welke variabele hij onder welke naam naar de server moet sturen zodat deze het begrijpt. De optionele derde parameter van deze methode geeft aan als wat voor type de variabele behandeld moet worden, in dit geval dus een string. Nadat we de variabele vervolgens een waarde hebben gegeven, sturen we alles wederom naar de server met de execute() methode. Als alles goed is gegaan krijgen we geen foutmeldingen en zal er een nieuw record ingevoegd zijn. Natuurlijk is het ook mogelijk om meerdere placeholders te gebruiken om meerdere gegevens in te voeren. En daarnaast kunnen we ook nog eens meerdere queries achter elkaar uitvoeren.

14 Hieronder vind je een voorbeeld van een prepared statement met meerdere gegevens en meerdere queries. $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_EXCEPTION); $personen = array( array( 'naam' => 'Martijn', ' ' => 'martijn@fenex.com', 'leeftijd' => 19 ), array( 'naam' => 'Joris', ' ' => 'joris@fenex.com', 'leeftijd' => 20 ), array( 'naam' => 'Maarten', ' ' => maarten@fenex.com', 'leeftijd' => 18 ) ); $sql = " INSERT INTO tabel (naam, leeftijd, ) VALUES (:naam, :leeftijd, : ) "; $stmt = $db->prepare($sql); $stmt-> bindparam(':naam', $naam, PDO::PARAM_STR); $stmt-> bindparam(': ', $ , PDO::PARAM_STR); $stmt-> bindparam(':leeftijd', $leeftijd, PDO::PARAM_INT); foreach($personen as $persoon) $naam = $persoon['naam']; $ = $persoon[' ']; $leeftijd = $persoon['leeftijd']; $stmt->execute(); echo <pre> ; echo Regel:. $e->getline(). <br /> ; echo Bestand:. $e->getfile(). <br /> ; echo Foutmelding:. $e->getmessage(); echo </pre> ; Voor elke placeholder die we in de query template aangegeven hebben, roepen we de bindparam() methode aan om een variabele te koppelen.

15 We lezen de array met gegevens uit met een for each loop, geven de gekoppelde variabelen een waarde en voeren de statement uit met de execute() methode. Je ziet dat er geen gebruik gemaakt wordt van de quote() methode om in te voegen strings te beveiligen. Dit is niet nodig aangezien de execute() methode al zorgt voor een veilige afhandeling van de gegevens. Daarnaast is er nog een andere manier waarop we de prepared statement uit kunnen voeren. We kunnen alle gegevens namelijk ook in een array als parameter meegeven aan de execute() methode van het statement. Hieronder zie je hoe we statements met een gegevensarray als parameter zouden kunnen uitvoeren. $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_EXCEPTION); $personen = array( array( ':naam' => 'Martijn', ': ' => 'martijn@fenex.com', ':leeftijd' => 19 ), array( ':naam' => 'Joris', ': ' => 'joris@fenex.com', ':leeftijd' => 20 ), array( ':naam' => 'Maarten', ': ' => 'maarten@fenex.com', ':leeftijd' => 18 ) ); $sql = " INSERT INTO tabel (naam, leeftijd, ) VALUES (:naam, :leeftijd, : ) "; $stmt = $db->prepare($sql);

16 foreach($personen as $persoon) $stmt->execute($persoon); echo <pre> ; echo Regel:. $e->getline(). <br /> ; echo Bestand:. $e->getfile(). <br /> ; echo Foutmelding:. $e->getmessage(); echo </pre> ; Op de volgende pagina vind je nog een voorbeeld, waar we een UPDATE query gaan uitvoeren met een prepared statement. Dit gelijkt erg op het INSERT voorbeeld, maar kent toch één belangrijk verschil. Bij een UPDATE of DELETE query is het namelijk altijd van belang om te controleren of er wel degelijk rijen aangepast zijn. Met de methode rowcount() kunnen we het aantal aangepaste rijen van het laatste uitgevoerde statement ophalen. Mocht dit gelijk zijn aan 0 dan creëren we een nieuw PDOException object met de betreffende melding

17 $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_EXCEPTION); $personen = array('martijn', 'Maarten'); $sql = " UPDATE tabel SET = 'geen mail' WHERE naam = :naam "; $stmt = $db->prepare($sql); $stmt-> bindparam(':naam', $naam, PDO::PARAM_STR); foreach($personen as $persoon) $naam = $persoon; $stmt->execute(); if($stmt->rowcount() == 0) throw new PDOException( Er zijn ge en rijen gewijzigd in de UPDATE que ry met naam:. $naam); echo '<pre>'; echo 'Regel: '.$e->getline().'<br>'; echo 'Bestand: '.$e->getfile().'<br>'; echo 'Foutmelding: '.$e->getmessage(); echo '</pre>';

18 Naast het invoegen, updaten en verwijderen van records met een prepared statement, is het ook mogelijk om een SELECT query uit te voeren. Hoewel een het uitvoeren van een prepared SELECT statement veel lijkt op de voorbeelden hierboven, werkt het toch net iets anders. We hebben hier namelijk te maken met gegevens die we uit de database ophalen, dus zullen we die gegevens op een bepaalde manier zichtbaar moeten maken. Hieronder vind je een voorbeeld waarbij we de gegevens uitlezen met een fetch(). $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_EXCEPTION); $sql = "SELECT naam FROM tabel WHERE leeftijd > :leeftijd"; $stmt = $db->prepare($sql); $stmt-> bindparam(':leeftijd', $leeftijd, PDO::PARAM_INT); $leeftijd = 18; $stmt->execute(); while($row = $stmt->fetch(pdo::fetch_assoc)) echo $row['naam']. <br /> ; echo <pre> ; echo Regel:. $e->getline(). <br /> ; echo Bestand:. $e->getfile(). <br /> ; echo Foutmelding:. $e->getmessage(); echo </pre> ; Dit geeft als resultaat iets als: Martijn - 19 Joris - 20 Tot aan de execute() methode is dit script precies hetzelfde als voorgaande voorbeelden. Maar zoals ik al zei moeten we de resultaten van de query natuurlijk zichtbaar kunnen maken. Hier gebruiken we de fetch() methode voor.

19 Aan de fetch() methode kunnen we optioneel een parameter meegeven om aan te geven hoe we willen dat de rijen gefetched worden. Dit is vergelijkbaar met de optionele parameter van de mysql_fetch_array() functie. De belangrijkste beschikbare parameters zijn: PDO::FETCH_ASSOC - Een rij als associatieve array PDO::FETCH_NUM - Een rij als numerieke array PDO::FETCH_BOTH - Een rij zowel associatief als numeriek te gebruiken (standaard) In tegenstelling tot bijvoorbeeld de MySQLi extensie kent PDO geen methode om het aantal rijen in een resultaatset te bepalen. Wil je dit aantal weten, dan zul je een extra query uit moeten voeren om dat aantal te bepalen. Het makkelijkste is het om hier een query met COUNT() voor te gebruiken: zie onderstaand voorbeeld. $sql = "SELECT COUNT(naam) FROM tabel WHERE leeftijd > 18"; $row = $db->query($sql)-> fetch(pdo::fetch_assoc); echo $row['aantal']; // Output: 2 echo <pre> ; echo Regel:. $e->getline(). <br /> ; echo Bestand:. $e->getfile(). <br /> ; echo Foutmelding:. $e->getmessage(); echo </pre> ; In dit voorbeeld gebruiken we query() om een eenvoudige query uit te voeren en fetch() om het resultaat van de query in een array te zetten. De variabele $row['aantal'] zal in dit geval het aantal rijen in de resultaat set van de query bevatten. Verder met het fetchen van gegevens. Een tweede methode die we daarvoor kunnen gebruiken is fetchall(), deze zullen we aan de hand van een voorbeeld verder toelichten op de volgende pagina.

20 $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_EXCEPTION); $sql = "SELECT naam FROM tabel WHERE leeftijd > :leeftijd"; $stmt = $db->prepare($sql); $stmt->bindparam(':leeftijd', $leeftijd); $leeftijd = 18; $stmt->execute(); $result = $stmt->fetchall(); foreach($result as $row) echo $row['naam']. <br /> ; echo <pre> ; echo Regel:. $e->getline(). <br /> ; echo Bestand:. $e->getfile(). <br /> ; echo Foutmelding:. $e->getmessage(); echo </pre> ; Wederom zien we hier hetzelfde resultaat: Martijn - 19 Joris - 20 De fetchall() methode doet dus niets meer dan alle rijen uit de resultaat set onder een nieuwe key in een array zetten. Vervolgens kunnen we deze array met een for each loop uitlezen. Aan de fetchall() methode kunnen we natuurlijk ook weer een parameter meegeven om aan te geven hoe de resultaten gefetched moeten worden.

21 1.6 Transacties Transacties klinken de doorgewinterde databasegebruiker waarschijnlijk zeer bekend in de oren, maar niet iedereen zal weten wat je met dit principe kunt. Simpel gezegd heb je bij transacties in een database de mogelijkheid om een reeks queries uit te voeren zonder dat je eventuele aanpassingen definitief doorvoert. Aan het einde van deze reeks kun je COMMIT gebruiken om de wijzigingen definitief door te voeren of ROLLBACK om alle wijzigingen terug te draaien. De PDO extensie biedt ons drie methodes voor het werken met transacties: begintransaction(), commit() en rollback(). De eerste methode roepen we aan het begin aan, deze zorgt ervoor dat autocommit uitgezet wordt en dat queries pas definitief doorgevoert worden zodra commit() aangeroepen wordt. De rollback() methode kunnen we gebruiken om gemaakte wijzigingen terug te draaien mocht er een fout optreden. $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_EXCEPTION); $db->begintransaction(); $db->query("insert INTO tabel (naam) VALUES ('Martijn')"); $db->query("insert INTO tabel (naam) VALUES ('Nick')"); $db->query("insert INTO tabel (naam) VALUES ('Maarten')"); $db->query("insert INTO tabel (naam) VALUES ('Joris')"); $db->commit(); if(isset($db)) $db->rollback(); echo '<pre>'; echo 'Regel: '.$e->getline().'<br>'; echo 'Bestand: '.$e->getfile().'<br>'; echo 'Foutmelding: '.$e->getmessage(); echo '</pre>';

22 We zien hier inderdaad de drie methodes waar ik het al eerder over had terug. Na begintransaction() voeren we een viertal INSERT queries uit. Als alles goed gaat, voeren we de wijzigingen definitief door met commit(). Mocht er een fout optreden dan vangen we die op in het catch gedeelte van het script en draaien we alle reeds gemaakte wijzigingen terug. We moeten we even controleren of $db bestaat, aangezien dit gedeelte ook fouten in de verbinding opvangt. Als daar een fout in optreedt, zal $db niet bestaan en zal het aanroepen van rollback() niet mogelijk zijn. Hoewel ik hier nu vier losse queries gebruikt heb, kunnen we deze natuurlijk ook weer vervangen door een prepared statement. Dat zou een nettere oplossing geven. Een ander goed voorbeeld om het gebruik van transacties te verduidelijken is een geldtranscatie tussen twee bankrekeningen van respectievelijk persoon A en B. Er zal 500 euro overgemaakt worden van persoon A naar persoon B, maar persoon A mag natuurlijk geen negatief saldo krijgen. Daarnaast kan het totale saldo uit de tabel nooit groter of kleiner worden, er kan immers geen geld ontstaan of verdwijnen. Dat betekent dat de ene query niet uitgevoerd mag worden zonder dat de ander ook uitgevoerd wordt. Duidelijk iets om een transactie voor te gebruiken. Dit voorbeeld zie je uitgewerkt over de laatste pagina s van dit hoofdstuk. $db-> setattribute(pdo::attr_errmode, PDO::ERR MODE_EXCEPTION); $queries[] = "UPDATE rekeningen SET saldo = saldo WHERE klant = 'A'"; $queries[] = "UPDATE rekeningen SET saldo = saldo WHERE klant = 'B'"; $controle = "SELECT saldo FROM rekeningen WHERE klant = 'A'"; $db->begintransaction();

23 foreach($queries as $query) $affected = $db->exec($query); if($affected == 0) throw new PDOException( Update query niet geslaagd:. $query); $result = $db->query($controle); $row = $result->fetchall(); if($row[0]['saldo'] < 0) throw new PDOException( Saldo niet toereikend ); $db->commit(); echo <pre>. print_r (get_class_methods($db),true). </pre> ; if(isset($db)) $db->rollback(); echo <pre> ; echo Regel:. $e->getline(). <br /> ; echo Bestand:. $e->getfile(). <br /> ; echo Foutmelding:. $e->getmessage(); echo </pre> ; We beginnen met het uitvoeren van de UPDATE queries. Mocht daar een fout in optreden, dan willen we dat natuurlijk weten dus maken we in dat geval een nieuw PDOException object aan. Daarna voeren we de controle query uit en controleren het resultaat. Als dit kleiner is dan 0 heeft persoon A een negatief saldo. Omdat dit niet toegestaan is, gooien we er weer een foutmelding tegenaan zodat alle wijzigingen teruggedraaid worden. Op deze manier zorgt onze transactie ervoor dat er dus nooit een query zonder de ander uitgevoerd kan worden en dat alles teruggedraaid wordt als er ergens een negatief saldo ontstaat.

Dynamische Websites. Week 6. vrijdag 25 oktober 13

Dynamische Websites. Week 6. vrijdag 25 oktober 13 Dynamische Websites Week 6 AGENDA Herhaling Databank SQL Injection Ontwerp OO _ indien private of protected magic zo weinig mogelijk php! View MVC home.php confirm.php vehicledetail.php Controller Model

Nadere informatie

Een website maken met databasetoegang.

Een website maken met databasetoegang. Hoofdstuk 5 Een website maken met databasetoegang. In dit hoofdstuk gaan we het weblog dat je in hoofdstuk 4 hebt gemaakt verder uitbreiden. Een belangrijk onderdeel wordt toegevoegd aan de applicatie,

Nadere informatie

Les 11 : Basis SQL (deel2).

Les 11 : Basis SQL (deel2). Les 11 : Basis SQL (deel2). Wat is SQL? SQL gaan we gebruiken voor het raadplegen van de database. We gaan gegevens invoegen in de database, selecteren, aanpassen en verwijderen van de database. Om dit

Nadere informatie

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

Les 15 : updaten van gegevens in de database (deel2). Les 15 : updaten van gegevens in de database (deel2). In de volgende reeks lessen zal alle vorige leerstof uitgebreid aan het bod komen. Zie ook de vorige lessen en documenten om informatie op te zoeken

Nadere informatie

Databases - Inleiding

Databases - Inleiding Databases Databases - Inleiding Een database is een verzameling van een aantal gegevens over een bepaald onderwerp: een ledenbestand van een vereniging, een forum, login gegevens. In een database worden

Nadere informatie

Sparse columns in SQL server 2008

Sparse columns in SQL server 2008 Sparse columns in SQL server 2008 Object persistentie eenvoudig gemaakt Bert Dingemans, e-mail : info@dla-os.nl www : http:// 1 Content SPARSE COLUMNS IN SQL SERVER 2008... 1 OBJECT PERSISTENTIE EENVOUDIG

Nadere informatie

PHP en een MySQL database.

PHP en een MySQL database. mysql_php.doc 1/5 PHP en een MySQL database. Om informatie uit een MySQL database op te halen moet je de volgende stappen uitvoeren: 1. een verbinding maken met mysql; 2. een mysql database selecteren;

Nadere informatie

8. Koppeling met een database

8. Koppeling met een database PHP7 en MySQL 8. Koppeling met een database 8.1 Inleiding In PHP is het eenvoudig om een koppeling te maken met een database. Een database kan diverse gegevens bewaren die met PHP aangeroepen en/of bewerkt

Nadere informatie

De MySQL C API. Variabelen in C Functies in C Pointers in C

De MySQL C API. Variabelen in C Functies in C Pointers in C LinuxFocus article number 304 http://linuxfocus.org De MySQL C API door Özcan Güngör Over de auteur: Ik gebruik Linux sinds 1997. Vrijheid, flexibiliteit en opensource. Dat

Nadere informatie

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

Kies File>New>Blank Page>PHP. Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site Kies File>New>Blank Page>PHP Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site Geef de site een passende naam. Kies ook de juiste map voor de webdocumenten.

Nadere informatie

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database.

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database. SQL manipulatietaal We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database. Basiscommando's: INSERT : toevoegen van gegevens DELETE : verwijderen van gegevens UPDATE : wijzigen van gegevens

Nadere informatie

Object Oriented Programming

Object Oriented Programming Object Oriented Programming voor webapplicaties Door Edwin Vlieg Waarom OOP? Basis uitleg over OOP Design Patterns ActiveRecord Model View Controller Extra informatie Vragen OOP Object Oriented Programming

Nadere informatie

Koppeling met een database

Koppeling met een database PHP en MySQL Koppeling met een database 11.1 Inleiding In PHP is het eenvoudig om een koppeling te maken met een database. Een database kan diverse gegevens bewaren die met PHP aangeroepen en/of bewerkt

Nadere informatie

Automatisering voor Financiële Dienstverleners. Werken met Queries en Merge Documenten. For more information visit our website at www.pyrrho.

Automatisering voor Financiële Dienstverleners. Werken met Queries en Merge Documenten. For more information visit our website at www.pyrrho. Automatisering voor Financiële Dienstverleners Werken met Queries en Merge Documenten For more information visit our website at www.pyrrho.com Date: Document Nr: 30 maart, 2007 UBizzMerge, Versie 4.0 Status:

Nadere informatie

Query SQL Boekje. Fredrik Hamer

Query SQL Boekje. Fredrik Hamer Query SQL Boekje Query SQL Boekje Fredrik Hamer Schrijver: Fredrik Hamer Coverontwerp: Fredrik Hamer ISBN: 9789402162103 Fredrik Hamer Inhoudsopgave A. Aanhef bepalen 17 Aantal 18 Aantal dagen tussen

Nadere informatie

Formulieren maken met Dreamweaver CS 4/CS 5

Formulieren maken met Dreamweaver CS 4/CS 5 Formulieren maken met Dreamweaver CS 4/CS 5 In deze handleiding leer je om een formulier en elementen die je binnen een formulier kunt gebruiken, te ontwerpen met Dreamweaver. Het uitgangspunt is dat dit

Nadere informatie

Na bestudering van dit hoofdstuk, moet je tot het volgende in staat zijn:

Na bestudering van dit hoofdstuk, moet je tot het volgende in staat zijn: 5. De oefendatabase 5.1. Inleiding In de volgende hoofdstukken ga je oefenen / werken met SQL. Om te kunnen oefenen heb je natuurlijk wel een database nodig. In dit hoofdstuk wordt besproken hoe je deze

Nadere informatie

En hoe gaan ze dit allemaal terugvinden?

En hoe gaan ze dit allemaal terugvinden? En hoe gaan ze dit allemaal terugvinden? Taak 1.2.10 Thomas Muller Paul van der Linden MT1A Tutor: van Griensven Docent: van den Biggelaar Gemaakt door Thomas Muller en Paul van der Linden Pagina 1 van

Nadere informatie

Technische nota AbiFire Rapporten maken via ODBC

Technische nota AbiFire Rapporten maken via ODBC Technische nota AbiFire Rapporten maken via ODBC Laatste revisie: 23 januari 2018 Inhoudsopgave 1 Inleiding... 2 2 Systeeminstellingen in AbiFire... 3 2.1 Aanmaken extern profiel... 3 2.2 Toewijzing extern

Nadere informatie

9. MYSQL. Daarin zien we het administratie paneel van mysql.

9. MYSQL. Daarin zien we het administratie paneel van mysql. 9. MYSQL We kunnen ook in dit systeem gebruik maken van de gekende ACCESS databanken. Zolang het maar relationale databanjken zijn kunnen we er gebruik van maken. In PHP echter maakt men meestal gebruik

Nadere informatie

TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise

TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise Inhoudsopgave 1. Voorbereiding... 4 2. Web Service Connector tool configuratie... 5 3. TaskCentre taak voor het aanmaken van

Nadere informatie

Introductie en even voorstellen

Introductie en even voorstellen Introductie en even voorstellen Onlangs is PHP5 uitgekomen. PHP5 is een grote stap voorwaards voor iedereen die met deze populaire programmeertaal werkt. In deze presentatie bekijken we de belangrijkste

Nadere informatie

NHibernate als ORM oplossing

NHibernate als ORM oplossing NHibernate als ORM oplossing Weg met de SQL Queries Wat is ORM? ORM staat in dit geval voor Object Relational Mapping, niet te verwarren met Object Role Modeling. ORM vertaalt een objectmodel naar een

Nadere informatie

Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren

Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren Om eens wat ervaring op te doen met de Windows Azure Marketplace heb ik een publieke en gratis databron gekozen

Nadere informatie

A.C. Gijssen. 0.3 PHP en MySQL

A.C. Gijssen. 0.3 PHP en MySQL PHP en MySQL A.C. Gijssen 0.3 PHP en MySQL PHP en MySQL 0.4 Inhoudsopgave Voorwoord Deel 1 Over PHP 1.1 Inleiding...13 1.2 Wat is PHP?...14 1.3 De geschiedenis van PHP...15 1.4 Editor...16 1.5 PHP en websites...17

Nadere informatie

Secure Application Roles

Secure Application Roles Secure Application Roles Beheer de toegang tot de database 1. Inleiding Het realiseren van geautoriseerde toegang tot een database lijkt eenvoudig. Echter, vaak blijkt dat dezelfde combinatie van gebruikersnaam

Nadere informatie

PHP & MySQL. Studievaardigheden 2013. Frank Takes (ftakes@liacs.nl) LIACS, Universiteit Leiden

PHP & MySQL. Studievaardigheden 2013. Frank Takes (ftakes@liacs.nl) LIACS, Universiteit Leiden PHP & MySQL Studievaardigheden 2013 Frank Takes (ftakes@liacs.nl) LIACS, Universiteit Leiden Inleiding Voorkennis: geen Stof: dit college, www.w3schools.com en www.php.net Opdracht: maak een uitgebreide*

Nadere informatie

Inhoudsopgave. Theorie... 14 Praktijk... 14. Gegevens uit Database halen... 13 DML commando s... 14

Inhoudsopgave. Theorie... 14 Praktijk... 14. Gegevens uit Database halen... 13 DML commando s... 14 SQL 2013 Inhoudsopgave Inhoudsopgave... 2 SQL begrippen... 3 Maken Database... 4 Rechten voor een Database... 4 User aanmaken... 5 Rol Toekennen aan een user... 5 Backup... 6 Theorie... 6 In SQL... 6 SQL

Nadere informatie

Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet.

Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet. Hoofdstuk 2 Een ASP.NET applicatie met ADO.NET opzetten In dit hoofdstuk ga je een eenvoudige website opzetten, waarbij je een aantal gegevens uit een database ophaalt. Je moet je kennis van ADO.NET dus

Nadere informatie

Handleiding: Whitelabel Customersite

Handleiding: Whitelabel Customersite ARGEWEB B.V. Handleiding: Whitelabel Customersite Controlportal.nl Argeweb Support 8-1-2009 Handleiding voor het gebruik maken van de Whitelabel Customersite op controlportal.nl, door Resellers van Argeweb.

Nadere informatie

Op de Virtual Appliance is MySQL voorgeïnstalleerd. MySQL is momenteel de meest gebruikte database op het internet.

Op de Virtual Appliance is MySQL voorgeïnstalleerd. MySQL is momenteel de meest gebruikte database op het internet. Het installeren van WordPress Nu je een volledig werkende virtuele server hebt is het tijd om er een applicatie op te installeren. We beginnen met de blogtool WordPress. De database De eerste stap is het

Nadere informatie

Javascript oefenblad 1

Javascript oefenblad 1 Leer de basis van Javascript. Javascript oefenblad 1 Niels van Velzen Javascript oefenblad 1 Pagina 2 Inleiding Javascript is niet altijd even makkelijk. Vooral aan het begin is het even wennen hoe de

Nadere informatie

Elfde-Liniestraat 24 3500 Hasselt Schooljaar 2009-2010 TINFO POKER GAME Oracle Scripts

Elfde-Liniestraat 24 3500 Hasselt Schooljaar 2009-2010 TINFO POKER GAME Oracle Scripts Elfde-Liniestraat 24 3500 Hasselt Schooljaar 2009-2010 TINFO POKER GAME Oracle Scripts Studenten: Peter Asnong Rik Broens Tom De Keyser Daan Gielen Kris Gregoire Koen Olaerts Toon Wouters Inhoudsopgave

Nadere informatie

Domein API Handleiding

Domein API Handleiding Domein API Handleiding Versie 1.6 Datum: 16-07-2014 1 Inhouds opgave 2 Inleiding 3 Result codes 4 Api functies 5 Api helpers 2 Inleiding: De API van 123 Hosting Service kan worden gebruikt om te registreren

Nadere informatie

Zonnepanelen Hoe krijg je de data op je website?

Zonnepanelen Hoe krijg je de data op je website? Zonnepanelen Hoe krijg je de data op je website? Beste website-bezoeker, Omdat ik al heel wat vragen kreeg over het gedeelte zonne-energie op mijn website, heb ik besloten om de werkwijze die ik gevolgd

Nadere informatie

Les 12 : database koppeling, opmaken van template, webstructuur en afdrukken van gegevens. (deel2).

Les 12 : database koppeling, opmaken van template, webstructuur en afdrukken van gegevens. (deel2). Les 12 : database koppeling, opmaken van template, webstructuur en afdrukken van gegevens. (deel2). In de volgende reeks lessen zal alle vorige leerstof uitgebreid aan het bod komen. Zie ook de vorige

Nadere informatie

We moeten de accommodaties selecteren die 3 sterren hebben, en in land met ID 10 zitten.

We moeten de accommodaties selecteren die 3 sterren hebben, en in land met ID 10 zitten. MySQL talk Trage website? Het optimaliseren van een bestaande website die een MySQL database heeft is niet altijd even makkelijk. Het probleem kan namelijk op veel verschillende plekken zitten: de database

Nadere informatie

Foutcontrole met Javascript

Foutcontrole met Javascript Foutcontrole met Javascript Pol Van Dingenen Yannick Van Hauwe INLEIDING Het controleren van de gegevens die ingevuld zijn in formulieren is heel erg belangrijk. In de praktijk is enkel en alleen controle

Nadere informatie

Thinking of development

Thinking of development Thinking of development Databases Arjan Scherpenisse HKU / Miraclethings Agenda voor vandaag Opdracht tussenstand State diagram / Observer pattern Bret Victor Databases 2/42 Opdracht tussenstand Slides

Nadere informatie

Cursus PHP & MySQL. Informaticaprojecten. Bachelor Toegepaste Informatica. academiejaar 2008-2009 Jaar 1 Semester 1 & 2.

Cursus PHP & MySQL. Informaticaprojecten. Bachelor Toegepaste Informatica. academiejaar 2008-2009 Jaar 1 Semester 1 & 2. 1 Cursus PHP & MySQL Informaticaprojecten Bachelor Toegepaste Informatica academiejaar 2008-2009 Jaar 1 Semester 1 & 2 Groep D fenex Cursus PHP & MySQL Voorwoord Deze cursus PHP & MySQL werd opgesteld

Nadere informatie

Pinakes Integrator Client

Pinakes Integrator Client Pinakes Integrator Client Installatie procedure Pinakes NV Paviljoenstraat 7 1030 Schaarbeek TEL : +32 (0) 2 211 55 95 FAX : +32 (0) 2 211 56.56 INFO@PINAKES.BE WWW.PINAKES.BE 1. Inhoudstafel 1. Inhoudstafel...

Nadere informatie

PL/SQL. Declaraties van variabelen. Structuur PL/SQL is een blok-georiënteerde taal: Toekenningen

PL/SQL. Declaraties van variabelen. Structuur PL/SQL is een blok-georiënteerde taal: Toekenningen PL/SQL PL/SQL is een procedurele uitbreiding op SQL, omdat SQL op zich niet krachtig genoeg is om complexe databank applicaties te ontwikkelen. Server-side functies, of stored procedures worden op de database

Nadere informatie

Kleine cursus PHP5. Auteur: Raymond Moesker

Kleine cursus PHP5. Auteur: Raymond Moesker Kleine cursus PHP5 Auteur: Raymond Moesker Kleine cursus PHP PHP is platform en CPU onafhankelijk, open source, snel, heeft een grote userbase, het is object georiënteerd, het wordt omarmd door grote bedrijven

Nadere informatie

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd. BASISINSTRUCTIES SQL SQL : Structured Query Language is een taal gericht op het ondervragen van een relationele database en die aan veel klassieke databasemanagementsystemen kan worden gekoppeld. SQL is

Nadere informatie

[TOETS SQL INLEIDING]

[TOETS SQL INLEIDING] 2011 ROC ter AA afdeling T&T Team ICT Toets SQL Inleiding Duur: 100 minuten Hulpmiddelen: Alleen Pen en Papier Er is één voorblad en vijf opgaven pagina s. Normering: Deel I: 14 punten (7x2 Deel II: 10

Nadere informatie

Installatie SQL: Server 2008R2

Installatie SQL: Server 2008R2 Installatie SQL: Server 2008R2 Download de SQL Server 2008.exe van onze site: www.2work.nl Ga naar het tabblad: Downloads en meld aan met: klant2work en als wachtwoord: xs4customer Let op! Indien u een

Nadere informatie

Versieperikelen. Bijlage C

Versieperikelen. Bijlage C Bijlage C Versieperikelen In dit boek beschrijven we PL/SQL aan de hand van Oracle versie 11g. Alle eigenschappen die in dit boek behandeld worden, zijn in deze versie van Oracle (en in nog te verschijnen

Nadere informatie

Voor vragen: http://www.richard3332.nl/ of mail naar Richard3332@gmail.com

Voor vragen: http://www.richard3332.nl/ of mail naar Richard3332@gmail.com Welkom bij mijn PHP tutorial (Deel 1) Ik ga in deze delen PHP uitleggen, dit doe ik in het programma notepad++ (gratis) deze kunt u downloaden van www.richard3332.nl/downloads.php Als u beschikt over dreamweaver

Nadere informatie

Tinus Plotseling 29-12-2002. MySQL

Tinus Plotseling 29-12-2002. MySQL Tinus Plotseling 29-12-2002 MySQL Inhoudsopgave Inleiding... 3 MySQL Geschiedenis... 3 MySQL Toepassingen... 3 MySQL Voordelen... 4 MySQL Nadelen... 4 MySQL bij ASCI... 4 PostgreSQL... 5 ORACLE... 6 MS

Nadere informatie

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd.

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd. SQL Inleiding relationele databases DBMS DataBase Management System!hiërarchische databases.!netwerk databases.!relationele databases.!semantische databases.!object oriënted databases. Relationele databases

Nadere informatie

Mijn eerste ADO.NET applicatie

Mijn eerste ADO.NET applicatie Hoofdstuk 2 Mijn eerste ADO.NET applicatie ADO staat voor ActiveX Database Objects. Dit is een verzameling klassen die onderdeel uitmaken van het.net framework, waarmee je verbinding kunt maken met een

Nadere informatie

DrICTVoip.dll v 2.1 Informatie en handleiding

DrICTVoip.dll v 2.1 Informatie en handleiding DrICTVoip.dll v 2.1 Informatie en handleiding Nieuw in deze versie : Koppeling voor web gebaseerde toepassingen (DrICTVoIPwebClient.exe) (zie hoofdstuk 8) 1. Inleiding Met de DrICTVoIP.DLL maakt u uw software

Nadere informatie

6. Het maken van een database

6. Het maken van een database 6. Het maken van een database 6.1. Inleiding In hoofdstuk 5 heb je de oefendatabase gemaakt doormiddel van een script. In dit hoofdstuk ga je zelf een database maken en deze vullen met tabellen. Hiervoor

Nadere informatie

Les 10 : Aanmaken van een database (deel2).

Les 10 : Aanmaken van een database (deel2). Les 10 : Aanmaken van een database (deel2). Wat is een database? Een centrale opslagruimte voor gegevens. Alle informatie wordt centraal opgeslagen en kan door iedereen geraadpleegd worden. Voordelen van

Nadere informatie

Formulieren maken met Dreamweaver CS 4

Formulieren maken met Dreamweaver CS 4 Formulieren maken met Dreamweaver CS 4 In deze handleiding leer je om een formulier en elementen die je binnen een formulier kunt gebruiken, te ontwerpen met Dreamweaver. Het uitgangspunt is dat dit zoveel

Nadere informatie

Inhoudsopgave. versie 0.8

Inhoudsopgave. versie 0.8 JOOMLA! INSTALLATIE HANDLEIDING versie 0.8 Inhoudsopgave Stappenplan...3 Inrichten database...4 Configuratiecentrum cpanel...4 Aanmaken van een database gebruiker...5 Aanmaken van een database...6 Gebruiker

Nadere informatie

Een website ontwerpen in Dreamweaver met de opmaakweergave

Een website ontwerpen in Dreamweaver met de opmaakweergave Een website ontwerpen in Dreamweaver met de opmaakweergave door G. Van Soest Met Dreamweaver kan je zeer snel een website in elkaar bouwen; ook het onderhoud van een website is met Dreamweaver uiterst

Nadere informatie

Excel Controller. Handleiding Excel Controller Wizard

Excel Controller. Handleiding Excel Controller Wizard Excel Controller Handleiding Excel Controller Wizard 1 Inhoud Inleiding... 3 Eigen SQL... 3 Stap 1 Eigen SQL... 3 Stap 2 Testen SQL... 8 Stap 3 Wizard... 11 Stap 4 Parameters... 13 Voorbeeld Eigen Parameter...

Nadere informatie

PHP & MySQL. Studievaardigheden 2014. Jan van Rijn (j.n.van.rijn@liacs.leidenuniv.nl) LIACS, Universiteit Leiden

PHP & MySQL. Studievaardigheden 2014. Jan van Rijn (j.n.van.rijn@liacs.leidenuniv.nl) LIACS, Universiteit Leiden PHP & MySQL Studievaardigheden 2014 Jan van Rijn (j.n.van.rijn@liacs.leidenuniv.nl) LIACS, Universiteit Leiden Inleiding Voorkennis: geen Stof: dit college, www.w3schools.com en www.php.net Opdracht: maak

Nadere informatie

Informatie & Databases

Informatie & Databases Informatie Wat is informatie en waaruit het bestaat? Stel op een kaart staat het getal 37 geschreven. Wat kun je dan zeggen van het cijfer 37? Niets bijzonders, toch? Alleen dat het een getal is. Gaat

Nadere informatie

Technische nota AbiFire5 Rapporten maken via ODBC

Technische nota AbiFire5 Rapporten maken via ODBC Technische nota AbiFire5 Rapporten maken via ODBC Laatste revisie: 29 juli 2009 Inhoudsopgave Inleiding... 2 1 Installatie ODBC driver... 2 2 Systeeminstellingen in AbiFire5... 3 2.1 Aanmaken extern profiel...

Nadere informatie

Handleiding voor het installeren van VBA scripts in Outlook

Handleiding voor het installeren van VBA scripts in Outlook Handleiding voor het installeren van VBA scripts in Outlook Brondocument E:\OutLook\InstallerenVBAScriptOutlook.odt Versiebeheer Versie Datum Uitleg 1.0v 21-03-12 1e versie na draaien prototype klant 1.1v

Nadere informatie

Handleiding conversie SnelStart naar Exact Online

Handleiding conversie SnelStart naar Exact Online Stap 0: Wat doen we wel/niet Wij converteren alleen financiële data. Optioneel kunnen wij documenten en bijlages van de financiële data mee converteren dit is maatwerk. BTW-grondslagen worden niet geconverteerd,

Nadere informatie

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

1 Inleiding Installatie 21. WAMP met Apache Friends 23. XAMPP starten en controleren 26. LAMP 32 De installatie ongedaan maken 33 0DD&) QO( l 1 Inleiding 13 De betekenis van PHP 14 Voorkennis 15 Wat dit boek niet biedt 15 PHP 5 - Een routebeschrijving door dit boek 1 5 Zo kunt u de weg vinden 17 Een dankwoord van de auteur 18 Copyright

Nadere informatie

CAK Installatiehandleiding

CAK Installatiehandleiding CAK Installatiehandleiding Versie 1.1 Applicatie om centraal de uren van de zorgaanbieders door de gemeente laten aanbieden aan het CAK. Eerst moeten de tabellen, views, packages etc worden aangemaakt.

Nadere informatie

Technisch ontwerp. Projectteam 6. Project "Web Essentials" 02 april 2009. Versie 2.1.0

Technisch ontwerp. Projectteam 6. Project Web Essentials 02 april 2009. Versie 2.1.0 Projectteam 6 Faculteit Natuur en Techniek Hogeschool Utrecht Projectleider: Hans Allis, hans.allis@student.hu.nl Technisch ontwerp Project "Web Essentials" 02 april 2009 Versie 2.1.0 Teamleden: Armin

Nadere informatie

Aan het eind van deze lesbrief wordt uitgelegd wat het nut van OOP is en vind je een aantal oefenopdrachten.

Aan het eind van deze lesbrief wordt uitgelegd wat het nut van OOP is en vind je een aantal oefenopdrachten. Doel van deze lesbrief Deze lesbrief is bedoeld om je op de hoogte te brengen van de basisbegrippen die gangbaar zijn bij object georiënteerd programmeren (OOP). In deze lesbrief kom je korte codefragmenten

Nadere informatie

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

LES 11: VAN LOKAAL NAAR ONLINE. Lesoverzicht: Aan de slag Domeinnaam Web hosting FTP gegevens FTP programma s Database exporteren Samenvatting LES 11: VAN LOKAAL NAAR ONLINE Lesoverzicht: Aan de slag Domeinnaam Web hosting FTP gegevens FTP programma s Database exporteren Samenvatting Tijd: 10 minuten Doel: Aan het einde van de les kun je de lokale

Nadere informatie

Handleiding OpenCart - factuursturen.nl

Handleiding OpenCart - factuursturen.nl Handleiding OpenCart - factuursturen.nl www.webwinkelfacturen.nl Samenvatting Dit is de handleiding voor de koppeling van OpenCart naar Factuursturen.nl. De koppeling zorgt dat voor bestellingen in OpenCart

Nadere informatie

EMBEDDED SQL. Inleiding. Queries en update-opdrachten. Embedden en hostvariabelen

EMBEDDED SQL. Inleiding. Queries en update-opdrachten. Embedden en hostvariabelen Inleiding In het boek Databases & SQL wordt beschreven hoe opdrachten in de programmeertaal SQL gebruikt worden om de inhoud van een relationele database te raadplegen en te bewerken. SQL wordt daarbij

Nadere informatie

1 Labo 4 H 8 Jobs, Alerts en Operators H 9 Monitoring en Troubleshooting

1 Labo 4 H 8 Jobs, Alerts en Operators H 9 Monitoring en Troubleshooting 1 Labo 4 H 8 Jobs, Alerts en Operators H 9 Monitoring en Troubleshooting SQL Server 2008 R2 - Labo 4-1 1.1 Database Mail Configureer database mail zodat e-mail wordt verstuurd met je eigen e-mailadres

Nadere informatie

icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous

icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous 2006-2007 Inhoudsopgave 1 2 1.1 Programmeertaal PHP5..................... 2 1.2 MySQL database......................... 3 1.3 Adobe Flash...........................

Nadere informatie

Chris de Kok 223548 TDI 3. Vak: Software Architectuur Datum: 21-01-2008 Docent: Fons van Kesteren

Chris de Kok 223548 TDI 3. Vak: Software Architectuur Datum: 21-01-2008 Docent: Fons van Kesteren Chris de Kok 223548 TDI 3 Vak: Software Architectuur Datum: 21-01-2008 Docent: Fons van Kesteren Inhoud Inleiding... 3 Black box / White box... 3 XP... 3 SimpleTest... 3 Eclipse plugin... 4 GroupTest...

Nadere informatie

Automatische Installatie op IIS server

Automatische Installatie op IIS server Automatische Installatie op IIS server In de map Web staat het installatiebestand : Je kan de install starten door het aanklikken van het msi bestand vanuit Verkenner. Na installatie is steeds een manuele

Nadere informatie

Formulier maken en opvangen met php

Formulier maken en opvangen met php Welkom bij mijn PHP tutorial (Deel 2) Ik ga in deze delen PHP uitleggen, dit doe ik in het programma notepad++ (gratis) deze kunt u downloaden van www.richard3332.nl/downloads.php Als u beschikt over dreamweaver

Nadere informatie

DATAMODEL SQL. Middelbare School. Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1

DATAMODEL SQL. Middelbare School. Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1 DATAMODEL SQL Middelbare School Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1 INHOUDSOPGAVE 1. Informatiedomein 3 1.1 Informatiedomein 3 1.2 Toepassingen 3 2.

Nadere informatie

Puntjes op de I. Baris Firat

Puntjes op de I. Baris Firat Puntjes op de I Baris Firat 1 Functies en kritieke onderdelen in code (onderdelen die niet in één oogopslag te verklaren zijn) zijn voorzien van comments. Hierbij wordt er gebruikt gemaakt van geldende

Nadere informatie

Taak 2.1.3 Versleutelen en dan weer terug... 1

Taak 2.1.3 Versleutelen en dan weer terug... 1 Taak 2.1.3 Versleutelen en dan weer terug Inhoud Taak 2.1.3 Versleutelen en dan weer terug... 1 Inhoud... 1 Inleiding... 2 Encryptie en Decryptie... 3 Symmetrisch... 3 Asymmetrisch... 3 Waarom Encryptie

Nadere informatie

Verder zijn er de nodige websites waarbij voorbeelden van objectgeoriënteerd PHP (of Objec Oriented PHP, OO PHP) te vinden zijn.

Verder zijn er de nodige websites waarbij voorbeelden van objectgeoriënteerd PHP (of Objec Oriented PHP, OO PHP) te vinden zijn. Objectgeoriënteerd PHP (versie 5) Kennisvereisten: Ervaring met programmeren in PHP met MySQL Je weet wat een class of klasse is Je weet wat een instantie van een klasse (een object) is Je weet wat een

Nadere informatie

Zelftest Database applicatieprogrammering met JDBC

Zelftest Database applicatieprogrammering met JDBC Zelftest Database applicatieprogrammering met JDBC Document: n1216test.fm 02/04/2012 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST DATABASE

Nadere informatie

REST Implementatie. Versie 0.99. ideal

REST Implementatie. Versie 0.99. ideal REST Implementatie Versie 0.99 ideal REST Implementatie 2 van 14 Inhoudsopgave REST... 3 DirectoryRequest... 4 StatusRequest... 6 TransactionRequest... 8 ErrorResponse... 10 ReturnURL... 11 CallbackURL...

Nadere informatie

Katholieke Hogeschool Kempen Campus Geel Departement Handelswetenschappen en Bedrijfskunde 3de jaar Toegepaste Informatica

Katholieke Hogeschool Kempen Campus Geel Departement Handelswetenschappen en Bedrijfskunde 3de jaar Toegepaste Informatica Katholieke Hogeschool Kempen Campus Geel Departement Handelswetenschappen en Bedrijfskunde 3de jaar Toegepaste Informatica Labo 4 Beheer van databanken Svenia CLAES (3Ti3) Britt JACOBS (3Ti3) Lies VAN

Nadere informatie

Naam project Lost And Found Animals Lokaal gehost Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50%

Naam project Lost And Found Animals Lokaal gehost Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50% Naam project Lost And Found Animals Url Lokaal gehost Groepsleden Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50% 1. Beveiliging in de toepassing Naam gebruiker Wachtwoord

Nadere informatie

Les 2 Eenvoudige queries

Les 2 Eenvoudige queries Les 2 Eenvoudige queries XAMP Apache server ( http ) mysql server PHP myadmin IAM SQL oefeningen Database phpmyadmin Import : sql_producten.sql, sql_winkel.sql, sql_festival.sql SAMS SQL in 10 minuten

Nadere informatie

Handleiding portal voor invoeren verplichte gegevens voor ANBI s. http://anbi.federatiecultuur.nl

Handleiding portal voor invoeren verplichte gegevens voor ANBI s. http://anbi.federatiecultuur.nl Handleiding portal voor invoeren verplichte gegevens voor ANBI s http://anbi.federatiecultuur.nl 1 Inhoud Introductie... 3 Registreren... 4 Organisatie toevoegen... 6 Organisatie wijzigen... 8 Wachtwoord

Nadere informatie

De Kleine WordPress Handleiding

De Kleine WordPress Handleiding Introductie Dit is geen uitgebreide handleiding om een WordPress website of blog mee te bouwen. Het is ook geen overzicht van alle aspecten die een WordPress website zo bijzonder maken en geen verhandeling

Nadere informatie

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double. Algemeen C# Variabele Een variabele is een willekeurige waarde die word opgeslagen. Een variabele heeft altijd een datetype ( De soort waarde die een variabele bevat). Datatypes Een datatype is de sort

Nadere informatie

ASRemote WebService. Via deze webservice kunt u:

ASRemote WebService. Via deze webservice kunt u: ASRemote WebService De ASRemote WebService is een SOAP Webservice die softwarematige communicatie met Exact Globe mogelijk maakt vanaf een willekeurige locatie op het internet. Via deze webservice kunt

Nadere informatie

Foutafhandeling in SQL

Foutafhandeling in SQL Algemene richtlijnen binnen de mogelijkheden van RDBMS en 4GL Foutafhandeling in SQL Toon Loonen Foutafhandeling van SQL-code is op veel projecten een achtergebleven gebied. Soms is er discussie of het

Nadere informatie

Formulieren en waarden posten naar een view

Formulieren en waarden posten naar een view Hoofdstuk 4 Formulieren en waarden posten naar een view Waarden posten naar een view in een Zend-project gaat heel anders dan dat je gewend bent. Om dit mechanisme te leren, kunnen we het beste een eenvoudige

Nadere informatie

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

ideal Betaal Formulier (Ondersteund o.a. ideal, MisterCash, Direct E-Banking en Credit Card) Script: Versie: 0.5 Licentie: ideal Betaal Formulier (Ondersteund o.a. ideal, MisterCash, Direct E-Banking en Credit Card) Gratis te gebruiken door (erkende) goede doelen. 200,00 excl. BTW voor aanschaf

Nadere informatie

Handleiding OpenCart - Reeleezee

Handleiding OpenCart - Reeleezee Handleiding OpenCart - Reeleezee www.webwinkelfacturen.nl Samenvatting Dit is de handleiding voor de koppeling van OpenCart naar Reeleezee. De koppeling zorgt dat voor bestellingen in OpenCart automatisch

Nadere informatie

WEBSECURITY INFORMATICA STUDENTENWERKING. Gemaakt door Bryan De Houwer en Yuri Moens

WEBSECURITY INFORMATICA STUDENTENWERKING. Gemaakt door Bryan De Houwer en Yuri Moens WEBSECURITY INFORMATICA STUDENTENWERKING Gemaakt door Bryan De Houwer en Yuri Moens ISW Informatica studentenwerking voor en door studenten Wat bieden wij aan: Workshops Shell accounts Altijd bereikbaar

Nadere informatie

INFITT01 - Internettechnologie WEEK 8

INFITT01 - Internettechnologie WEEK 8 INFITT01 - Internettechnologie WEEK 8 Programma Databases (JDBC, JNDI, ORM, JPA) MVC & Spring/Struts EJB Databases Veel web applicaties moeten informatie over langere tijd op kunnen slaan. Een voor de

Nadere informatie

Handleiding - Aanmaken van SQL server gebruiker

Handleiding - Aanmaken van SQL server gebruiker Handleiding - Aanmaken van SQL server gebruiker Om verbinding te maken met een database die op een SQL Server staat moet in Visionplanner de database worden gekozen, moeten inloggevens voor die database

Nadere informatie

9. Het wijzigen van gegevens

9. Het wijzigen van gegevens 9. Het wijzigen van gegevens Voor het wijzigen van gegevens wordt het DML-statement UPDATE gebruikt. Om dit statement correct te kunnen gebruiken moeten enkele zaken bekend zijn: In welke tabel moeten

Nadere informatie

Handleiding conversie Exact Globe naar Exact Online

Handleiding conversie Exact Globe naar Exact Online Stap 0: Wat doen we wel/niet Wij converteren alleen financiële data. Optioneel documenten en bijlages van de financiële data. BTW-code grondslagen worden niet geconverteerd, de mutaties worden geboekt

Nadere informatie

1. * Database worden vaak gebruikt in Client-Server architectuur.

1. * Database worden vaak gebruikt in Client-Server architectuur. Naam Studentnummer Klas Herkansing [ ] ja, nee [ ], zoja uit welk jaar? kernbegrippen relationele database Minimaal drie van de vijf vragen goed beantwoorden. 1. * Database worden vaak gebruikt in Client-Server

Nadere informatie