Wyświetlanie i edycja to zadania dla zupełnie innej klasy, a w przypadku edycji nawet dla kilku klas, którym trzeba odpowiednie dane przekazać (chodzi o klasy widoku i formularza). Natomiast to co powinna realizować klasa artykułu to interakcja pomiędzy aplikacją a bazą danych - de facto jest to tzw. model danych, będący jednym z elementów wzorca MVC (model-widok-kontroler). Model ten, jak już wspomniałem powinien odpowiadać za interakcję/wymianę danych pomiędzy aplikacją a bazą danych, czyli:
class Article {
private $_db;
public function __construct($db) {
$this->_db = $db;
}
public function fetchAll() {
$sql = "SELECT * FROM `articles`";
$results = $this->_db->query($sql);
while($row = $this->_db->fetchAssoc($results)) {
$articles[] = $row;
}
return $articles;
}
public function find($article_id) {
$sql = "SELECT * FROM `articles` WHERE `id` = {$article_id}";
$results = $this->_db->query($sql);
$article = $this->_db->fetchAssoc($results));
return $article;
}
public function update($data) {
// a tutaj aktualizacja danych, przy czym $data to tablica danych
// zbudowana w oparciu o formularz
}
}
To tak w wielkim skrócie, bo powyższej klasie jeszcze bardzo wiele brakuje. Natomiast wyświetlanie powinno już odbywać się w innym miejscu, a to zależy od architektury aplikacji (we wzorcu MVC wyświetlanie odbywa się w widoku, przy czym kontroler przekazuje do niego odpowiednie dane). Niemniej wyglądałoby to tak:
// wyświetlanie wszystkich artykułów
$articleModel = new Article($db);
$articles = $articleModel->fetchAll();
foreach($articles as $article) {
echo $article['content']; }
// lub też jednego na podstawie id przekazanego w URL
$articleModel = new Article($db);
$article = $articleModel->find($_GET['id']);
echo $article['content'];
EDIT:
Powyższa klasa i sposób jej wykorzystania to tylko przykłady, które w rzeczywistości wymagają jeszcze trochę (lub raczej dużo) pracy.