Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z klasa obslugujaca baze
Forum PHP.pl > Forum > PHP
marcini82
Witam!

Mam klase, ktora obsluguje baze danych, a w niej metode wyciagajaca wiersze z wyniku:
  1. <?php
  2.  
  3. class Baza{
  4.  
  5. function ileWierszy($zapytanie){
  6. $ile=pg_num_rows($zapytanie);
  7. return $ile;
  8. }
  9.  
  10. function pobierzWiersz($zapytanie, $rodzaj_tablicy='PGSQL_ASSOC'){
  11. // mozliwy tez rodzaj PGSQL_NUM
  12. if ($this->ileWierszy($zapytanie)>0){
  13. $wiersz=pg_fetch_array($zapytanie, $rodzaj_tablicy);
  14. return $wiersz;
  15. }else{
  16. return false;
  17. }
  18. }
  19.  
  20. }
  21.  
  22. ?>


No i jak wywoluje normalnie
  1. <?php
  2. $wiersz=$baza->pobierzWiersz($zapytanie);
  3. ?>
to pobiera ladnie.

Ale jak chce pobrac wszystkie wiersze:
  1. <?php
  2.  
  3. while ($wiersz=$baza->pobierzWiersz($zapytanie)){
  4.  // tu jakis kod
  5. }
  6.  
  7. ?>

to robi mi sie nieskonczona petla.
Dlaczego $baza->pobierzWiersz() nie zwraca false jesli skoncza sie wiersze do pobierania?
mike
OT
Po co Ci ta klasa?
Jest ona całkowicie bezużyteczna, jest tylko nadpisaniem wbudowanych funkcji i nie robi nic poza nimi.
marcini82
Cytat
Po co Ci ta klasa?

Zalozenie bylo takie, zeby mozliwe bylo ewentualne przeniesienie aplikacji z pgsql na mysql pooprzez zamiane tej wlasnie klasy i ew. poprawienie jeszcze czegos tam, ale zeby nie trzeba bylo przy tym podmieniac funkcji bazy danych w calym kodzie.
No i mam w niej obsluge bledow bazy danych.
mike
Skoro piszesz abstrakt bazodanowy to zajrzyj do AdoDB i do Creole.
Zobaczysz jak oni to robią.
marcini82
Wlasnie zaczalem myslec nad wykorzystaniem Pear DB zamiast mojej klasy. Ale to by wymagalo przerobki tego, co juz napisalem sad.gif

Zastanawia mnie czemu nie dziala to co jest, w koncu pobierzWiersz() zwraca to, co zwraca pg_fetch_array(), wiec dlaczego nie zwraca tez false jesli wiersze sie skoncza?

A co do abstrakcji, czy Pear DB byloby dobrym wyborem? Nie mam z tym doswiadczenia a nie chcialbym sie znow w cos wpakowac. Tym bardziej ze goni mnie czas.
anopak
jeżeli masz cały system oparty na swojej klasie i nie chcesz go w całości przebudowywać to pobierz sobie AdoDB i napisz rozrzeszenie, dzięki któremu będize wstanie korzystać z AdoDB z zachowanie całego kodu... Miałem podobnie, pisałem klase do obsługi MySQL, aż doszedłem do momentu, kiedy to lepiej mi było się przesiąść na AdoDB i tam rozwijać ewentualne rzeczy których potrzebuję.
Przykład tworzenia modułu na podstawie AdoDB Lite
marcini82
No wlasnie, a jak wypada porownanie Pear DB i AdoDB? Bo zadnych konkretnych i sensownych stwierdzen nie znalazlem. Czy cos przemawia mocno na korzysc jednej biblioteki?
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.