Witam, chciałbym się upewnić czy poprawnie rozumiem stwierdzenie oddzielene logiki od widoku.
Weź parę zleceń na freelance, wykonaj je a potem zacznij robić poprawki od marudnego klienta - to zobaczysz wtedy po co jest potrzebne oddzielenie warstw (choćby logiki od widoku).
- "Dobrze, dane są okej, ale chciałbym wyświetlać je na różowo w zielonej ramce."
- "Wygląd jest okej, ale chciałbym, żeby zamiast jednej tabelki były dwie tabelki, które wyświetlałyby dane z dwóch różnych magazynów (i z dwóch różnych baz danych)."
- "Chciałbym, żeby te same dane wyświetlały się na trzy sposoby - raz w wynikach wyszukiwania produktów, jako ikony + cena, drugi raz widok szczegółowy produktu, trzeci raz w koszyku jako pozycja w tabeli"
jeśli masz wszystko ładnie oddzielone (dane od widoku, choćby na bardzo podstawowym poziomie podziału) to po prostu masz jeden moduł do ładowania danych i masz kilka widoków, które karmisz tymi danymi (albo odwrotnie - jeden widok, który może przyjmować dane z różnych źródeł).
Jeśli nie masz kodu podzielonego w sensowny sposób (a pierwszy twój przykład wcale nie jest nijak podzielony - mieszasz w jednym kotle odwoływanie się do bazy danych z wyświetlaniem tychże danych w HTML) to kod staje się strasznie nieelastyczny. Wtedy niespodziewane wymaganie biznesowe będzie wymagało albo dużej modyfikacji kodu, albo pójście na skróty (np. programowanie za pomocą kopiuj-wklej, co może być skuteczne na krótką metę, ale na dłuższą metę sprawi, że będziesz miał z 10 razy więcej kodu do utrzymania - bo każde kolejne wymaganie biznesowe, to kolejna kopiuj wklejka).
Generalnie powinno się tak programować, żeby jeden moduł robił jedną rzecz - jeśli pobiera dane, to już nie wyświetla. To się nazywa Single responsibility principle. Chodzi o to, żeby był tylko jeden powód do modyfikacji danego modułu (czyli np. zmiana sposobu wyświetlania, zmiana sposobu wczytywania danych itp. ). Wtedy jeśli np. zmieniasz widok, a nie zmieniasz danych to w ogóle nie ruszasz pliku odpowiedzialnego za pobieranie danych. Moduły są niezależne, jak klocki Lego i łączysz je ze sobą. W twoim przykładzie niestety się to miesza ze sobą wszystko, więc nie oddzielisz łatwo jednej rzeczy od drugiej.