Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]pseudo-sterownik do obsługi bazy danych - problem
Czapla
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
erix
post
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.
Go to the top of the page
+Quote Post
Czapla
post
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.

(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
(IMG:http://images34.fotosik.pl/419/2a52bdb9144475b4.png)

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

dodałem return false (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
erix
post
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ę?
Go to the top of the page
+Quote Post
Czapla
post
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
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




Cytat
nie zwraca
Ale ty uzywasz tak jakby zwracalo (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
return mysql_num_rows($this->BazaWynik[$b_SQL]);
Go to the top of the page
+Quote Post
Czapla
post
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....
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 559
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?
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 27.09.2025 - 07:05