Voor het toevoegen van gegevens binnen de applicatie Adressenlijst maken we gebruik van de drie vorige artikelen in de reeks fundamentals. Tevens maken we gebruik van een PHP editor.
De eerste regel zorgt ervoor dat er een connectie komt met de database. De derde regel zorgt ervoor dat de begin lay-out van het formulier geopend wordt.
Al de deze drie files taan in de root van de applicatie. Zie helemaal onderaan dit artikel voor de download link.
Het formulier
Het formulier is voor zich sprekend.
Het begin is via de request_method. Standaard staat deze op "GET". Pas als het formulier verstuurd wordt, krijgt deze de "POST" waarde.
Het begin van de fouten afhandelings routine
Er wordt eerst een lege array gemaakt genaamd $foutenlijst. Deze kan dan als dat nodig is, gevuld worden met individuele fouten.
Er wordt daarna een variabele $teller op de begin waarde 0 gezet.
Het valideren kan dan beginnen. In dit geval wordt er alleen gekeken of er een waarde is ingevuld. Zo niet wordt de array $foutenlijst met een getal en een waarde gevuld. Zo kun je voor elk veld zijn eigen validatie regel opstellen. Een tekst veld heeft immers andere regels dan een e-mail veld of een datum veld. Uiteraard kun je dit ook via javascript regelen.
Ik zou dit laatste zeker doen. Alleen niet alleen. De grootste fout die iemand kan maken, is dat de invoer die vanuit het Internet komt, vertrouwd wordt.
Kijk je naar het totale script, zul je zien dat er geen opschoning van ingevoerde data plaats vindt. Voor dit artikel heb ik gekozen dat hier niet te doen. Het zou de uitleg onnodig complex maken. In een toekomstig artikel kom ik hier nog op terug.
Een voorbeeld van een functie.
Als voorbeeld laat ik hier het afhandelen van een datum zien. de datum komen namenlijk altijd in een ander formaat in de database dan ze op een website leesbaar zijn. De database verwacht 2012-12-07 En de website verwacht 07-12-2012 We zullen dus van leesbaar naar niet leesbaar moeten gaan.
eerst wordt er gekeken of er een invoer is, zo nee dan is de datum 000-00-00 Is er wel een invoer, dient deze omgezet te worden. Hier is de functie
format_datum_1()
voor. De functie staat in de file
functies.php
welke in het begin van het script aangeroepen werd met de
include()
functie. .
Het afhandelen van de fouten routine
Hiervoor dient het volgende stuk script.
Als er fout optreedt, weet je dat de array $foutenlijst gevuld is. Dus als de array aanwezig is, ( lees niet leeg is ), zijn er fouten. De eerste regel kijkt hier naar. Deze bepaalt naar welke lus er door gestuurd wordt. Het daadwerkelijk toevoegen of het laten zien van fouten.
Is er een fout, wordt de gehele array $foutenlijst uitgelezen. Aangezien er alleen maar fouten in kunnen staan, mag alles getoond worden.
Het is trouwens wel zo vriendelijk om hier een link in te bouwen om terug te keren in het script. Je geeft iemand zowel de gelegenheid een formulier te verbeteren.
Het enige wat hier bij komt, is het vormen van de query.
Deze is goed leesbaar.
De prepared statements bieden je de mogelijkheid tot het creeren van queries die veiliger zijn, waarvan de performance beter is en die relatief eenvoudig te noteren zijn. Dit veiliger slaat op het feit dat er PHP via de bindParam methode automatisch variabelen beveiligd worden.
MySQL exploits kunnen zo niet gebeuren. Omdat het queryplan wordt opgesteld voordat er data wordt doorgegeven, is de query ook niet meer gevoelig voor "SQL injection". De structuur van de query wordt vastgelegd tijdens het prepareren van het statement en kan daarna niet meer veranderen. De data waarmee het statement later wordt aangeroepen kan dus de structuur van de query niet meer veranderen, het wordt simpelweg als data behandeld en niet als SQL statements.
Er kan enige verwarring optreden bij deze zin
$st_n = $db_n->prepare("INSERT INTO ".$tabel."
Er komt ineens de variabele
$st_n
om de hoek kijken. De basis is echter de array
$db_n
Deze is nodig om een connectie met MySQL te maken en te onderhouden. De array
$st_n
gebruik je om de queries verder af te handelen
De volgende artikelen
De volgende artikelen zullen gaan over :
Het veranderen van gegevens
Het zoeken van gegevens
En het verwijderen van gegevens
Hierbij wordt gebruik gemaakt van bovenstaande files.
Deze zijn trouwens in de DOWNLOAD sectie te vinden onder de naam adressen_pdo.zip.