Poprawny sposób na wyświetlanie kategorii i ich postów - proste forum.

0

Możecie mnie naprowadzić jak powinienem napisać w php (bez frameworków) wyświetlanie kategorii i należących do nich tematów, czyli proste forum, aby było to poprawne? Mam już logowanie, rejestrację - w klasie User. Dla forum zrobiłem drugą klasę - Forum i w niej zamierzam umieszczać funkcje związane z wyświetlaniem postów, tematów, kategorii itd z bazy danych. Dobrze?
I teraz mam zagwostkę jak poprawnie wyświetlać kategorie i należące do nich tematy?

  • funkcja jedna, duża pobierająca kategorie, odpowiednie dla nich tematy i foreach wyświetlający te dane poprzez echo '
    DANE kategoria, jej posty
    '; ?
  • czy rozbicie funkcji na powiedzmy topics(), categories()? Tylko jak wtedy wrzucić dla danej kategorii, jej tematy?

Nie wiem jak za to mądrze się zabrać ;x Oczywiście posty w bazie są połączone fk z id kategorii.
Bo chwilowo utworzyłem coś w stylu hasCategories - jeśli true to theCategories i w niej powinienem teraz pobrać tematy dla danej kategorii, i wtedy będzie dobrze? Tylko jak pobrać te tematy? SELECT * from topics - jak potem tylko pokazać tematy dla kategorii id 1, potem dla ID 2 tematy? Bo za każdą kategorią pytać bazę z WHERE ID to chyba lipna opcja i niezbyt poprawna?

public function theCategories()
{
try
{
$stmt = $this->db->prepare("SELECT * FROM categories");
$stmt->execute();
$results = $stmt->fetchAll();
foreach($results as $result)
{
echo '
<div class="category">
<h3 class="category-name">'.$result['cat_name'].'</h3>
<div class="topic">JAK TU WYŚWIETLIĆ DANEJ KATEGORII TEMATY?
</div>
</div>
';
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
0

Wszystko zależy od tego, jaką chcesz funkcjonalność. Logika działania interfejsu użytkownika to coś co w przypadku własnej aplikacji powinieneś sam wymyślić na podstawie chociażby innych stron w sieci, a dopiero do tego dobierać implementację. To czy forum ma być zbudowane podobnie jak tutaj czyli lista kategorii linkująca do listy tematów dla kategorii, lista tematów linkująca do listy postów w temacie czyli kategorie, tematy i posty oddzielnie, czy to łączyć (np: lista kategorii ma od razu listę tematów przy każdej kategorii) to już Twoja wizja i w większości wypadków (o ile ostro nie schrzanisz interfejsu pod kontem UX) nie ma tu odgórnej definicji co jest dobre a co złe. Proponuje jedynie nie mieszać 3 poziomów na raz - będzie burdel, w którym trudno się połapać i to akurat będzie koszmarek UX-owy.

Co do implementacji - nieważne czy framework czy nie, nie mieszaj warstwy prezentacyjnej z logiką. Echo w metodzie? Nie bardzo... Klasy używaj do poboru/manipulacji danymi, a nie do wypluwania HTMLa, nie mieszaj w klasie, ani metodach różnych typów funkcjonalności. Kategorie to obiekt mający jakieś parametry, temat czy post również. Pobór danych to inna funkcjonalność, wyświetlanie inna. Klasa na każdy typ obiektu, metody robiące pojedyncze rzeczy np: wyciąganie listy postów, dla tematu (i nic więcej).

0

Musisz po prostu wykonać więcej zapytań. Najprościej zrobić nową metodę getSubjects($category_id) i wywoływać dla każdej kategorii (przy każdym przebiegu pętli, którą masz w theCategories().

1 użytkowników online, w tym zalogowanych: 0, gości: 1