![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 29.03.2011 Ostrzeżenie: (10%) ![]() ![]() |
oto skrypt wyswietlajacy tabele mysql
zo zrobic aby byl on prowidlowy pod wzgledm wzorca mvc? <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <html xmlns="http://www.w3c.org/1999/xhtml" xml:lang="pl" lang="pl"> <?php class Model {//obsluguje polaczenie private $zm_polaczenie; private $db; public function __construct($zm_polaczenie, $db) //konstruktor { $this->zm_polaczenie = $zm_polaczenie; $this->db = $db; $this->polacz(); } private function polacz() //funkcja polacz { if ($zm_polaczenie == null){ $zm_polaczenie = @mysql_connect('xxx', 'xxx', 'xxx');//server user passwd $db = @mysql_select_db('xxx', $zm_polaczenie);//database } return $zm_polaczenie; } } class Widok {//wyswietla dane, moze byc wiele widokow private $row; private $result; public function __construct($row, $result) //konstruktor { $this->row = $row; $this->result = $result; $this->uruchomPolaczenie(); $this->pokaz(); } private function uruchomPolaczenie()//konstruktora z klasy Model { $this->Model = new Model(); } private function pokaz() //funkcja pokaz { $result = mysql_query('SELECT * FROM program ORDER BY data'); echo "<table border='1'>"; while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { echo "<tr>"; echo "<td>".$row['data']."</td>"; echo "<td>".$row['punkt_programu']."</td>"; echo "<td>".$row['dokument']."</td>"; echo "</tr>"; } echo "</table>"; } } class Kontroler {//sprawdza dane z geta i decyduje co uruchomic private $co; public function __construct() //konstruktor { $this->co = $co; $this->co_uruchomic(); } private function co_uruchomic() //kontroler { $co=$_GET["co"]; if ($co==""){ echo "NIE wybrano widoku.<br><br>"; echo "DOSTĘPNE WIDOKI:.<br>"; echo "* <a href='mvc2.php?co=widok1'>Widok 1</a>"; } if ($co=="widok1"){ new Widok();//konstruktor klasy Widok } } } new Kontroler();//uruchamia wzorzec mvc ?> Ten post edytował pdfpl 16.01.2012, 14:57:41 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Primo: BBCode!
Secundo... To co zrobiłeś to pomieszanie wynikające z niedokładnego zrozumienia MVC. Na pewno zaś spojrzawszy na kod od razu rzuca się w oczy wymieszanie tego wszystkiego co zrozumiałeś jako MVC... wewnątrz layoutu, czyli czegoś, za co odpowiada widok. Całość to po prostu kilka klas, które nawzajem się wywołują. Równie dobrze mogły to być zwykłe funkcje i opakowanie tego klasami wcale nie czyni kodu obiektowym, o zgodności z MVC nie wspominając. Zero elastyczności, dane połaczenia na pałę w pliku, uzależnienie tylko od jednego typu bazy (Mysql), brak jakiejkolwiek walidacji danych sensownej (zobacz co robisz z GETem). Krótko mówiąc nie zrozumiałeś dobrze idei tych trzech literek i konsekwencji ich użycia. O zgodności z jakąkolwiek formą standardu html nawet nie wspominałbym, ale od kiedy meta jest przed html a body czy head nie istnieje, tylko od razu tworzy table? U Ciebie masz kawałek html (błędny zresztą) a zaraz potem wywołanie klasy kontroler, która ma zrobić w cudowny sposób resztę. -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 29.03.2011 Ostrzeżenie: (10%) ![]() ![]() |
dobra to jak wyswietlic zawartosc tabeli bazy mysql wraz z polaczeniem uzywajac mvc ?
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
a plik users.html jest widokiem, zwykły html przemieszany z phpem. edit: http://php.pl/Wortal/Artykuly/PHP/Architek...wadzenie-do-MVC http://phpedia.pl/wiki/MVC Ten post edytował skowron-line 16.01.2012, 15:15:46 -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 29.03.2011 Ostrzeżenie: (10%) ![]() ![]() |
nie do konca rozumien mozesz w kodzie ktory wklejam czyli widok tabeli mysql z polaczeniem zmienic i wskazac elementy mvc ?
Ten post edytował pdfpl 16.01.2012, 15:20:18 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
To ja zapytam inaczej... ozumiesz własciwie MVC? Czy czytałeś przyklejony temat Temat: MVC ? Czy czytałes podane w nim linki? Myślę, że nie bardzo. Gdyby było inaczej Twój temat by nie zaistniał. A doczytałeś może ostatnią uwagę tego tematu i zamykaniu tematów związanych z MVC? Naprawde tak bardzo zależy Ci pierwszymi postami i tematem zaliczenie się do grona "nieczytatych"? Wziąłem i wyciąłem Ci też dane dostepowe, bo jak widzę zapomniałes przy wklejaniu posta powyżej...
Powód edycji: [thek]: Jednak z danymi ktoś był szybszy ;)
-------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 29.03.2011 Ostrzeżenie: (10%) ![]() ![]() |
tak czytalem ale potrzebuje konkretnego przykladu. jezeli mozesz to napisz jak zmienic taki przyklad any byl zgodny z mvc ?
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Nieautoryzowani Postów: 2 249 Pomógł: 305 Dołączył: 2.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Mały offtop, ale jakbyś przeczytał przyklejony temat czy też odpowiedź @skowron-line to byś takich pytań nie zadawał.
Ten temat z podanego tematu przyklejonego idealnie wyjaśnia o co kaman... -------------------- Google knows the answer...
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Po pierwsze zacząłbym od tego, że poczytałbym o różnicy między Kontrolerem i Routerem. Dla Ciebie to jednoznaczne.
Kontroler: Dla Ciebie albo jest to widok1 albo brak. A co jeśli widoków będzie 100? Zrobisz switcha ze 100 case'ów? Model: ograniczyłeś do jednego, na sztywno wpisanego do modelu. A co jeśli zmienią sie dane? Grzebać będziesz w pliku tym i szukać gdzie robisz połaczenie? A co jesli ktoś nie ma Mysql tylko Pgsql lub Mssql czy Firebirda? Wszystkie funkcje mysql_* możesz właśnie wyrzucić na śmietnik. Widok: Konstruktor mnie zdziwił... Pobierasz konstruktorem dane, ale jdnoczesnie otem tworzysz połączenie do bazy... Dziwna kolejność. Prześledź sobie co się dzieje: Walisz od razu kawał kodu w HTML, potem napotykamy Kontroler->__construct() Wewnątrz konstruktora $this->co uruchomic() To może wywołać new Widok->__construktor() BEZ PARAMETRÓW na co się wkurzy interpreter i sypnie że jak to tak? Bo brak wartości domyślnych, ale bądźmy dobrzy i pozwólny by dał sobie NULLe... Wywołujemy Widok>uruchomPolaczenie() co wykopie nam Model() i jego konstruktor. Ten przy Model->połacz, sprawdzi czy takie połaczenie istnieje, i jesli nie to utworzy je, a jeśli tak to zwróci jego identyfikator. Pytanie o sens tego drugiego jest tylko gdy robisz to kilkukrotnie w obrębie skryptu jednego (czas życia) - stworzyleś niezbyt lubiany singleton ![]() Teraz dalej Widok->pokaż() i plujesz na domyślnym połaczeniu html.. A skąd ja niby wiem jakie połaczenie użyć? A co jeśli jest kilka jednocześnie? Widok sobie zgaduje którego użyć? ![]() Nawet jeśli podane tematy czytałeś, to kompletnie nie rozumiesz idei i robisz ją "po swojemu", chcac przykładu, który by był jakiś rozsądny, choć troszkę elastyczny, wymaga napisania conajmniej kilkunastu, w tym część abstrakcyjnych. I chcesz by Ci to teraz dać na tacy. Bo to co dałeś z MVC nie ma wiele wspólnego poza podziałem (i to jeszcze niezbyt poprawnym) na 3 warstwy. Ja bym własciwie pytanie "Co jest źle?" zamienił "Co jest dobrze?" bo przynajmniej mniej pisania by było ![]() -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#10
|
|
![]() Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
gdzie tu rozmowa o MVC jak tu nawet podstaw OOP nie ma ?
-------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 11:51 |