Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]pseudo-sterownik do obsługi bazy danych - problem
Forum PHP.pl > Forum > Przedszkole
Czapla
Pisze sobie pseudo sterownik do obsługi bazy danych narazie mam tyle
  1. <?php
  2. class bazaMySQL
  3. {
  4.  var $BazaPolaczenie;
  5.  var $BazaWynik;
  6.  var $BazaHost;
  7.  var $BazaNazwa;
  8.  var $BazaUzytkownik;
  9.  var $BazaHaslo;
  10.  var $BazaWiersz;
  11.  
  12.    function __construct ($b_Host, $b_Nazwa, $b_Uzytkownik, $b_Haslo)
  13.    {
  14.    $this->BazaHost   = $b_Host;
  15.    $this->BazaNazwa = $b_Nazwa;
  16.    $this->BazaUzytkownik   = $b_Uzytkownik;
  17.    $this->BazaHaslo   = $b_Haslo;
  18.    $this->BazaPolaczenie = mysql_connect( $this->BazaHost, $this->BazaUzytkownik, $this->BazaHaslo );
  19.      mysql_select_db( $this->BazaNazwa, $this->BazaPolaczenie ) || die ("Baza danych wygenerowała błąd: ".mysql_error());
  20.    }
  21.  
  22.   function wykonajZapytanie ($b_SQL)
  23.    {
  24.    $this->BazaWynik = mysql_escape_string($b_SQL);
  25.    $this->BazaWynik = mysql_query ($b_SQL, $this->BazaPolaczenie);
  26.    $this->BazaWiersz = mysql_fetch_array( $this->BazaWynik );
  27.        return true;
  28.    return false;
  29.    }
  30.  
  31.   function kolejnyWiersz ()
  32.    {
  33.    $this->BazaWiersz = mysql_fetch_array( $this->BazaWynik );
  34.    if (empty ($this->BazaWiersz))
  35.        return false;
  36.    return true;
  37.    }    
  38.  
  39.   function pokazWiersz ($b_Wiersz)
  40.    {
  41.    if ( isset ($this->BazaWynik))
  42.        {        
  43.        $wiersz = $this->BazaWiersz[$b_Wiersz];
  44.        return $wiersz;
  45.        }
  46.    }
  47.  
  48.    function pokazStatystyke ($b_SQL)
  49.     {
  50.     return mysql_num_rows($this->BazaWynik[$b_SQL]);
  51.     }
  52.  
  53.   function  __destruct() {
  54.       mysql_close($this->BazaPolaczenie);
  55.       print "<br>Zakończono połączenie z baza danych.";
  56.    }
  57.  }
  58. ?>


Sposób wywołania
  1. <?php
  2. require "sterownikidefinicja_baza_danych.php";
  3. require "sterownikisterownik_baza_danych.php";
  4.  
  5. $polaczenie = new bazaMySQL($host,$baza,$uzytkownik,$haslo);
  6.  
  7. $zapytanie = "SELECT id_test, test FROM test";
  8.  
  9. $polaczenie->wykonajZapytanie($zapytanie);
  10. $polaczenie->pokazStatystyke($zapytanie);
  11.  
  12. do {
  13. print ($polaczenie->pokazWiersz("test"));
  14. } while ($polaczenie->kolejnyWiersz());
  15. ?>


1.Mam problem odnośnie metody pokazStatystyke(), chciałby wyświetlić liczbę rekordów ale zamiast tego otrzymuje błąd.
2.Co można było by tu zoptymalizować, napisać prościej, może wprowadzić modyfikatory dostępu, etc?

Pozdrawiam
erix
Cytat
  1. <?php
  2. $this->BazaWynik = mysql_escape_string($b_SQL);
  3.   $this->BazaWynik = mysql_query ($b_SQL, $this->BazaPolaczenie);
  4. ?>

Ubezpieczasz zapytanie, a i tak z tego nie korzystasz.

Cytat
ale zamiast tego otrzymuje błąd.

Błędów możesz mieć N!^N.

Cytat
2.Co można było by tu zoptymalizować, napisać prościej, może wprowadzić modyfikatory dostępu, etc?

Ok, polskie nazwy zmiennych, to jest zły pomysł. Poza tym, mógłbyś pluć wyjątkami, a nie tylko false przy niepowodzeniu. Bool na wyjściu nic nie mówi.
Czapla
Cytat
Ubezpieczasz zapytanie, a i tak z tego nie korzystasz.

poprawione
Cytat
Błędów możesz mieć N!^N.

smile.gif


Cytat
Bool na wyjściu nic nie mówi.

dodałem return false tongue.gif
erix
Cytat
dodałem return false

Ale false nie powie, że błędem jest brak połączenia z bazą, niepoprawne zapytanie, uwalona baza, czy jeszcze jakieś inne nieprawidłowości. Chyba w jakimś celu wymyślono wyjątki, nie?

Cytat
Błędów możesz mieć N!^N

A od kiedy to mysql_query" title="Zobacz w manualu PHP" target="_manual zwraca tablicę?
Czapla
Cytat(erix @ 15.12.2008, 22:14:08 ) *

nie zwraca, funkcja obsługuje tylko jedno zapytanie, co nie zmienia faktu ze dalej nie wiem jak zapisac metode mysql_num_row

pozdrawiam
nospor
Cytat
nie zwraca
Ale ty uzywasz tak jakby zwracalo tongue.gif
return mysql_num_rows($this->BazaWynik[$b_SQL]);
Czapla
to jak w końcu ma być, bo kończą mi się pomysły....
nospor
Cytat
bo kończą mi się pomysły....

Ale ty nie masz nic wymyslac, tylko chwile sie zastanowic... skoro:
  1. <?php
  2. $this->BazaWynik = mysql_query ($b_SQL, $this->BazaPolaczenie);
  3. ?>

to ma byc:
  1. <?php
  2. return mysql_num_rows($this->BazaWynik);
  3. ?>

Takie trudne?
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.