Auteur: Tri - 08 januari 2007 - 00:25 - Gekeurd door: Wijnand - Hits: 11453 - Aantal punten: 3.25 (4 stemmen)
Deze class is een voorbeeld van Data Object gebruik. Het voordeel van deze code is dat je heel gemakkelijk met je database kan werken. Een voorbeeld code voor bijvoorbeeld het toevoegen:
<?php
/**
* Error reporting op alles om te debuggen
*/
error_reporting(E_ALL);
/**
* Vraag de configuratie file op
*/
require_once('config.inc.php');
/**
* Vraag de class Klanten op
*/
require_once('klanten.class.php');
/**
* Maak connectie met de database
*/
$rDB = connectDB();
/**
* Open het try blok
*/
try {
/**
* Maak een nieuw object van de class klanten aan
*/
$oKlant = new Klanten();
/**
* Vul de gegevens in van gebruiker 'Rob'
*/
$oKlant->sNaam = 'Marten';
$oKlant->sEmail = 'marten@sitemasters.nl';
$oKlant->sAdres = 'Sitemasterlaan 1';
$oKlant->sPostcode = '8121 UK';
$oKlant->sWoonplaats = 'Urk';
$oKlant->insertData($rDB);
/**
* Sluit het try blok en open het catchblok
*/
} catch (Exception $e) {
switch ($e->getCode()) {
case SQL_QUERY_ERROR:
echo 'SQL query fout: '. $e->getMessage();
exit();
break;
}
}
/**
* Gebruiker is dus ingevoerd. Print de gegevens op het scherm
*/
echo 'Gegevens zijn succesvol ingevoerd in de database. <br />';
echo 'Nieuwe ID: '. $oKlant->iID;
?>
<?php
/**
* Error reporting op alles om te debuggen
*/
error_reporting(E_ALL);
/**
* Vraag de configuratie file op
*/
require_once('config.inc.php');
/**
* Vraag de class Klanten op
*/
require_once('klanten.class.php');
/**
* Maak connectie met de database
*/
$rDB = connectDB();
/**
* Open het try blok
*/
try {
/**
* Maak een nieuw object van de class klanten aan
*/
$oKlant = new Klanten();
/**
* Vraag de gegevens op van gebruiker 'Rob'
*/
$oKlant->getData('Marten', $rDB);
/**
* We willen het emailadres veranderen van Rob
*/
$oKlant->sEmail = 'nieuwemailvanmarten@sitemasters.nl';
$oKlant->updateData($rDB);
/**
* Sluit het try blok en open het catchblok
*/
} catch (Exception $e) {
switch ($e->getCode()) {
case SQL_QUERY_ERROR:
/**
* Er zijn dus problemen met de query
*/
echo 'Onze excuses! Door problemen met onze database kon de query niet uitgevoerd worden. Probeert u later nog eens of neem contact op met de administrator';
exit();
break;
case NO_USER:
/**
* Geen gebruiker gevonden
*/
echo 'Er is geen gebruiker gevonden!';
exit();
}
}
/**
* Gebruiker is dus ge - update.
*/
print 'Gegevens zijn succesvol ge-update.';
?>
echo'Onze excuses! Door problemen met onze database kon de query niet uitgevoerd worden. Probeert u later nog eens of neem contact op met de administrator';
<?php
/**
* Klanten Data Object
* @Author Marten van Urk
*
*/
class Klanten {
public $iID;
public $sNaam;
public $sEmail;
public $sAdres;
public $sPostcode;
public $sWoonplaats;
/**
* Constructor
* We definieren deze constructor voor de duidelijkheid. We gebruiken hem niet
*
*/
public function Klanten() {}
/**
* Function: getData()
* @author Marten van Urk
*
* Haal gebruikersgegevens uit de database aan de hand van de naam
*
* @param string $klantnaam De klantnaam waar op gezocht moet worden
* @param resource $connection Connection Identifier
*/
public function getData($klantnaam, $connection) {
$aData = array();
$sQuery = "SELECT * FROM klanten WHERE naam = '". mysql_real_escape_string($klantnaam) ."'";
/**
* Standaard foutafhandeling word onderbroken. Dus zelf foutafhandeling aanmaken!
*/
$rResult = @mysql_query($sQuery);
/**
* Er is een query fout
*/
if ($rResult === false) {
throw new Exception('Query mislukt: ' . mysql_error() . '. Dit is MySQL errorcode: ' . mysql_errno(), SQL_QUERY_ERROR);
}
/**
* Geen gebruikers gevonden
*/
if (@mysql_num_rows($rResult) == 0) {
throw new Exception('Geen gebruikers gevonden met de naam ' . $klantnaam, NO_USER);
}
/**
* Geen foutmeldingen tegen gekomen. Query is gelukt dus vul de array met data
*/
$aData = @mysql_fetch_assoc($rResult);
$this->iID = $aData['id'];
$this->sNaam = $aData['naam'];
$this->sEmail = $aData['email'];
$this->sAdres = $aData['adres'];
$this->sPostcode = $aData['postcode'];
$this->sWoonplaats = $aData['woonplaats'];
}
/**
* Function: insertData()
* @author Marten van Urk
* Voer gebruikers in in de database
*
* @param resource $connection Connection Identifier
*/
public function insertData($connection) {
$sQuery = "INSERT INTO klanten (naam, email, adres, postcode, woonplaats)
VALUES ('". mysql_real_escape_string($this->sNaam) ."',
'". mysql_real_escape_string($this->sEmail) ."',
'". mysql_real_escape_string($this->sAdres) ."',
'". mysql_real_escape_string($this->sPostcode) ."',
'". mysql_real_escape_string($this->sWoonplaats) ."')";
$rResult = mysql_query($sQuery);
if ($rResult === FALSE) {
throw new Exception('Query mislukt: ' . mysql_error(), SQL_QUERY_ERROR);
}
// Haal de nieuwste id, die bij de nieuwe gebruiker hoort
$this->iID = @mysql_insert_id($connection);
}
/**
* Function: updateData()
* @author Marten van Urk
*
* Update gegevens uit de database. Gebruik: Haal gegevens op met de functie getData(), wijzig de gegevens en voer updateData uit
*
* @param resource $connection Connection Identifier
*/
public function updateData($connection) {
$sQuery = "UPDATE klanten SET
naam = '". mysql_real_escape_string($this->sNaam) ."',
email = '". mysql_real_escape_string($this->sEmail) ."',
adres = '". mysql_real_escape_string($this->sAdres) ."',
postcode = '". mysql_real_escape_string($this->sPostcode) ."',
woonplaats = '". mysql_real_escape_string($this->sWoonplaats) ."'
WHERE id = ". intval($this->iID);
$rResult = mysql_query($sQuery);
if ($rResult === FALSE) {
throw new Exception('Query mislukt: ' . mysql_error(), SQL_QUERY_ERROR);
}
}
/**
* Function: deleteData()
* @author Marten van Urk
*
* Verwijder gebruikers uit het systeem. Gebruik: lees gebruiker uit met getData, voer vervolgens deleteData uit
*
* @param resource $connection Connection Identifier
*/
public function deleteData($connection) {
$sQuery = "DELETE * FROM klanten WHERE id = ". intval($this->iID);
$rResult = mysql_query($sQuery);
if ($rResult === FALSE) {
throw new Exception('Query mislukt: ' . mysql_error(), SQL_QUERY_ERROR);
}
}
}
?>
<?php
/**
* Klanten Data Object
* @Author Marten van Urk
*
*/
class Klanten {
public$iID;
public$sNaam;
public$sEmail;
public$sAdres;
public$sPostcode;
public$sWoonplaats;
/**
* Constructor
* We definieren deze constructor voor de duidelijkheid. We gebruiken hem niet
*
*/
publicfunction Klanten(){}
/**
* Function: getData()
* @author Marten van Urk
*
* Haal gebruikersgegevens uit de database aan de hand van de naam
*
* @param string $klantnaam De klantnaam waar op gezocht moet worden