Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Tablica obiektów
cykcykacz
post
Post #1





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

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


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.

Ten post edytował cykcykacz 12.07.2011, 06:44:48
Go to the top of the page
+Quote Post
mat-bi
post
Post #2





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


  1. $db->fetchRows($sql);
  2.  
  3. $rows = $db->fetchRows($sql);

Coś ci mówi?

Tak BTW, zmień bbcode
Go to the top of the page
+Quote Post
cykcykacz
post
Post #3





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

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


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ć.

Ten post edytował cykcykacz 12.07.2011, 06:45:45
Go to the top of the page
+Quote Post
Dipter
post
Post #4





Grupa: Zarejestrowani
Postów: 81
Pomógł: 14
Dołączył: 28.11.2010
Skąd: Kraków

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


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ń.
Go to the top of the page
+Quote Post
Daiquiri
post
Post #5





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




@cykcykacz
Proszę wykorzystywać poprawny BBCode [php ] <?php echo 'Twój kod'; ?> [/php ] - bez spacji oczywiście.
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 Aktualny czas: 21.08.2025 - 04:09