Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: klasa bazy danych
Forum PHP.pl > Forum > PHP
banpl
niech mi ktos powie dlaczego niczego nie widac na stronie sad.gif
dopiero raczuje w php obiektowym wiec sami rozumiecie, ze od czegos trzeba zaczac ;]

oto moja klasa :

  1. <?
  2.  
  3. class sql{
  4.  
  5. private $db; // polaczenie z baza
  6. private $wb; // wybor bazy
  7. private $wynik; // wynik zapytania
  8. public $rows; // 
  9.  
  10. // wywolanie constructora
  11. public function __construct($host, $user, $haslo, $baza){
  12. $this -> db = mysql_connect($host, $user, $haslo);
  13. $this -> wb = mysql_select_db($baza) OR die ('Blad przy wyborze bazy'. mysql_error());
  14.  
  15. if(!is_resource($this -> db)){
  16. die ('Brak polaczenia z baza:'. mysql_error());
  17. }
  18.  
  19. }// koniec constructora
  20.  
  21. // wywolanie destructora
  22. public function __destruct(){
  23. if(is_resource($this -> db)){
  24. mysql_close($this -> db);
  25. }
  26. }// koniec destructora
  27.  
  28. // wykonanie zapytania
  29. public function query($query){
  30. $this -> wynik = mysql_query($query) OR die ('Blad odczytu danych'. mysql_error());
  31. }// koneic zapytania
  32.  
  33. // liczba wierszy
  34. public function num_rows(){
  35. mysql_num_rows($this -> wynik);
  36. }// koniec
  37.  
  38. // wypisanie wierszy
  39. public function fetch_array(){
  40. $this -> rows = mysql_fetch_array($this -> wynik) OR die ('Cos nie tak z wyswietleniem'. mysql_error());
  41. }// koniec
  42.  
  43. }
  44.  
  45. $sql = new sql('localhost', 'root', '', 'data');
  46.  
  47. $sql -> query('SELECT * FROM news ORDER BY id');
  48.  
  49. $sql -> num_rows();
  50.  
  51. while ($sql -> fetch_array()){
  52. echo $sql -> rows[0];
  53. echo $sql -> rows[1];
  54. echo $sql -> rows[2];
  55. }
  56. ?>
siemakuba
moim zdaniem
  1. <?php
  2.  
  3. public function fetch_array()
  4. {
  5. while ($dt = mysql_fetch_array($this -> wynik)) 
  6. { $this -> rows[] = $dt;
  7. }
  8. return $this->rows;
  9. }
  10.  
  11. public function num_rows()
  12. {
  13. return mysql_num_rows($this -> wynik);
  14. }
  15.  
  16. ?>


i dopiero wtedy:

  1. <?php
  2.  
  3. echo $sql -> num_rows();
  4. print_r($sql->fetch_array());
  5.  
  6. ?>


problem nie leży w obiektowości. twoje metody nie zwracaly zadnej wartosci.
dodatkowo, spogladnij do manuala odnosnie funkcji mysql_fetch_array" title="Zobacz w manualu php" target="_manual. W zaleznosci od potrzeby warto ja zamienic na mysql_fetch_assoc" title="Zobacz w manualu php" target="_manual lub mysql_fetch_row" title="Zobacz w manualu php" target="_manual lub chociaz dodawac modyfikator wyniku jako drugi parametr. dzieki temu nie bedziesz pobieral zdublowanych danych. Ot, takie dobre przyzwyczajenie :)

pozdr.
banpl
dzieki za podpowiedz smile.gif

juz wszystko dziala a swoj problem rozwiazalem tak :

  1. <?php
  2. public function fetch_row(){
  3. if($this -> rows = mysql_fetch_row($this -> wynik)){
  4. return 1;
  5. }
  6. }
  7. ?>


i sposob wyswietlenia:

  1. <?php
  2. while ($sql -> fetch_row()){
  3. echo '<li>'.$sql -> rows[0].'</li>';
  4. echo '<li>'.$sql -> rows[1].'</li>';
  5. }
  6. ?>


to dla osob takich jak ja (raczkujących w php obiektowym) smile.gif
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.