mam 5 plików w b.prostym na cele autoedukacji modelu mvc, uzyskuję prawidłowy dostęp do danych, ale nie potrafię wyświetlić całej tabeli, tylko 1 wiersz.
Od początku- połączenie z bazą danych i wyciągnięcie tabeli do tablicy array, czyli model z mvc poniżej
model/model.php:
include_once("model/Book.php"); class Model { public function getBookList() { $sql = "SELECT * FROM artykul"; { $out[]=$row; } foreach ($out as $art) { $art['tytul'] => new Book($art['tytul'], $art['nazwisko'], $art['tekst']) ); } }
Oczywiście w bazie mysql, odpowiednie kolumny tabeli artykul mają nazwy: id, nazwisko, tytul i tekst.
W modelu jest jeszcze plik Book.php w prostej postaci:
class Book { public $tytul; public $nazwisko; public $tekst; public function __construct($tytul, $nazwisko, $tekst) { $this->tytul = $tytul; $this->nazwisko = $nazwisko; $this->tekst = $tekst; } }
powyższy wynik pokazuje widok, czyli
view/list.php
<table> <tbody><tr><td>Tytuł</td><td>Nazwisko</td><td>Tekst</td></tr></tbody> <?php foreach ($books as $tytul => $book) { echo '<tr><td><a href="index.php?book='.$book->tytul.'">'.$book->tytul.'</a></td><td>'.$book->nazwisko.'</td><td>'.$book->tekst.'</td></tr>'; } ?> </table>
wszystkim steruje kontroler, czyli plik
controller/controller.php
include_once("model/model.php"); class Controller { public $model; public function __construct() { $this->model = new Model(); } public function invoke() { { $books = $this->model->getBookList(); include 'view/list.php'; } else {} } }
plik index.php zaciąga widok przez kontrolera:
include_once("controller/controller.php"); $controller = new Controller(); $controller->invoke();
Na razie skrypt pokazuje pierwszy wiersz tabeli, a dla celów ćwiczebnych w tabeli artykul są 2 artykuły z tytułem, autorem i treścią, więc coś nie gra.
Pewnie jakiś prosty błąd jest albo w model.php albo w list.php i gdzieś dane grzęzną.
Będę wdzięczny za pomoc, bo próbowałem juz kilku zagrań, ale nic mi nie chodzi.