login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Database tools > [PHP5] Data Object voorbeeld class

[PHP5] Data Object voorbeeld class

Auteur: Tri - 08 januari 2007 - 00:25 - Gekeurd door: Wijnand - Hits: 11237 - 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:

  1. <?php
  2.  
  3. /**
  4.  * Error reporting op alles om te debuggen
  5.  */
  6.  
  7. /**
  8.  * Vraag de configuratie file op
  9.  */
  10.  
  11. require_once('config.inc.php');
  12.  
  13. /**
  14.  * Vraag de class Klanten op
  15.  */
  16.  
  17. require_once('klanten.class.php');
  18.  
  19. /**
  20.  * Maak connectie met de database
  21.  */
  22.  
  23. $rDB = connectDB();
  24.  
  25. /**
  26.  * Open het try blok
  27.  */
  28. try {
  29. /**
  30. * Maak een nieuw object van de class klanten aan
  31. */
  32.  
  33. $oKlant = new Klanten();
  34.  
  35. /**
  36. * Vul de gegevens in van gebruiker 'Rob'
  37. */
  38.  
  39. $oKlant->sNaam = 'Marten';
  40. $oKlant->sEmail = 'marten@sitemasters.nl';
  41. $oKlant->sAdres = 'Sitemasterlaan 1';
  42. $oKlant->sPostcode = '8121 UK';
  43. $oKlant->sWoonplaats = 'Urk';
  44.  
  45. $oKlant->insertData($rDB);
  46.  
  47. /**
  48.  * Sluit het try blok en open het catchblok
  49.  */
  50. } catch (Exception $e) {
  51. switch ($e->getCode()) {
  52. case SQL_QUERY_ERROR:
  53. echo 'SQL query fout: '. $e->getMessage();
  54. exit();
  55. break;
  56. }
  57. }
  58.  
  59. /**
  60.  * Gebruiker is dus ingevoerd. Print de gegevens op het scherm
  61.  */
  62. echo 'Gegevens zijn succesvol ingevoerd in de database. <br />';
  63. echo 'Nieuwe ID: '. $oKlant->iID;
  64. ?>


Een voorbeeld voor het wijzigen van een bestand is het volgende:

  1. <?php
  2.  
  3. /**
  4.  * Error reporting op alles om te debuggen
  5.  */
  6.  
  7. /**
  8.  * Vraag de configuratie file op
  9.  */
  10.  
  11. require_once('config.inc.php');
  12.  
  13. /**
  14.  * Vraag de class Klanten op
  15.  */
  16.  
  17. require_once('klanten.class.php');
  18.  
  19. /**
  20.  * Maak connectie met de database
  21.  */
  22.  
  23. $rDB = connectDB();
  24.  
  25. /**
  26.  * Open het try blok
  27.  */
  28. try {
  29. /**
  30. * Maak een nieuw object van de class klanten aan
  31. */
  32.  
  33. $oKlant = new Klanten();
  34.  
  35. /**
  36. * Vraag de gegevens op van gebruiker 'Rob'
  37. */
  38.  
  39. $oKlant->getData('Marten', $rDB);
  40.  
  41. /**
  42. * We willen het emailadres veranderen van Rob
  43. */
  44.  
  45. $oKlant->sEmail = 'nieuwemailvanmarten@sitemasters.nl';
  46. $oKlant->updateData($rDB);
  47.  
  48. /**
  49.  * Sluit het try blok en open het catchblok
  50.  */
  51. } catch (Exception $e) {
  52. switch ($e->getCode()) {
  53. case SQL_QUERY_ERROR:
  54. /**
  55. * Er zijn dus problemen met de query
  56. */
  57. 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';
  58. exit();
  59. break;
  60.  
  61. case NO_USER:
  62. /**
  63. * Geen gebruiker gevonden
  64. */
  65. echo 'Er is geen gebruiker gevonden!';
  66. exit();
  67. }
  68. }
  69.  
  70. /**
  71.  * Gebruiker is dus ge - update.
  72.  */
  73. print 'Gegevens zijn succesvol ge-update.';
  74. ?>

