Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klasa newsów
Forum PHP.pl > Forum > PHP
LeNy
Witam. Tworzę właśnie klasę do newsów, lecz nie wiem jak zrobić aby wyświetlały się wszystkie dostępne newsy w bazie Mysql.
Czytałem dużo poradników, lecz nie znalazłem interesującej mnie odpowiedzi.
Aktualnie mój kod wygląda tak:
  1. class printNews
  2. {
  3. public function __construct()
  4. {
  5. $news_query = $mysql->query("SELECT * FROM `News`");
  6. return $news_query->fetch_assoc();
  7. }
  8. }
  9.  
  10. $newsy = new printNews;
  11. var_dump($newsy);


Proszę o pomoc sadsmiley02.gif
mrWodoo
nie ma zmiennej $mysql zdeklarowanej w obrębie klasy, więc to pewnie jest zmienna zewn. czyli musisz zrobić
  1. global $mysql;

Zadajesz nieprecyzjne pytania.
Jeśli faktycznie pytasz o
Cytat
jak zrobić aby wyświetlały się wszystkie dostępne newsy w bazie Mysql.

to polecam poczytać więcej artykułów
LeNy
Dzięki wielkie, mrWodoo zapomniałem o global

Odnalazłem pewien poradnik, trochę mnie naprowadził.
  1. public function __construct()
  2. {
  3. global $mysql;
  4. $news_query = $mysql->query("SELECT * FROM `News`");
  5. $returned = array();
  6. while ($row = $news_query->fetch_assoc())
  7. {
  8. $mx = array();
  9. foreach ($row as $key => $val)
  10. {
  11. $mx[$key] = $val;
  12. }
  13. $returned[] = $mx;
  14. }
  15. return $returned;
  16. }


Dlaczego podczas użycia funkcji foreach nic mi się nie wyświetla:
  1. $news = new printNews;
  2. foreach($news as $var)
  3. {
  4. echo $var['UID'];
  5. }
mortus
Zapomnij o słowie global. W OOP takie sytuacje rozwiązuje się za pomocą np. DI (Dependency Injection, wstrzykiwania zależności). W tym przypadku obiekt $mysql odpowiedzialny za obsługę połączenia z bazą danych powinieneś przekazać jako argument konstruktora. Skoro klasa ma reprezentować nowinki, to niech się tak właśnie nazywa, nazwa printNews nadaje się bardziej dla odpowiedniej metody, która te news-y wyświetla. Swoją drogą tym już klasa News nie powinna się zajmować. Przykład:
  1. class News {
  2. private $_db = null;
  3. public function __construct($db) {
  4. $this->_db = $db;
  5. }
  6. public function fetchAll() {
  7. $results = $this->_db->query("SELECT * FROM `News`");
  8. while($row = $results->fetch_assoc()) {
  9. $news[] = $row;
  10. }
  11. return $news;
  12. }
  13. }
  14.  
  15. $news = new News($mysql);
  16. foreach($news->fetchAll() as $data) {
  17. echo $data['UID'];
  18. // ...
  19. }


Chyba trochę przedobrzyłeś.
solr
Kluczami w $var są nazwy pól z tabeli News w bazie danych.
LeNy
Mortus, dzięki wielgachne. Dzięki Tobie zrozumiałem o co chodzi dokładnie z tymi class'ami, jak je budować smile.gif
Za dużo kombinowałem, jak zwykle wstydnis.gif

Jeszcze raz dzięki wielkie specool.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.