Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Tablica obiektów
Forum PHP.pl > Forum > Przedszkole
cykcykacz
Witam,
nie wiem jak zwrócić tablicę obiektów.
mam taką klasę:
  1. class Sql {
  2.  
  3. public static function pobierz_uzytkownikow() {
  4.  
  5. $db = new Database();
  6. $sql = "SELECT * FROM Persons";
  7. $db->fetchRows($sql);
  8.  
  9. $rows = $db->fetchRows($sql);
  10.  
  11.  
  12. foreach($rows as $row)
  13. {
  14. $tab[] = new User($row);
  15. }
  16.  
  17. return $row;
  18. }
  19. }


Nie wiem jak się zabrać za to:
  1. foreach($rows as $row)
  2. {
  3. $tab[] = new User($row);
  4. }
  5.  
  6. return $row;

Dostaję taki komunikat:
Warning: Invalid argument supplied for foreach()
czyli tablica jest pusta, albo się nie wypełniła.

Do tego jest klasa User, która dziedziczy po klasie abstrakcyjnej Czlowiek:
  1. abstract class Czlowiek {
  2.  
  3. protected $waga;
  4. protected $wzrost;
  5. protected $wiek;
  6.  
  7. abstract public function pobierzwage();
  8. abstract public function pobierzwzrost();
  9. abstract public function pobierzwiek();
  10.  
  11. }
  12.  
  13. class User extends Czlowiek {
  14.  
  15. public function __construct() {
  16.  
  17. }
  18.  
  19. public function pobierzwage() {
  20.  
  21. }
  22.  
  23. public function pobierzwzrost() {
  24.  
  25. }
  26.  
  27. public function pobierzwiek() {
  28.  
  29. }
  30. }


Dostałem takie zadanie na korepetycjach, możecie mnie nakierować jak się za to zabrać?
Zmieniłem bbcode.
mat-bi
  1. $db->fetchRows($sql);
  2.  
  3. $rows = $db->fetchRows($sql);

Coś ci mówi?

Tak BTW, zmień bbcode
cykcykacz
Tak wiesz smile.gif
  1. $db->fetchRows($sql);

Tutaj korzystam z metody którą mam w klasie database
  1. interface DatabaseConnection {
  2.  
  3. public function fetchRows($sql);
  4.  
  5. }
  6.  
  7. class Database implements DatabaseConnection {
  8.  
  9. public $sql;
  10. public function __construct() {
  11.  
  12. $this->con = mysql_connect("localhost","root","");
  13. if (! is_resource($this->con)){
  14. throw new Exception('Could not connect: ' . mysql_error());
  15. }
  16.  
  17. $db_selected = mysql_select_db("my_db", $this->con);
  18. if (!$db_selected) {
  19. die ('Nie można ustawić foo : ' . mysql_error());
  20. }
  21. }
  22.  
  23. public function fetchRows($sql) {
  24. $result = mysql_query($sql);
  25. if (!$result) {
  26. echo 'Could not run query: ' . mysql_error();
  27. }
  28. $row = mysql_fetch_assoc($result);
  29.  
  30. // foreach ($row as $rows) {
  31. // echo $rows. "<br />";
  32. // }
  33. // echo $row["personID"];
  34. // echo $row["FirstName"];
  35. // echo $row["FirstName"];
  36.  
  37. }


Natomiast to:
  1. $rows = $db->fetchRows($sql);

Nic mi nie mówi tylko tyle, że przypisuje do zmiennej $rows wynik metody fetchRows. Nie wiem właśnie jak dalej to oprogramować.
Dipter
Jaki sens ma pisanie takiej klasy? o_O Nie dość, że jest kompletnie źle napisana, to w dodatku raz używasz wyjątków, raz zabijasz skrypt, a innym razem wypluwasz tylko błąd.

Cytat
$rows wynik metody fetchRows. Nie wiem właśnie jak dalej to oprogramować.


Skoro nic nie zwracasz w metodzie fetchRows, to co Ci ma wypluć? ; d

Zapoznaj się z PDO, bo warto, a to co masz najlepiej usuń.
Daiquiri
@cykcykacz
Proszę wykorzystywać poprawny BBCode [php ] <?php echo 'Twój kod'; ?> [/php ] - bez spacji oczywiście.
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.