Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Gdzie popełniam błąd?
Forum PHP.pl > Forum > PHP > Object-oriented programming
Moebiuser
Witam,
Mam pytanie, wydaje mi się, że przedstawiony niżej kod jest poprawny, jednak zamiast oczekiwanego wyniku, czyli pól tablicy zapisanych odpowiednio w strukturze xml otrzymuję same pola bez tagów?
Jestem dopiero początkującym phpowcem, dlatego proszę o pomoc!
(Mam wersję php 5.2.1 więc powinna osługiwać konstruktory itp)

  1. <?php
  2. include('common.php'); // do łączenia z bazą
  3.  
  4. class Grid
  5. {
  6. private $grid;
  7. private $r;
  8.  
  9. private function __construct()
  10. {
  11. dbConnect();
  12. $this->r[0] = mysql_query('SELECT * FROM artykuly') or die('dupa');
  13. $this->r[1] = mysql_query('SELECT * FROM galerie') or die('dupa');
  14. $this->r[2] = mysql_query('SELECT * FROM news') or die('dupa');
  15. $this->r[3] = mysql_query('SELECT * FROM fotos') or die('dupa');
  16. }
  17.  
  18. public function readGrid() 
  19. {
  20. for ($i=0;$i<4;$i++)
  21. {
  22. $this->grid .= '<grid>';
  23. while($row = mysql_fetch_assoc($this->r[$i])) 
  24. {
  25. $this->grid .= '<row>';
  26. foreach($row as $name=>$val) 
  27. { 
  28. $this->grid .= '<'.$name.'>'.htmlspecialchars($val).'</'.$name.'>';
  29. }
  30. $this->grid .= '</row>';
  31. }
  32. $this->grid .= '</grid>';
  33. }
  34. return $this->grid;
  35. }
  36.  
  37. }
  38.  
  39. $tablica = new Grid;
  40. echo $tablica->readGrid();
  41.  
  42. ?>
Cysiaczek
Popatrz do źródła przeglądarki...co widać?

Pozdrawiam.
Hacker
Odpowiedz brzmi... przy oglądaniu wyniku działania skryptu w przeglądarce

Zrób p-klik i "Pokaż źródło strony" albo widok->źródło strony (Ctrl+U)

@Cysiaczek byłeś szybszy
Moebiuser
No ale sęk w tym, że przy tym kodzie jest jakiś błąd (pusty ekran), a w momencie kiedy przerzucam się na php 4.0 (tzn częściowo, bo __construct mi działa):
  1. <?php
  2. include('common.php'); // do łączenia z bazą
  3.  
  4. class Grid
  5. {
  6. var $grid;
  7. var $r;
  8.  
  9. function __construct()
  10. {
  11. dbConnect();
  12. $this->r[0] = mysql_query('SELECT * FROM artykuly') or die('dupa');
  13. $this->r[1] = mysql_query('SELECT * FROM galerie') or die('dupa');
  14. $this->r[2] = mysql_query('SELECT * FROM news') or die('dupa');
  15. $this->r[3] = mysql_query('SELECT * FROM fotos') or die('dupa');
  16. }
  17.  
  18. function readGrid() 
  19. {
  20. for ($i=0;$i<4;$i++)
  21. {
  22. $this->grid .= '<grid>';
  23. while($row = mysql_fetch_assoc($this->r[$i])) 
  24. {
  25. $this->grid .= '<row>';
  26. foreach($row as $name=>$val) 
  27. { 
  28. $this->grid .= '<'.$name.'>'.htmlspecialchars($val).'</'.$name.'>';
  29. }
  30. $this->grid .= '</row>';
  31. }
  32. $this->grid .= '</grid>';
  33. }
  34. return $this->grid;
  35. }
  36.  
  37. }
  38.  
  39. $tablica = new Grid;
  40. echo $tablica->readGrid();
  41.  
  42. ?>


to wszystko jest ok....
Sokal
Do łączenia z bazą danych spróbuj użyć sterownika/klasy mysqli. Ja też miałem jakieś dziwne problemy z funkcjami mysql_* (pod php5) smile.gif
Sedziwoj
A nie prościej zmienić z:
  1. <?php
  2. private function __construct()
  3. ?>

na:
  1. <?php
  2. public function __construct()
  3. ?>

?
Moebiuser
Tzn teraz przed _construct nic nie ma (czyli domyślnie publiczna, to to samo) zmieniłem na mysqli i wszystko śmiga, dzięki.

(i teraz sam nie wiem czy chodzilo o to łączenie z bazą czy to, że konstruktor był prywatny...)
Sedziwoj
Na pewno nie tworzyło Ci obiektu jak konstruktor był prywatny, a skoro Ci nie wyrzucało błędów z tego powodu oznacza że masz wyłączone pokazywanie, a z tego powodu pewnie też nie pokazały się błędy mysql.
(ale w dużej mierze to gdybanie)
Sokal
Lol, prywatny konstruktor haha.gif
Nawet na to nie patrzyłem tongue.gif

Ustaw sobie w php.ini :
error_reporting = E_ALL

Albo na czas wykonywania skryptu:
error_reportin(E_ALL);
Sedziwoj
najlepiej to:
ini_set("display_errors", true);
ini_set('error_reporting', E_ALL | E_STRICT);
winksmiley.jpg
Sokal
@up
ale to tylko na czas działania skryptu będzie działać tongue.gif

Najlepiej w php.ini
display_errors = On
error_reporting = E_ALL | E_STRICT

Przy display_errors On a nie true tongue.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.