Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [klasa, ibase] Numrows?
Forum PHP.pl > Forum > Gotowe rozwiązania
alfanick
Robię klasy do obsługi baz danych, wszystkie są jednorodne... Oto np. MySQL:
  1. <?
  2. class DB { // Definicja klasy DB
  3. var $DB_HOST; // Host bazy danych MySQL
  4. var $DB_NAME; // Nazwa bazy danych MySQL
  5. var $DB_USER; // Nazwa użytkownika bazy danych MySQL
  6. var $DB_PASS; // Hasło użytkownika bazy danych MySQL
  7. var $DB_QUERY; // Treść zapytania MySQL
  8. var $DB_NUMROWS; // Ilość wierszy dla zapytania MySQL
  9. var $DB_FETCH_ARRAY; // Rezultat zapytania w postaci tablicy
  10. var $DB_ESCAPE_STRING; // Przetworzone zapytanie
  11. var $DB_RESULT; // Rezultat zapytania
  12. var $DB_FETCH_ARRAY_FULL = array(); // Rezultat zapytania w postaci tablicy wielowymiarowej
  13. var $DB_FETCH_OBJECT; // Rezultat zapytania w postaci objektu
  14. function DB($DB_HOST, 
  15. $DB_NAME, 
  16. $DB_USER, 
  17. $DB_PASS) { // Konstruktor
  18. $this->DB_HOST = $DB_HOST; // Zmienna zewnętrzna
  19. $this->DB_NAME = $DB_NAME; // Zmienna zewnętrzna
  20. $this->DB_USER = $DB_USER; // Zmienna zewnętrzna
  21. $this->DB_PASS = $DB_PASS; // Zmienna zewnętrzna
  22. @mysql_connect($DB_HOST, 
  23.  $DB_USER, 
  24.  $DB_PASS) // Połączenie z bazą danych MySQL
  25.  OR 
  26.  die(&#092;"Nie można się połączyć z bazą danych MySQL: \"
  27.  . mysql_errno() . &#092;" | \"
  28.  . mysql_error()); // Obsługa błędów
  29. @mysql_select_db($DB_NAME) // Wybranie bazy danych MySQL
  30.  OR
  31.  die(&#092;"Nie można wybrać bazy danych MySQL: \"
  32.  . mysql_errno() . &#092;" | \"
  33.  . mysql_error()); // Obsługa błędów
  34. }
  35. function query($DB_QUERY) { // Wykonanie zapytania
  36. $this->DB_QUERY = $DB_QUERY; // Zmienna zewnętrzna
  37. $this->DB_RESULT = @mysql_query($DB_QUERY) // Wykonanie zapytania
  38. OR
  39. die(&#092;"Nie można wykonać zapytania: <!--\"
  40. . $DB_QUERY . &#092;"-->\"
  41. . mysql_errno() . &#092;" | \"
  42. . mysql_error()); // Obsługa błędów
  43. return $this->DB_RESULT;
  44. }
  45. function escape_string($DB_ESCAPE_STRING) { // Lewe ukośniki
  46. $this->DB_ESCAPE_STRING = $DB_ESCAPE_STRING; // Zmienna zewnętrzna
  47. $this->DB_ESCAPE_STRING = mysql_real_escape_string($DB_ESCAPE_STRING); // Dodanie lewych ukośników
  48. return $this->DB_ESCAPE_STRING; // Zwrócenie wartośći
  49. }
  50. function close() { // Zamknięcie połączenia
  51. @mysql_close() // Zamknięcie połączenia z bazą danych MySQL
  52. OR
  53. die(&#092;"Nie można zamknąć połączenia z bazą danych MySQL: \"
  54. . mysql_errno() . &#092;" | \"
  55. . mysql_error()); // Obsługa błędów
  56. }
  57. function fetch_array($DB_RESULT) { // Pobranie wyników do tablicy
  58. $this->DB_FETCH_ARRAY = @mysql_fetch_array($DB_RESULT) // Wykonanie tablicy
  59.  OR
  60.  die(&#092;"Nie można przetworzyć zapytania: <!--\"
  61.  . $this->DB_QUERY . &#092;"-->\"
  62. . mysql_errno() . &#092;" | \"
  63.  . mysql_error()); // Obsługa błędów
  64. return $this->DB_FETCH_ARRAY; // Zwrócenie wartośći
  65. }
  66. function fetch_array_full($DB_RESULT) { // Pobranie wyników do tablicy wielowymiarowej
  67. while ($this->DB_FETCH_ARRAY_FULL[] 
  68.  = 
  69.  @mysql_fetch_array($DB_RESULT) // Wykonanie tablicy wielowymiarowej
  70.  ) {}
  71. return $this->DB_FETCH_ARRAY_FULL; // Zwrócenie wartośći
  72. }
  73. function free_result($DB_RESULT) { // Wyczszczenie pamięci
  74. @mysql_free_result($DB_RESULT) // Wyczyszczenie pamięci (buforu)
  75.  OR
  76.  die(&#092;"Nie można oczyścić pamięci: <!--\"
  77.  . $this->DB_QUERY . &#092;"-->\"
  78.  . mysql_errno() . &#092;" | \"
  79.  . mysql_error()); // Obsługa błędów
  80. }
  81. function fetch_object($DB_RESULT) { // Pobranie wyników w postaci objektu
  82. $this->DB_FETCH_OBJECT = @mysql_fetch_object($DB_RESULT) // Pobranie wyników
  83.  OR
  84.  die(&#092;"Nie można przetworzyć zapytania: <!--\"
  85. . $this->DB_QUERY . &#092;"-->\"
  86. . mysql_errno() . &#092;" | \"
  87. . mysql_error()); // Obsługa błędów
  88. return $this->DB_FETCH_OBJECT; // Zwrócenie wartości
  89. }
  90. function numrows($DB_RESULT) { // Iloœć wierszy
  91. $this->DB_NUMROWS = @mysql_num_rows($DB_RESULT) // Pobranie iloœci wierszy
  92. OR
  93. die(&#092;"Nie można pobrać liczby wierszy: <!--\"
  94. . $this->DB_QUERY . &#092;"-->\"
  95. . mysql_errno() . &#092;" | \"
  96. . mysql_error()); //Obsługa błędów
  97. return $this->DB_NUMROWS; // Zwróć wartoœć
  98. }
  99.  
  100.  
  101. }
  102. ?>


