![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 31.05.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Dopiero raczkuję z programowanie php, tak samo z programowanie OOP, na starcie chciałbym zaznaczyć iż przeszukałem forum tak samo prosiłem wujka google o pomoc w tym problemie. Chciałem napisać zwykłe dodawanie rekordu do bazy danych,
Łączenie z bazą danych jak najbardziej działa. Ale mam problem z obsługą PDO podczas dodawania czegokolwiek do bazy.
No i takie coś wywołuje następujący błąd Fatal error: Call to a member function prepare() on a non-object in /home/admin/domains/kino1.pl/public_html/php/4/nowa.class.php on line 69 69- linia kodu o nic innego jak linijka
Dane oczywiście są podane do zapytania. Kopiowanie czegokolwiek z innych stron czy forum (w sensie zapytań INSERT w PDO ) powodują ten sam błąd, czy jest to możliwe, że serwer obsługuje łącznie z bd a nie obsługuje całości PDO ? Z góry przepraszam za składnię postu, starałem zaznajomić się z zasadami panującymi na forum, ale jestem początkującym użytkownikiem. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Seriously... wystarczy przeczytać ten błąd i zobaczyć, że odwołujesz się do obiektu, którego nie ma... Twoja klasa Connect służy jedynie do połączenia - bez sensu zupełnie.
Ogólnie jako cytat z internetu "You're doing it wrong". Obiekt PDO w klasie Connect sobie istnieje i nic poza tym - nie wywalasz go na zewnątrz ani nic. Potem w klasie Rejestracje w metodzie dodającej użytkownika tworzysz sobie nową instancje Connect (to nie tu powinno być tworzone a gdzieś wcześniej - by mieć jedno stałe połączenie z DB) ale go nie wykorzystujesz. Odwołujesz się do zmiennej $pdo, która defacto w tej metodzie nie istnieje... Temat powinien trafić do przedszkola, bo widać, że raczkujesz z PHP (ogólnie - nie tylko obiektowym). Nie zrozum mnie źle - nie chodzi mi o to by Ci wytykać błędy - po prostu usiądź z książką albo jakimś kursem i dopiero zacznij pisać na forum ![]() Co do samego postu to jest on dobrze napisany - co się rzadko zdarza - więc za to masz tu trochę podpowiedzi: 1. Utwórz klasę, która będzie miała następujące obowiązki: - utworzenie połączenia z DB (raz na początku - może to byś SINGLETON lub poprzez odwołania statyczne) - metoda connect, - zwracanie obiektu PDO - metoda getPDO albo coś w tym duchu 2. W klasie Rejestracja tam gdzie tego potrzebujesz pobierz z tej pierwszej klasy obiekt PDO i na nim działaj. HTH ![]() -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 31.05.2013 Ostrzeżenie: (0%) ![]() ![]() |
Nie biorę tego do siebie
![]() Wiem, że raczkuję z php, już na starcie to napisałem, początki są najtrudniejsze, dziękuję za pomoc. Rozumiem, że chodzi Ci o coś takiego? http://www.youtube.com/watch?v=-uLbG7nJCJw |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Tak aczkolwiek do tego aż filmik niepotrzebny
![]() Od razu powiem Ci też, że od podstaw nie nauczysz się od razu najlepszych, najbardziej wydajnych praktyk i wzorców (a raczej ich stosowania). Podejrzyj jak inni to robią i próbuj podobnie - po pewnym czasie i doświadczeniu sam będziesz w stanie stwierdzać czy coś jest wydajne, poprawne itd. Ja mógłbym Ci narzucić jakiś konkretny model jak stworzyć układ takich klas aby zrealizować to co teraz robisz ale jeśli naprawdę chcesz się nauczyć przy tym tego wszystkiego to musisz działać jak najwięcej sam ![]() -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 31.05.2013 Ostrzeżenie: (0%) ![]() ![]() |
Wiem, że to przedszkole, ale w php bawie się może od 4 tygodni a kilka dni w OPP ale skoro jest temat to fajnie byłoby gdyby było rozwiązanie, może ktoś kiedyś też będzie w przedszkolu i będzie potrzebował pomocy, a przy okazji zostawiam kod do weryfikacji, niby działa ale wiadomo jak to z tym bywa.
Do połączenia z bazą na początku pliku używamy statycznej metody połączenia z PDO
Teraz na początku łączę się z bazą danych, jeden raz i połączenie mam otwarte, z technicznego punktu widzenia jak to wykonać w jednym miejscu na całej aplikacji internetowej, powinienem użyć include lub require plik w którym występuje łączenie z bazą np include('config.php') czy w opp są inne metody na łączenie skryptu z bazą? Chodzi mi o taką dobrą praktykę jak to powinno się robić. Przepraszam za durne pytania ale na głupie i banalne pytania najczęściej najtrudniej znaleźć odpowiedź. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
To działa typowo statycznie wobec czego wystarczy załadowac (require_once) plik z tą klasą na samym początku skryptów aplikacji i potem z każdego miejsca się do tego odwoływać.
Ta metoda ma już wbudowane tzw. ładowanie leniwe - czyli obiekt połączenia nie jest tworzony aż do pierwszego użycia - to w takich przypadkach bardzo dobra praktyka. Istnieje sporo innych rozwiązań - można to by było zrobic na singletonie właśnie, bądź jako fabryka (to też wzorzec projektowy) ale na Twoje potrzeby Ci to starczy. Nie wskakuj od razu na głęboką wodę ![]() ![]() Możesz też utworzyć klasę rejestru opartą na singletonie, w której to wrzucisz klasę połączenia z bazą danych - będzie ona mogła być wówczas zwykła (dynamiczna) co da Ci możliwość tworzenia połączeń do kliku baz naraz. Poczytaj o php registry itp. ![]() -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 31.05.2013 Ostrzeżenie: (0%) ![]() ![]() |
Jeszcze raz dziękuję za pomoc, temat problemu łączenia z bazą, uważam dzięki Twojej pomocy za zamknięty, z innymi rozwiązaniami łączenia z bazą na pewno będę się dłubał ale puki co chcę krok po kroku przejść od łączenia po dodawanie, edycję itp
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 04:06 |