Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: klasa do obslugi uzytkowniko i PDO
Forum PHP.pl > Forum > PHP
a79rtur
witam
chce napisac klase do oblugi uzytkownikow, natrafilem takze w sieci na ciekawy artykul na temat interfejsu baz danych PDO

chcialbym sie dowiedziec czy dobrze sie do tego zabieram. dzialanie klasy bedzie takie ze tworzymy obiekt klasy pochodnej, w argumencie jest obiekt klasy PDO i id uzytkownika. pobieramy jakies informacje uzytkownika, czy w innej klasie pochodniej je zapisujemy itp.
czy PDO nie bedzie tu kolidowac? tam trzeba troche bardziej kombinowac z zapytaniami, bo np. nie mozna wykonywac nowego dopoki sie starego nie zamknie. chyba ze dla klasy uzytkownik drugi obiekt PDO przekazac ? prosze o rady i informacje czy moje rozwiazanie jest ok.

  1. <?php
  2.  
  3. //przykladowe wywolanie
  4.  
  5. $uz=new UzytkownikInfo($pdo,15);
  6. $uz_nazwa=$uz->pokazUzNazwa();
  7. echo $uz_nazwa;
  8.  
  9. //xzaczatek klasy
  10.  
  11. //////////// Postawowa klasa abstrakcyjna dla obslugi uzytkownika, wczytujaca dane uzytkowni
    ka z bazy danych
  12. abstract class Uzytkownik {
  13.  
  14. protected $uz_id;
  15. protected $row_uz=array();
  16.  
  17. function __construct(PDO $pdo,$uz_id) {
  18.  
  19. $this->uz_id=$uz_id;
  20.  
  21. $query="SELECT * FROM uzytkownik";
  22. $wynik=$pdo->query($query);
  23. $this->row_uz=$wynik->fetch(PDO::FETCH_ASSOC);
  24. $wynik->closeCursor();
  25. }
  26. }
  27.  
  28.  
  29. /////////// Klasa sluzaca do wyswietlania informacji o uzytkowniku 
  30. /////////// stworzenie przykladowego obiektu: $uz=new UzytkownikInfo($pdo,$uz_id);
  31. /////////// $pdo : obiekt klasy PDO (interfejsu do baz danych z php5)
  32. /////////// $uz_id : id uzytkownika
  33. class UzytkownikInfo extends Uzytkownik{
  34.  
  35. function __construct(PDO $pdo,$uz_id) {
  36.  
  37. parent::__construct($pdo,$uz_id);
  38. }
  39.  
  40. //////// funkcja zwraca nazwe uzytkownika ale pokazuje tylko tyle na ile pozwolil w prof
    ilu
  41. public function pokazUzNazwa() {
  42.  
  43. if($this->row_uz['uz_nazwa_pokaz']==UZ_NAZWA_POKAZ_IMIE_NAZWISKO_NICK) {
  44. return $this->row_uz['uz_imie'].' '.$this->row_uz['uz_nazwisko']." '".$this->row_uz['uz_nick']."'"; 
  45. }
  46. else if($this->row_uz['uz_nazwa_pokaz']==UZ_NAZWA_POKAZ_NICK) {
  47.  return $this->row_uz['uz_nick'];
  48. }
  49. }
  50. }
  51.  
  52. ?>
sf
Nie mam zielonego pojecia co tu ma kolidowac smile.gif Jak chcesz wykonac drugie zapytanie zanim pierwsze sie nie wykona?questionmark.gif
a79rtur
chodzilo mi o to ze w PDO nie ma takiego "oszukiwania" jak w obsludze mysqla z poziomu "czystego" php, czyli jesli pobieramy np w petli wyniki jakiegos zapytania to nie mozemy wtedy wykonac kolejnego bo kursor jest zajety.
mozemy sobie co najwyzej pobrac calosc do tablicy (fetchAll) i ta tablice przegladac.
przebudowalem troche klase bazowa zeby sama sie laczyla ,tworzy ona wlasny obiekt PDO, to chyba lepsze rozwiazanie ?

  1. <?php
  2.  
  3. abstract class Uzytkownik {
  4.  
  5. protected $uz_id;
  6. protected $row_uz=array();
  7.  
  8. function __construct($uz_id) {
  9.  
  10. $this->uz_id=$uz_id;
  11.  
  12. $pdo_uz=new PDO("mysql:host=".DBHOST.";dbname=".DBNAME,DBUSER,DBPASS);
  13. $pdo_uz->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  14.  
  15. $query_uz="SELECT * FROM uzytkownik LIMIT 1";
  16. $wynik_uz=$pdo_uz->query($query_uz);
  17. $this->row_uz=$wynik_uz->fetch(PDO::FETCH_ASSOC);
  18. $wynik_uz->closeCursor();
  19. }
  20. }
  21.  
  22. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.