Code:
De uiteindelijk class die gebruikt word (klanten.class.php):

  1. <?php
  2.  
  3. /**
  4.  * Klanten Data Object
  5.  * @Author Marten van Urk
  6.  *
  7.  */
  8.  
  9. class Klanten {
  10. public $iID;
  11. public $sNaam;
  12. public $sEmail;
  13. public $sAdres;
  14. public $sPostcode;
  15. public $sWoonplaats;
  16.  
  17. /**
  18.   * Constructor
  19.   * We definieren deze constructor voor de duidelijkheid. We gebruiken hem niet
  20.   *
  21.   */
  22. public function Klanten() {}
  23.  
  24. /**
  25.   * Function: getData()
  26.   * @author Marten van Urk
  27.   *
  28.   * Haal gebruikersgegevens uit de database aan de hand van de naam
  29.   *
  30.   * @param string $klantnaam De klantnaam waar op gezocht moet worden
  31.   * @param resource $connection Connection Identifier
  32.   */
  33. public function getData($klantnaam, $connection) {
  34. $aData = array();
  35.  
  36. $sQuery = "SELECT * FROM klanten WHERE naam = '". mysql_real_escape_string($klantnaam) ."'";
  37.  
  38. /**
  39.   * Standaard foutafhandeling word onderbroken. Dus zelf foutafhandeling aanmaken!
  40.   */
  41. $rResult = @mysql_query($sQuery);
  42.  
  43. /**
  44.   * Er is een query fout
  45.   */
  46. if ($rResult === false) {
  47. throw new Exception('Query mislukt: ' . mysql_error() . '. Dit is MySQL errorcode: ' . mysql_errno(), SQL_QUERY_ERROR);
  48. }
  49. /**
  50.   * Geen gebruikers gevonden
  51.   */
  52. if (@mysql_num_rows($rResult) == 0) {
  53. throw new Exception('Geen gebruikers gevonden met de naam ' . $klantnaam, NO_USER);
  54. }
  55.  
  56. /**
  57.   * Geen foutmeldingen tegen gekomen. Query is gelukt dus vul de array met data
  58.   */
  59. $aData = @mysql_fetch_assoc($rResult);
  60.  
  61. $this->iID = $aData['id'];
  62. $this->sNaam = $aData['naam'];
  63. $this->sEmail = $aData['email'];
  64. $this->sAdres = $aData['adres'];
  65. $this->sPostcode = $aData['postcode'];
  66. $this->sWoonplaats = $aData['woonplaats'];
  67. }
  68.  
  69. /**
  70.   * Function: insertData()
  71.   * @author Marten van Urk
  72.   * Voer gebruikers in in de database
  73.   *
  74.   * @param resource $connection Connection Identifier
  75.   */
  76. public function insertData($connection) {
  77. $sQuery = "INSERT INTO klanten (naam, email, adres, postcode, woonplaats)
  78. VALUES ('". mysql_real_escape_string($this->sNaam) ."',
  79. '". mysql_real_escape_string($this->sEmail) ."',
  80. '". mysql_real_escape_string($this->sAdres) ."',
  81. '". mysql_real_escape_string($this->sPostcode) ."',
  82. '". mysql_real_escape_string($this->sWoonplaats) ."')";
  83.  
  84. $rResult = mysql_query($sQuery);
  85.  
  86. if ($rResult === FALSE) {
  87. throw new Exception('Query mislukt: ' . mysql_error(), SQL_QUERY_ERROR);
  88. }
  89.  
  90. // Haal de nieuwste id, die bij de nieuwe gebruiker hoort
  91. $this->iID = @mysql_insert_id($connection);
  92. }
  93.  
  94. /**
  95.   * Function: updateData()
  96.   * @author Marten van Urk
  97.   *
  98.   * Update gegevens uit de database. Gebruik: Haal gegevens op met de functie getData(), wijzig de gegevens en voer updateData uit
  99.   *
  100.   * @param resource $connection Connection Identifier
  101.   */
  102.  
  103. public function updateData($connection) {
  104. $sQuery = "UPDATE klanten SET
  105. naam = '". mysql_real_escape_string($this->sNaam) ."',
  106. email = '". mysql_real_escape_string($this->sEmail) ."',
  107. adres = '". mysql_real_escape_string($this->sAdres) ."',
  108. postcode = '". mysql_real_escape_string($this->sPostcode) ."',
  109. woonplaats = '". mysql_real_escape_string($this->sWoonplaats) ."'
  110. WHERE id = ". intval($this->iID);
  111.  
  112. $rResult = mysql_query($sQuery);
  113.  
  114. if ($rResult === FALSE) {
  115. throw new Exception('Query mislukt: ' . mysql_error(), SQL_QUERY_ERROR);
  116. }
  117. }
  118.  
  119. /**
  120.   * Function: deleteData()
  121.   * @author Marten van Urk
  122.   *
  123.   * Verwijder gebruikers uit het systeem. Gebruik: lees gebruiker uit met getData, voer vervolgens deleteData uit
  124.   *
  125.   * @param resource $connection Connection Identifier
  126.   */
  127. public function deleteData($connection) {
  128. $sQuery = "DELETE * FROM klanten WHERE id = ". intval($this->iID);
  129.  
  130. $rResult = mysql_query($sQuery);
  131.  
  132. if ($rResult === FALSE) {
  133. throw new Exception('Query mislukt: ' . mysql_error(), SQL_QUERY_ERROR);
  134. }
  135.  
  136. }
  137. }
  138. ?>
Download code! Download code (.txt)

 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (8)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.047s