I aktualnie robię klasę do obsługi Interbase/Firebird. I moja praca stanęła przy ostatniej funkcji, a mianowicie numrows():
  1. <?
  2.  class DB { // Definicja klasy DB
  3. var $DB_CONN; // Uchwyt Interbase/Firebird
  4. var $DB_HOST; // Host bazy danych Interbase/Firebird
  5. var $DB_NAME; // Nazwa bazy danych Interbase/Firebird
  6. var $DB_CSTR; // String łączący
  7. var $DB_USER; // Nazwa użytkownika bazy danych Interbase/Firebird
  8. var $DB_PASS; // Hasło użytkownika bazy danych Interbase/Firebird
  9. var $DB_QUERY; // Treść zapytania Interbase/Firebird
  10. var $DB_NUMROWS; // Ilość wierszy dla zapytania Interbase/Firebird
  11. var $DB_FETCH_ARRAY; // Rezultat zapytania w postaci tablicy
  12. var $DB_ESCAPE_STRING; // Przetworzone zapytanie
  13. var $DB_RESULT; // Rezultat zapytania
  14. var $DB_FETCH_ARRAY_FULL = array(); // Rezultat zapytania w postaci tablicy wielowymiarowej
  15. var $DB_FETCH_OBJECT; // Rezultat zapytania w postaci objektu
  16. function DB($DB_HOST,
  17. $DB_NAME,
  18. $DB_USER,
  19. $DB_PASS) { // Konstruktor
  20. $this->DB_HOST = $DB_HOST; // Zmienna zewnętrzna
  21. $this->DB_NAME = $DB_NAME; // Zmienna zewnętrzna
  22. $this->DB_USER = $DB_USER; // Zmienna zewnętrzna
  23. $this->DB_PASS = $DB_PASS; // Zmienna zewnętrzna
  24. $this->DB_CSTR = $DB_HOST . &#092;":\" . $DB_NAME . \".gdb\"; // Tworzenie stringa łączącego
  25. $this->DB_CONN = @ibase_connect($this->DB_CSTR,
  26.  $DB_USER,
  27.  $DB_PASS) // Połączenie z bazą danych
  28.  OR
  29.  die(&#092;"Nie można się połączyć z bazą danych Interbase/Firebird: \"
  30. . ibase_errmsg()); // Obsługa błędów
  31. return $this->DB_CONN; // Zwrócenie wartośći
  32. }
  33. function query($DB_QUERY) { // Wykonanie zapytania
  34. $this->DB_QUERY = $DB_QUERY; // Zmienna zewnętrzna
  35. $this->DB_RESULT = @ibase_query($this->DB_CONN,
  36. $DB_QUERY) // Wykonanie zapytania
  37. OR
  38. die(&#092;"Nie można wykonać zapytania: <!--\"
  39. . $DB_QUERY . &#092;"-->\"
  40. . ibase_errmsg()); // Obsługa błędów
  41. return $this->DB_RESULT; // Zwrócenie wartośći
  42. }
  43. function escape_string($DB_ESCAPE_STRING) { // Lewe ukośniki
  44. $this->DB_ESCAPE_STRING = $DB_ESCAPE_STRING; // Zmienna zewnętrzna
  45. return $this->DB_ESCAPE_STRING; // Zwrócenie wartośći
  46. }
  47. function close() { // Zamknięcie połączenia
  48. @ibase_close($this->DB_CONN) // Zamknięcie połączenia z bazą Interbase/Firebird
  49. OR
  50. die(&#092;"Nie można zamknąć połączenia z bazą danych Interbase/Firefox: \"
  51. . ibase_errmsg()); // Obsługa błędów
  52. }
  53. function fetch_array($DB_RESULT) { // Pobranie wyników do tablicy
  54. $this->DB_FETCH_ARRAY = @ibase_fetch_assoc($DB_RESULT) // Wykonanie tablicy
  55.  OR
  56.  die(&#092;"Nie można przetworzyć zapytania: <!--\"
  57. . $this->DB_QUERY . &#092;"-->\"
  58. . ibase_errmsg()); // Obsługa błędów
  59. return $this->DB_FETCH_ARRAY; // Zwrócenie wartośći
  60. }
  61. function fetch_array_full($DB_RESULT) { // Pobranie wyników do tablicy wielowymiarowej
  62. while ($this->DB_FETCH_ARRAY_FULL[] 
  63.  = 
  64.  @ibase_fetch_assoc($DB_RESULT) // Wykonanie tablicy wielowymiarowej
  65.  ) {}
  66. return $this->DB_FETCH_ARRAY_FULL; // Zwrócenie wartośći
  67. }
  68. function free_result($DB_RESULT) { // Wyczyszczenie pamięci
  69. @ibase_free_result($DB_RESULT) // Wyczyszczenie pamięci (buforu)
  70.  OR
  71.  die(&#092;"Nie można oczyścić pamięci: <!--\"
  72. . $this->DB_QUERY . &#092;"-->\"
  73. . ibase_errmsg()); // Obsługa błędów
  74. }
  75. function fetch_object($DB_RESULT) { // Pobranie wyników w postaci obiektu
  76. $this->DB_FETCH_OBJECT = @ibase_fetch_object($DB_RESULT) // Pobranie wyników
  77.  OR
  78.  die(&#092;"Nie można przetworzyć zapytania: <!--\"
  79. . $this->DB_QUERY . &#092;"-->\"
  80. . ibase_errmsg()); // Obsługa błędów
  81. return $this->DB_FETCH_OBJECT; // Zwrócenie wartości
  82. }
  83.  /* function numrows($DB_RESULT) { // Ilość wierszy
  84. $this->DB_NUMROWS = @...................
  85. OR
  86. die(\"Nie można pobrać ilości wierszy: <!--\"
  87. . $this->DB_QUERY . \"-->\"
  88. . ibase_errmsg()); // Obsługa błędów
  89. return $this->DB_NUMROWS; // Zwrócenie wartośći
  90.  }
  91.   */
  92.  }
  93. ?>
