PDO 1 Verbinden met een database 🎯 Leerdoelen Je weet wat PDO is en waarom het gebruikt wordt. Je kunt verbinding maken met een database via PDO. Je begrijpt waarom het handig is om een apart bestand voor de connectie te maken. 💡 Uitleg PDO (PHP Data Objects) is een moderne manier om met databases te werken in PHP. Het ondersteunt meerdere soorten databases zoals MySQL, SQLite en PostgreSQL, maar in deze lessen gebruiken we alleen MySQL. Je maakt verbinding met een database via een zogeheten DSN (Data Source Name) en slaat de connectie op in een variabele. Om herhaling te voorkomen, zet je dit in een apart bestand zoals connection.php . Dit maakt het ook makkelijk om de instellingen aan te passen wanneer je de website van je localhost naar een liveserver verplaatst. connection.php Het bestand connection.php bevat de code om verbinding te maken met de database. In plaats van in elk PHP-bestand opnieuw een connectie te moeten schrijven, zet je die één keer netjes in dit aparte bestand. Zo houd je je code overzichtelijk en voorkom je fouten. Door connection.php te gebruiken, hoef je later bij het online zetten van je site alleen in dat ene bestand de instellingen aan te passen (zoals wachtwoord of host), in plaats van in alle bestanden waar je met de database werkt. getMessage(); } In het connection.php bestand wordt de database naam, en het user id en password ingesteld. Op een XAMPP ontwikkel server is standaard de user root en heeft geen password. Op een productieserver is dat natuurlijk ander! 🚰 Opdracht Maak een database voorbeeld aan met één tabel dieren met de kolommen id (INT, AUTO_INCREMENT, PRIMARY KEY), naam (VARCHAR), en soort (VARCHAR). Maak een bestand connection.php dat de connectie maakt zoals hierboven. Maak een tweede bestand testverbinding.php waarin je require 'connection.php'; gebruikt om verbinding te maken. Laat met echo zien of de verbinding is gelukt (bijv. "Verbinding gelukt!"). 🧠 Reflectie Welke manieren zijn er in PHP om met een database te werken, en waarom gebruiken wij PDO? Wat zijn voordelen van een apart connection.php bestand? connection.php heeft op een development omgeving een andere inhoud dan op een productieserver. Wat is het verschil en waarom? 📄 Inleveren Beantwoord in eigen woorden de reflectievragen (txt of pdf). 2 Gegevens uitlezen met - SELECT 🎯 Leerdoelen Je weet hoe je gegevens uit een MySQL-database ophaalt met PDO. Je kunt een SELECT-query uitvoeren via PDO. Je kunt resultaten weergeven in HTML via PHP. 💡 Uitleg In deze opdracht gebruik je een bestaande database met studentgegevens. Je voert met behulp van PDO een SELECT -query uit en toont de resultaten in een HTML-tabel. Database Je gebruikt een SQL-bestand student.sql om snel een database en tabel aan te maken met voorbeeldgegevens: Open phpMyAdmin (via XAMPP of MAMP). Klik op "Importeren". Selecteer het bestand student.sql dat je van je docent krijgt of downloadt. Klik op "Start" om het script uit te voeren. Je krijgt nu een database met de tabel studenten . read.php Maak read.php en zet daar deze code in: query($sql); $studenten = $stmt->fetchAll(); ?>
ID | Naam | Woonplaats |
---|---|---|
= $student['id'] ?> | = $student['voornaam'] . ' ' . $student['achternaam'] ?> | = $student['woonplaats'] ?> |
Weet je zeker dat je student = '... hier de naam' ?> wilt verwijderen?
🛠️ Opdracht – student verwijderen met naam Maak een bestand delete.php . Gebruik de bovenstaande code. Vul zelf de SELECT -query aan zodat je de gegevens van de student ophaalt op basis van het ID. Laat de voornaam en achternaam van de student zien in de bevestigingsvraag. Test de pagina via de URL: delete.php?id=3 (of een ander bestaand ID). 🧠 Reflectie Waarom is het belangrijk om eerst de naam van de student te tonen voordat je verwijdert? Hoe weet PHP welke gegevens bij het opgegeven ID horen? Wat gebeurt er als je probeert een niet-bestaand ID te verwijderen? Waarom gebruiken we POST voor het verwijderen? 📤 Inleveren Lever het bestand delete.php in via Teams of Canvas. Beantwoord de reflectievragen in een .txt of .pdf bestand en lever die ook in. 6 Studenten zoeken 🎯 Leerdoelen Je weet hoe je een WHERE clausule gebruikt in een SELECT-query met PDO. Je begrijpt hoe LIKE gebruikt wordt voor zoeken op (deel van) tekst. Je kunt input van een formulier gebruiken om gegevens te filteren. 💡 Uitleg Met een WHERE -clausule kun je filteren welke rijen je uit de database haalt. Als je wilt zoeken op een deel van een naam, gebruik je LIKE met het procentteken % . Bijvoorbeeld: SELECT * FROM studenten WHERE voornaam LIKE :zoek , en dan geef je %zoekwoord% mee aan de placeholder :zoek . Voorbeeldopzet – zoek.php Maak een bestand zoek.php met deze opzet: 🛠️ Opdracht – zoekfunctie bouwen Maak het bestand zoek.php . Gebruik de bovenstaande code als startpunt. Vul zelf de SELECT-query aan met een WHERE voornaam LIKE :zoek clausule. Voer de query uit met prepare() en execute() – gebruik % wildcards om ook op deelwoorden te zoeken. Toon de resultaten in een tabel met voornaam, achternaam, woonplaats en e-mail. 🧠 Reflectie Wat is het verschil tussen een gewone vergelijking ( = ) en LIKE ? Hoe werkt % in een LIKE-query precies? Wat gebeurt er als je een lege zoekterm invoert? Waarom gebruik je prepare() ook bij zo’n zoekopdracht? 📤 Inleveren Lever het bestand zoek.php in via Teams of Canvas. Beantwoord de reflectievragen in een .txt of .pdf bestand en lever die ook in. 7 Mini-project: CRUD applicatie 🎯 Leerdoelen Je kunt een complete CRUD-toepassing bouwen met PDO. Je past SELECT, INSERT, UPDATE, DELETE en LIKE correct toe. Je gebruikt connection.php om je project onderhoudbaar te houden. Wat is CRUD? CRUD staat voor Create, Read, Update, Delete – dit zijn de vier basisbewerkingen die je met gegevens in een database kunt uitvoeren: Create : nieuwe gegevens toevoegen (bijv. een nieuwe student inschrijven) Read : gegevens opvragen en tonen (bijv. een lijst van alle studenten) Update : bestaande gegevens aanpassen (bijv. een fout corrigeren in een naam) Delete : gegevens verwijderen (bijv. een student uitschrijven) Een CRUD-applicatie is een programma dat deze vier functies ondersteunt. In webontwikkeling gebruik je vaak formulieren en SQL in combinatie met PHP of andere programmeertalen om deze acties uit te voeren. 💡 Uitleg Je hebt nu alle onderdelen geleerd om een volledige webapplicatie te maken die met een database werkt. In dit project bouw je een kleine CRUD-app voor studenten waarin je: een lijst van studenten toont ( read ) nieuwe studenten kunt toevoegen ( create ) bestaande studenten kunt bewerken ( update ) studenten kunt verwijderen (met bevestiging) ( delete ) kunt zoeken op voornaam 🛠️ Opdracht – CRUD-app bouwen Maak een eigen map of project met minimaal de volgende bestanden: read.php – toont de lijst van studenten create.php – formulier om nieuwe studenten toe te voegen update.php – formulier om bestaande studenten te bewerken delete.php – bevestiging en verwijdering van een student zoek.php – zoekfunctie op voornaam connection.php – je databaseverbinding Zorg dat je hiervan één web applicatie van en zorg dat je via een menu bar kan navigeren. Voeg bovenaan read.php een navigatie toe zodat je snel naar de andere pagina’s kunt. Controleer of je code werkt voor verschillende studenten en test het met minstens 3 zelf ingevoerde records. Je mag de opmaak aanpassen met CSS als je wilt, maar dat is optioneel. 🧠 Reflectie Welke onderdelen van PDO vind je makkelijk, en welke lastig? Waar moet je vooral op letten bij UPDATE en DELETE? Wat zou je verbeteren als je meer tijd had voor dit project? Wat betekent het als we zeggen dat PDO "veilig" is? Wanneer is dat waar? 📤 Inleveren Lever je hele projectmap in (alle .php-bestanden). Lever de reflectie in (txt of pdf). En gebruik je eigen woorden! 8 Toetsvragen: PDO en CRUD 🎯 Leerdoelen Je herkent de belangrijkste onderdelen van PDO-gebruik in PHP. Je begrijpt hoe CRUD-operaties technisch en logisch werken. Je kunt fouten of onvolledigheden in PDO-code herkennen en verklaren. 🛠️ Toetsvragen Wat doet PDO, waarvoor hebben we het nodig? PDO staat voor PHP Data Objects. Het is een library met functies waarmee je PHP kan 'verbinden' met een database. Je kan dan in PHP SQL queries gebruiken om de data in de database op te vragen of aan te passen. Hoe maak je een verbinding met de database via PDO? Je maakt een DSN-string aan (bijv. mysql:host=localhost;dbname=voorbeeld;charset=utf8mb4 ), geeft gebruikersnaam en wachtwoord door, en instancieert een nieuwe PDO -object. Het meest eenvoudige voorbeeld is: $pdo = new PDO( 'mysql:host=localhost;dbname= database_name ;charset=utf8mb4',' user ', ' password '); Waarom is het handig om connection.php te gebruiken? Door de connectiecode in één bestand te zetten, onderhoud je die centrale plek makkelijker. Als je wachtwoord wijzigt of je plaatst je code vanaf je laptop op een productie server dan hoef je op maar één paats je wachtwoord aan te passen. Waarom zou je trouwens je wachtwoord willen aanpassen als je je code op een prodctie server zet? Op jouw laptop hgebruik je voor je database meestal geen password, lekker makkelijk. Een productieserver kan de hele wereld 'zien' en als je geen password gebruikt dan is je database binnen de kortste keren gehacked. Tip: verander niet alleen je wachtwoord, maar pas ook je user name aan dan maak je het hackers nog iets lastiger. Hoe gebruik je fetchAll() en wanneer gebruik je fetch()? fetchAll() haalt alle rijen in één keer op als array van arrays (of objects). fetch() haalt per aanroep één rij op, handig als je maar één record verwacht of in een loop wilt verwerken. Waarom gebruik je bij INSERT en UPDATE altijd POST in plaats van GET? Omdat POST bedoeld is voor acties die data wijzigen en niet in de URL verschijnt, zodat gevoelige data niet zichtbaar wordt en de actie niet per ongeluk herhaald wordt bij refresh van de pagina. Waarvoor gebruik je WHERE bij een UPDATE of DELETE? De WHERE -clausule specifieert precies welke rij(en) aangepast of verwijderd moeten worden. Zonder WHERE wordt de operatie op álle rijen uitgevoerd. Wat betekent CRUD en hoe komen deze onderdelen terug in de module? CRUD staat voor Create, Read, Update, Delete. In de module leer je: Create: via INSERT en prepare()/execute() (create.php). Read: via SELECT en fetchAll() (read.php). Update: via UPDATE met prepared statements (update.php). Delete: via DELETE met bevestiging en WHERE (delete.php). Wat doet require 'connection.php' ? Dit voegt het bestand connection.php in en maakt de databaseconnectie beschikbaar. Hierdoor hoef je niet in elk stukje code waarin je PDO gebruikt opnieuw de connectie te schrijven. 📤 Inleveren Gebruik deze vragen om jezelf te testen of als voorbereiding op de kennis-check. Maak één zelf bedachte vraag over PDO gaat en die hier boven niet staat. Stel de vraag, geef het antwoord en een korte uitleg. Gebruik het formaat dat hier ook wordt gebruikt, Lever in in PDF of TXT. --