![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 496 Pomógł: 2 Dołączył: 15.07.2011 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Proszę o sprawdzenie czy zapis mojej klasy z zapytaniami SQL jest poprawny pod względem OOP, co można by zmienić, uproscić itd. Potrzebuję takiej klasy aby zrobić sobie podstawowe zapytania CRUD dla obsługi jednej tabeli bazy danych. Dobrze się do tego zabralem ?
dzięki Ten post edytował damianooo 26.06.2013, 18:11:58 |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
Źle. Wydziel model odpowiedzialny za łączenie z bazą. Wywal static. Obecnie jest to zbiór funkcji zamkniętych w klasie. Nie ma to nic wspólnego z oop.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 496 Pomógł: 2 Dołączył: 15.07.2011 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Czy tak będzie lepiej ? ... nie wiem jak z tym rozdzieleniem połączenia z bazą danych. Można prosić o podpowiedź. Bo teraz w tej postaci to mi nie działa.
Teraz mam tak:
Bardzo proszę o znaleznienie błędów i poprawienie mnie. Dzięki Ten post edytował damianooo 27.06.2013, 22:16:43 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 59 Dołączył: 16.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 496 Pomógł: 2 Dołączył: 15.07.2011 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
czy tak? :
i wtedy tak:
Ten post edytował damianooo 27.06.2013, 22:31:30 |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
W twoim przypadku jeśli klasa dziedzicząca PDO nie robi nic, żadnego query buildera itd. to można by ją sobie darować.
Do konstruktora przekazuj $pdo i tyle. Poczytaj też o dziedziczeniu, kiedy się je stosuje i po co. Bo klasa City nie powinna dziedziczyć klasy do db (IMG:style_emoticons/default/wink.gif) |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 496 Pomógł: 2 Dołączył: 15.07.2011 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
zrobiłem tak ale nie wiem czemu nie zapisuje mi rekordu do bazy danych. Co mogę jeszcze mieć źle ?
i wywołanie w innym pliku:
Ten post edytował damianooo 28.06.2013, 08:24:15 |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
Nie. Czemu city zajmuje się łączeniem z pdo? Inne modele też będą to robić?
I nie używaj nazwy save() do insertowania, w frameworkach ta nazwa oznacza update rekordu jeśli istnieje, lub instert jeśli nie istnieje. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 496 Pomógł: 2 Dołączył: 15.07.2011 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem tak , ale nadal coś nie tak z tym moim połączeniem, nadal w bazie po odświeżeniu strony nie ma żadnej zmiany, coś nadal robię źle ... ehh .
i wywołanie:
Ten post edytował damianooo 28.06.2013, 08:35:29 |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No to wyswietl blad PDO a bedziesz wiedzial co jest nie tak :/
ps: nie masz juz przypadkiem miasta o ID = 1? |
|
|
![]()
Post
#11
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
W wywołaniu zapomniałeś o ustawieniu name.
Daj private lub protected:
http://pl.wikipedia.org/wiki/Hermetyzacja_%28informatyka%29 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 496 Pomógł: 2 Dołączył: 15.07.2011 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
ehh faktycznie (IMG:style_emoticons/default/smile.gif) ... jednak nadal nie działa ... postanowiłem wyświetlić co PDO pluje i tak:
Mam tak:
i wywołanie:
a PDO krzyczy to: Array ( [0] => Array ( [file] => /var/www/test/Model/City.php [line] => 43 [function] => execute [class] => PDOStatement [type] => -> [args] => Array ( [0] => Array ( [:name] => Katowice [:country_id] => 1 ) ) ) [1] => Array ( [file] => /var/www/test/test.php [line] => 12 [function] => add [class] => City [type] => -> [args] => Array ( ) ) ) Ten post edytował damianooo 28.06.2013, 08:45:58 |
|
|
![]()
Post
#13
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
rety..... ty nie wyswietlaj sciezki bledu, tylko wyswietlaj blad....
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 496 Pomógł: 2 Dołączył: 15.07.2011 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#15
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No to chyba masz juz teraz napisane.... liczba kolumn jakie wstawiasz do tabeli jest mniejsza od wymaganej liczby kolumn jakie ustawiles dla tej tabeli
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 496 Pomógł: 2 Dołączył: 15.07.2011 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
OK, mam , miało być tak:
Jeszcze chciałem prosić o podpowiedź jak pobrać ID zapisanego obiektu w bazie i przekazać go jako parametr przy zapisywaniu pola innego obiektu w sytuacji gdy encje połączone są w relacji "jeden do wielu" . i potrzebuję zapisać to coś w ten deseń (country będzie pobierane na stronie z pola rozwijanego): W klasie "Country" mam tak:
i zapisuję to tak:
PDO krzyczy:
Ten post edytował damianooo 28.06.2013, 11:15:18 |
|
|
![]()
Post
#17
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
findById ci zwraca rekord, ale ty go w ogole nie przechwytujesz nigdzie
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 496 Pomógł: 2 Dołączył: 15.07.2011 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#19
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
$countryObject = $country->findById(2);
var_dump($countryObject); No juz tak banalna analize to moglbys robic sam.... :/ poza tym pokaz jak wyglda teraz kod metody ADD poza tym, skoro city potrzebuje ID. a ty ID przeciez masz, to po grzyba bawisz sie w budowanie obiektu. Chyba ze twoim celem jest sprawdzenie czy ten obiekt istnieje, w co akurat watpie (bez urazy) |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 496 Pomógł: 2 Dołączył: 15.07.2011 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
obiekt nie istnieje masz rację, zrobiłem tak:
i mam pusty ekran. Poza tym z obsługą wyjątków krzyczał mi:
metoda add City to:
Ten post edytował damianooo 28.06.2013, 11:48:49 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 26.08.2025 - 12:06 |