Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Klasa do do zarządzania bazą danych
qz12
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 6.03.2013

Ostrzeżenie: (0%)
-----


Witam,
próbuję stworzyć klasę do zarządzania bazą danych:
  1. include './config.php';//polaczenie z baza
  2.  
  3. class DaneUzytkownika
  4. {
  5.  
  6. protected $dane = array();
  7.  
  8. function __construct($dane = array())
  9. {
  10. if (is_array($dane))
  11. $this->dane = $dane;
  12. else if ($dane instanceof DaneUzytkownika)
  13. $this->dane = $dane->pobierzJakoTablica();
  14. }
  15.  
  16.  
  17. function __get($parametr)
  18. {
  19. if (isset($this->dane[$parametr]))
  20. return $this->dane[$parametr];
  21. return '';
  22. }
  23.  
  24. // ustawia atrybut
  25. function __set($parametr, $wartosc)
  26. {
  27. $this->dane[$parametr] = $wartosc;
  28. }
  29.  
  30. // zwraca dane w postaci listy par klucz='wartosc'
  31. // oddzielonych przecinkiem
  32. function pobierzListeDanych()
  33. {
  34. $list = '';
  35. foreach($this->dane as $atrybut => $wartosc)
  36. $list .= $atrybut.'=\''.addslashes($wartosc).'\'';
  37. return $list;
  38. }
  39.  
  40. // zwraca listę atrybutow oddzielonych przecinkiem
  41. function pobierzListeAtrybutow()
  42. {
  43. return join(', ', array_keys($this->dane));
  44. }
  45.  
  46. // zwraca listę wartości oddzielonych przecinkiem
  47. function pobierzListeWartosci()
  48. {
  49. $values = array();
  50. foreach($this->dane as $wartosc)
  51. $values[] = '\''.addslashes($wartosc).'\'';
  52. return join(', ', $values);
  53. }
  54.  
  55. // zwraca dane w postaci tablicy (zwraca przez wartosc)
  56. function pobierzJakoTablica()
  57. {
  58. return $this->data;
  59. }
  60. }
  61.  
  62. class Uzytkownik extends DaneUzytkownika
  63. {
  64. private $dane_w_bazie;
  65.  
  66. // konstruktor - tworzenie obiektu
  67. function __construct(&$dane, $baza)
  68. {
  69. parent::__construct();
  70.  
  71. if ($this->dane)
  72. $this->dane_w_bazie = new DaneUzytkownika($this->dane);
  73. }
  74.  
  75.  
  76.  
  77. function zapisz()
  78. {
  79. mysql_query('UPDATE users SET '.$this->pobierzListeDanych().' WHERE '.$this->dane_w_bazie->pobierzListeDanych());
  80. {
  81. $this->dane_w_bazie = $this->dane;
  82. return true;
  83. }
  84. return false;
  85. }
  86.  
  87. function usun()
  88. {
  89. mysql_query('DELETE FROM users WHERE '.$this->pobierzListeDanych());
  90. return (bool) mysql_affected_rows();
  91. }
  92. }
  93.  
  94. class BazaUzytkownikow
  95. {
  96. function pobierz(DaneUzytkownika $szukamy)
  97. {
  98. $query = mysql_query('SELECT * FROM users WHERE '.$szukamy->pobierzListeDanych());
  99. if (mysql_num_rows($query))
  100. return new Uzytkownik(mysql_fetch_assoc($query));
  101. return false;
  102. }
  103.  
  104. function dodaj(DaneUzytkownika $dane)
  105. {
  106. mysql_query('INSERT INTO users('.$dane->pobierzListeAtrybutow().') VALUES('.$dane->pobierzListeWartosci().')');
  107. return new Uzytkownik($dane, $this);
  108. return false;
  109. }
  110.  
  111. function zapisz($dane)
  112. {
  113. if ($dane instanceof Uzytkownik)
  114. $dane->zapisz();
  115. else
  116. $this->dodaj($dane);
  117. }
  118.  
  119. function usun(Uzytkownik $uzytkownik)
  120. {
  121. return $uzytkownik->usun();
  122. }
  123. }
  124.  
  125. $baza = new BazaUzytkownikow;
  126.  
  127.  
  128. $szukamy = new DaneUzytkownika;
  129. $szukamy->user_name= 'rr';
  130.  
  131.  
  132. $uzytkownik = $baza->pobierz($szukamy);
  133.  
  134. // zmieniam dane pobranego wcześniej użytkownika
  135. $uzytkownik->user_from = 'nowy gościu';
  136. //próbuje zapisać zmiany
  137. $baza->zapisz($uzytkownik);

Otrzymuję komunikat :
Catchable fatal error: Argument 1 passed to BazaUzytkownikow::dodaj() must be an instance of DaneUzytkownika
Co robię źle ?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.12.2025 - 09:31