Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]pseudo-sterownik do obsługi bazy danych - problem
Czapla
post 15.12.2008, 20:21:14
Post #1





Grupa: Zarejestrowani
Postów: 130
Pomógł: 3
Dołączył: 10.12.2007
Skąd: Bielsko-Biała

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


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


--------------------
Life is a game, continue playing and try to be a pr0.
Go to the top of the page
+Quote Post
erix
post 15.12.2008, 21:21:10
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Czapla
post 15.12.2008, 22:01:15
Post #3





Grupa: Zarejestrowani
Postów: 130
Pomógł: 3
Dołączył: 10.12.2007
Skąd: Bielsko-Biała

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


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


--------------------
Life is a game, continue playing and try to be a pr0.
Go to the top of the page
+Quote Post
erix
post 15.12.2008, 22:14:08
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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ę?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Czapla
post 16.12.2008, 11:44:36
Post #5





Grupa: Zarejestrowani
Postów: 130
Pomógł: 3
Dołączył: 10.12.2007
Skąd: Bielsko-Biała

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


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


--------------------
Life is a game, continue playing and try to be a pr0.
Go to the top of the page
+Quote Post
nospor
post 16.12.2008, 11:47:40
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
nie zwraca
Ale ty uzywasz tak jakby zwracalo tongue.gif
return mysql_num_rows($this->BazaWynik[$b_SQL]);


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Czapla
post 16.12.2008, 12:46:06
Post #7





Grupa: Zarejestrowani
Postów: 130
Pomógł: 3
Dołączył: 10.12.2007
Skąd: Bielsko-Biała

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


to jak w końcu ma być, bo kończą mi się pomysły....


--------------------
Life is a game, continue playing and try to be a pr0.
Go to the top of the page
+Quote Post
nospor
post 16.12.2008, 12:47:58
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 6.07.2025 - 03:26