![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 4.04.2015 Ostrzeżenie: (0%) ![]() ![]() |
Witam, jestem początkującym programistą PHP (samoukiem). Ponieważ uważam że najlepiej uczy się wykonując praktyczne zadania stworzyłem sobie projekt który poniekąd jest mniej rozbudowaną wersją pewnego serwisu. Szablon strony tworzę w bootstrapie. Chciałbym przedstawić kawałek kodu który stworzyłem i poprosić o to aby znawcy programowania obiektowego na tym forum wypowiedzieli się na ten temat, czy ten kod który napisałem mogę nazwać OBIEKTOWYM oraz o ewentualne porady dotyczące modyfikacji tego co napisałem.
W tym wszystkim chodzi o to aby do bazy danych można było dodawać książki a potem na swoim profilu dodawać je do ulubionych, na półki typu przeczytane, posiadam, chcę przeczytać itd. Na stronie głównej natomiast chcę wyświetlać 5 ostatnio dodanych (przez użytkowników) książek do bazy (okładka, tytuł, autor oraz opis) tak jak widoczne jest to na zdjęciu (zmieściły się tylko 3). (IMG:http://imageshack.com/a/img673/3348/hhMjX0.png) Tutaj prezentuję kod klasy stworzonej do pobierania rekordów z bazy i wyświetlania ich na stronie.
A tutaj ten, odpowiedzialny za utworzenie obiektów i wywołanie metody.
Dziękuję z góry wszystkim którzy zechcą poświęcić czas na pomoc, mam nadzieję że wszystko objaśniłem jak najlepiej i podałem wszystkie niezbędne informacje. Ze swojej strony pragnę jeszcze dodać że jest to pierwszy raz kiedy napisałem coś (mam nadzieję) obiektowo. Ten post edytował Ojcov 1.05.2015, 11:32:31
Powód edycji: [Kshyhoo]: bb-code
|
|
|
![]()
Post
#2
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
Witamy na Forum. Zapoznaj się z panującymi tu zasadami, by uniknąć blokady wątków.
Do ocen jest dział Oceny, przenoszę. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 4.04.2015 Ostrzeżenie: (0%) ![]() ![]() |
Przepraszam i dziękuję za przeniesienie.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 479 Pomógł: 97 Dołączył: 6.09.2011 Skąd: php.net :) Ostrzeżenie: (0%) ![]() ![]() |
Może i masz rację na temat tworzenia projektów, ale wtedy za podstawę trzeba brać poprawny kod, bo to co stworzyłeś śrenio trzyma się kupy.
- wyświetlasz listę, a dla każdej pozycji tworzysz nie potrzebnie obiekt - pobierasz za każdym razem 5 rekordów a wyświetlasz jeden itp itd Jako parametr powinieneś podać nie ID, tylko ilość materiałów do wyświetlenia i wywołać klasę tylko raz.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 4.04.2015 Ostrzeżenie: (0%) ![]() ![]() |
Dlatego stworzyłem ten temat, aby dowiedzieć się czy to co zrobiłem jest poprawne.
Dziękuję za wyrażenie opinii, spróbuję to poprawić zgodnie ze wskazówkami. @edit: Mam jeszcze pytanie. Po wpisaniu wartości dla ilości rekordów które chciałbym wyświetlić po pobraniu z bazy powinienem wewnątrz tej metody użyć pętli do wyświetlenia tych 5 różnych rekordów ? Czy może istnieje jakieś inne rozwiązanie? Ten post edytował Ojcov 1.05.2015, 12:41:09 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 479 Pomógł: 97 Dołączył: 6.09.2011 Skąd: php.net :) Ostrzeżenie: (0%) ![]() ![]() |
Dlatego stworzyłem ten temat, aby dowiedzieć się czy to co zrobiłem jest poprawne. Moim zdaniem nie od tego powinieneś zacząć, a od poznania struktur itp. bo już teraz łapiesz nie potrzebnie nawyki ale każdy ma swoje podejście i oczywiście nie twierdzę, że Twoje jest złe :-) Na poczatek spróbuj wobec tego wykonać to na petli w metodzie write. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 4.04.2015 Ostrzeżenie: (0%) ![]() ![]() |
Zasięgnąłem porady również na innym forum i teraz wyżej prezentowany kod wygląda tak.
Kod class LatestBooks{ private $pdo; public function __construct(MyPDO $pdo ){ $this->pdo = $pdo; } public function getData($num){ $stmt = $this->pdo->query('SELECT * FROM `books`ORDER BY id DESC LIMIT '.$num.' '); return $stmt->fetchAll(PDO::FETCH_ASSOC); } } Wywołanie: Kod require('inc/klasa.php'); $pdo = new MyPDO(); $book = new LatestBooks($pdo); $data = $book->getData(5); foreach($data as $row) { ?> <div class="book col-md-12"> <div class="col-md-4"> <img src="<?=$row['sciezka']?>" class="fotka"> </div> <div class="col-md-7 "> <h4>"<?=$row['tytul']?>"</h4> <p>Autor:"<?=$row['autor']?>"</p> <h5>"<?=$row['opis']?>"</h5> </div> </div> <?php } Jak to oceniasz? |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 479 Pomógł: 97 Dołączył: 6.09.2011 Skąd: php.net :) Ostrzeżenie: (0%) ![]() ![]() |
Już lepiej ale nie ważne jak Ci napiszą abyś robił, ale to czy rozmiesz dlaczego w ten sposób.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 1 Dołączył: 31.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
W ogóle to rozbij skrypt na MVC.
FrontController - reaguje na to co w np. GET itp. Jeśli GET masz / to odpal tę stronę główną z 5 książkami (czy co tam ma być robione na stronie głównej) czyli odpala konkretną metodę kontrolera Controller - metoda wywołana w FC wysyła zapytanie do modelu Model - odpala zapytanie do bazki, zapisuje wynik w tablicy i returnuje do kontrolera, a kontroler odpala teraz metode widoku View - returnuje zrenderowany widok do kontrolera, a następnie kontroler zwraca do FC i tu następuje dopiero echo |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 06:09 |