Mam schemat w postaci komentarza, czyli jak powinna wygądać ta funkcja, niestety jak wiem nie istnieje taka funkcja Ibase które by zwróciła ilość wierszy... Wie może ktoś jakby miała wyglądać funkcja numrows() w mojej klasie?? Stosując się do mojego sposobu zapisu funkcji??

Pozdro
alfanick


PS: To jest dość ważne dla mnie smile.gif
dr_bonzo
Troche z innej beczki: przy byle bledzie -- polaczenia, query -- caly skrypt zostaje zatrzymany (die) -- jest to bardzo nie teges (eleganckie), i jeszcze dodatkowo wyrzuca bledy bazy danych userowi na ekran sad.gif
alfanick
Cytat(dr_bonzo @ 2005-05-25 17:48:56)
Troche z innej beczki: przy byle bledzie -- polaczenia, query -- caly skrypt zostaje zatrzymany (die) -- jest to bardzo nie teges (eleganckie), i jeszcze dodatkowo wyrzuca bledy bazy danych userowi na ekran sad.gif

Wiem, potem pomyślę nad jakąś funkcyjką do obsługi błędów.. Napsizę ją i zamiast die() wstawie i będzie można wybrać co ona ma zrobić smile.gif. Ale to później, najpierw muszę rozwiązać ten pierwszy problem...
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.