.voorwoord:
Vakantie was pas begonnen in juli, of ik heb mij volledig into PHP5 gesmeten. Ik was al aardig op de hoogte van OOP, maar ik wilde meteen enkele klassen uitschrijven om in de toekomst een hoop werk te besparen.
Een weekje bezig geweest met de belangrijkste van allen: dbAccess! Aangezien je in je websites vaak een heleboel queries nuttigt, kan dit wel een boel werk besparen.
.uitleg:
Mijn keuze voor de Engelse benamingen van functies? Een stuk korter, duidelijker en naar de toekomst toe een must, vind ik.
De klasse heeft 2 essentiele methoden:
dbConnect(),
dbClose(). Deze worden automatisch doorgevoerd door respectievelijk de contructor en destructor, maar het beste is om na iedere query je dbVerbinding te sluiten(!).
Indien je vervolgens weer een query uitvoert, controleert de methode altijd of je verbinding open hebt staan of niet, dus no worries about that...
Daarnaast zal je over het algemeen gebruik maken van
executeSQL(), waar je dan je query aan meegeeft (zoals je dat altijd gewoon bent met mysql_query()).
Om alle teruggegeven queries op te halen (bij een SELECT), controleer je of je alle queries hebt ingeladen ahv
eof(). Again, vergeet je verbinding niet te sluiten é?
Om je gegevens uit te lezen heb ik de methoden
fetchArray() en
fetchAssoc() toegevoegd, die gewoon gebruik maken van de sql-fetch-functies, en de werkrij eentje verhogen...
Daarnaast zitten er nog enkele methoden in, indien nodig, weet je ze wel te vinden. De naamgeving wijst zichzelf al uit. Vorige maand heb ik nog een aantal MSSQL-methoden toegevoegd, op aanvraag. Die gebruik ikzelf eigenlijk nooit, maar zitten er ineens bij zie
.installatie:
1] Vooreerst geef je je database gegevens in, gebruik makend van deze variabelen:
Indien je andere globale variabelen wil gebruiken, kan je dat gerust, maar dan moet je dit even in de constructor (
__construct()) van de klasse wijzigen.
<?php
$g_sDBHost = ""; // db server (meestal: localhost)
$g_sUser = ""; // db gebruiker
$g_sPassword = ""; // db wachtwoord
$g_sDBName = ""; // db naam hier invullen
?>
<?php
$g_sDBHost = ""; // db server (meestal: localhost)
$g_sUser = ""; // db gebruiker
$g_sPassword = ""; // db wachtwoord
$g_sDBName = ""; // db naam hier invullen
?>
2] Vervolgens includen we onze klasse:
<?
include_once("dbAccess.php");
?>
<?
include_once("dbAccess.php");
?>
3] Om een verbinding op te zetten, maken we een nieuw object van onze klasse aan:
<?
$objDB = new dbAccess;
?>
<?
$objDB = new dbAccess;
?>
4] We willen gegevens uit onze database halen dmv een query. (fictief in dit geval)
<?
$sql = "SELECT id, titel, nieuws, bron FROM nieuws LIMIT 0,30 ORDER BY id ASC";
?>
<?
$sql = "SELECT id, titel, nieuws, bron FROM nieuws LIMIT 0,30 ORDER BY id ASC";
?>
5] Om al onze nieuwspostgegevens op te halen, kunnen we bvb. het volgende doen:
<?
if($objDB->executeSQL($sql) {
$aNP = array(); $aNieuws = array();
if(!$objDB->eof()) {
$aNP = $objDB->fetchArray(); // Array van nieuwsgegevens
array_push($aNieuws, $aNP); // we voegen de nieuwspost array toe aan de array waar al onze nieuwsposts in zullen steken
$objDB->dbClose(); // we sluiten onze verbinding voor de veiligheid
}
}
?>
<?
if($objDB->executeSQL($sql) {
if(!$objDB->eof()) {
$aNP = $objDB->fetchArray(); // Array van nieuwsgegevens
array_push($aNieuws, $aNP); // we voegen de nieuwspost array toe aan de array waar al onze nieuwsposts in zullen steken $objDB->dbClose(); // we sluiten onze verbinding voor de veiligheid
}
}
?>
6] Ik ga niet alle situaties uit de doeken doen, maar dit moet toch al flink een stap in de richting van... wezen.
.naamgeving:
Een extra toelichting bij m'n speciale naamgeving. Ge denkt misschien van wtf?? Maar... er zit een logica achter, die ik gebruik sinds ik het in een PHP-naslagwerk tegenkwam:
- Allereerst kom je in een klasse 3 soorten variabelen tegen: globals, members, parameters. Elk van hun krijgt een eigen prefix, resp.: g_, m_, p_
- Vervolgens geef ik nog een teken mee, waarmee ik herken wat voor type variabele het is: array, integer, string, boolean,... krijgen resp. een r, n, s, b,... toegewezen.
Als resultaat geeft dat bvb. $g_sUser, $m_rConnection,...
.vereist:
- PHP 5.x op server
- MySQL/MSSQL database
- basis OOP-kennis
Informatie over een persistente verbinding vind je in je php.net!
Veel succes alvast, en hopelijk kunnen/willen jullie er handig gebruik van maken!
Addow