![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 1 Dołączył: 9.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Napisałem sobie bardzo prosty skrypcik połączenia z bazą danych. Funkcja sql() tworzy obiekt łączący się z bazą danych oraz wysyła zapytanie sql. Wszystko cacy, ale występuje jakiś nielogiczny błąd. Może Wy znajdziecie przyczynę:
Po uruchomieniu strony, uruchamia się instrukcja die() i zwraca mi ona słowa: "No database selected". Chodzi o to, że zmienna $db_name nie przechodzi do wnętrza metody obiektu. Dla czego? Jakim cudem? Proszę o pomoc. Ten post edytował Dual Jack 11.04.2013, 18:43:27 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Sprawa 1) Czemu ma przejść? Skoro ich nawet nie przekazujesz... masz na sztywno ustawione wartości zmiennych publicznych, a w konstruktorze i tak się spodziewasz podania 4 zmiennych, więc masz do wyboru:
a)
b )
2) W 18 linii używasz mysql_error... czemu nie zrobisz tego samego w 14 linii? die(mysql_error); 3) nie używa się już mysql_connect tylko PDO. Rada od wujka Szymka - weź się za podstawy, a później pisz takie klasy czy coś. W OOP często używa się do najprostszych rzeczy $this-> Ten post edytował Szymciosek 11.04.2013, 19:06:30 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 1 Dołączył: 9.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję Ci, Szymciosek, za łopatologiczne wyjaśnienie problemu.
W PHP programuję już kilka lat ( raczej amatorsko ) i wstyd mi się przyznać, że dopiero teraz podjąłem się obiektówki ( niektórzy mówią, że lepiej później niż wcale ). Postanowiłem, własnie jako moją pierwszą klasę, napisać skrypt do bazy danych, stąd tak głupie błędy. Możliwe, że jeszcze nie do końca rozumiem, jak to działa( myślałem, że __construct() bierze sobie zmienne z klasy ) Jeszcze raz bardzo Ci dziękuję. Ten post edytował Dual Jack 11.04.2013, 19:22:57 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
A proszę ja Cię bardzo
![]() |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Możliwe, że jeszcze nie do końca rozumiem, jak to działa( myślałem, że __construct() bierze sobie zmienne z klasy ) Podejdź co metod jak do funkcji, w gruncie rzeczy działają podobnie. Do funkcji też musisz coś przekazać, aby móc z tego później korzystać, chyba że to wcześniej ustalisz.
Co oczywiście nie powinno się brać znikąd. Ale domyśle wartości czasami się przydają. @Szymciosek - poprawiłem, a metoda != funkcja, bo funkcja nie ma $this i nie może niczego przepisać poza swoje ciało (a raczej nie powinna). Ten post edytował !*! 11.04.2013, 19:41:01 -------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Teraz to mi zamieszałeś !*!.
Myślałem, że Funkcja == Metoda. Jak to jest? |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 9 Dołączył: 3.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Jakiś przykład?
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 1 Dołączył: 9.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
skleps miał chyba na myśli to, że zmienne w metodzie można pobrać z zewnątrz metody ( ale z wewnątrz klasy ), a funkcja pobiera zmienne tylko z tych definiowanych w nawiasach () - o ile dobrze teraz rozumiem obiektówkę.
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 41 Pomógł: 9 Dołączył: 8.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Metoda jest funkcją dotyczącą konkretnej klasy. funkcje możesz wywołać w całym skrypcie. A metody tylko gdy masz zdeklarowaną klasę lub/i egzemplarz obiektu danej klasy.
Ten post edytował Thorang Hoog 12.04.2013, 10:25:01 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 9 Dołączył: 3.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
skleps miał chyba na myśli to, że zmienne w metodzie można pobrać z zewnątrz metody ( ale z wewnątrz klasy ), a funkcja pobiera zmienne tylko z tych definiowanych w nawiasach () - o ile dobrze teraz rozumiem obiektówkę. Programowanie proceduralne = funkcje są oddzielone od danych, działają na danych podanych w wywołaniu i zwracają jakiś wynik, chociażby TRUE. Oczywiście są odstępstwa i można w ciele funkcji obrabiać dane które nie zostały podane w wywołaniu funkcji, ale wtedy w php trzeba je jawnie zadeklarować "globalem". Programowanie obiektowe = dane są "scalone" z funkcjami (nazywamy je wtedy metodami) operującymi na tych danych. Czyli funkcja (metoda) może w miarę swobodnie operować na danych swojego obiektu. No i patrząc fanatycznie dane/zmienne danego obiektu powinny być zmieniane wyłącznie przez funkcje(metody) tego obiektu ![]() |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 70 Dołączył: 5.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Programowanie proceduralne = funkcje są oddzielone od danych, działają na danych podanych w wywołaniu i zwracają jakiś wynik, chociażby TRUE. Oczywiście są odstępstwa i można w ciele funkcji obrabiać dane które nie zostały podane w wywołaniu funkcji, ale wtedy w php trzeba je jawnie zadeklarować "globalem". Programowanie obiektowe = dane są "scalone" z funkcjami (nazywamy je wtedy metodami) operującymi na tych danych. Czyli funkcja (metoda) może w miarę swobodnie operować na danych swojego obiektu. No i patrząc fanatycznie dane/zmienne danego obiektu powinny być zmieniane wyłącznie przez funkcje(metody) tego obiektu Musze to napisać ![]() czasem kod używający klas i obiektów może być tak naprawdę proceduralny. Czasem zaś kod pisany bez obiektów i klas może być obiektowy. Przykład? GTK - pisane w C (które nie posiada obiektowości), a mimo to kod jest obiektowy ![]() |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 9 Dołączył: 3.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Musze to napisać ![]() czasem kod używający klas i obiektów może być tak naprawdę proceduralny. Czasem zaś kod pisany bez obiektów i klas może być obiektowy. Przykład? GTK - pisane w C (które nie posiada obiektowości), a mimo to kod jest obiektowy ![]() Nie mieszaj - wiadomo że w programowaniu wszystko się da, a wyjątków, podpórek i kombinacji jest cała kupa ![]() Ale jak ktoś wie mało to na początek niech zapamięta podstawy, a jak później będzie potrzebował obejść to znajdzie na ten temat odpowiednie info ![]() p.s. żeby zamieszać dodatkowo - można też wywoływać metody z obiektu bez tworzenia tego obiektu ![]() |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 371 Pomógł: 30 Dołączył: 14.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
p.s. żeby zamieszać dodatkowo - można też wywoływać metody z obiektu bez tworzenia tego obiektu ![]() Możesz rozwinąć o co Ci chodzi? to nie jest nic wielkiego, sytuacja o której piszesz znajdują się w każdej lekturze o OOP. Ten post edytował webmaniak 13.04.2013, 07:16:54 -------------------- Pomogłem - kliknij
![]() |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
-------------------- |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 371 Pomógł: 30 Dołączył: 14.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Eh, może trzeba było zacytować do końca moją wypowiedź, a nie tylko jej fragment? Wyraźnie napisałem że można o tym przeczytać w każdym kursie o OOP. Czytajcie ze zrozumieniem. Celowo nie pisałem o co chodzi by zainteresować autora tematu do samodzielnego znalezienia odpowiedzi o co chodzi.
Druga sprawa to: Możesz rozwinąć o co Ci chodzi? odnosi się do tego: p.s. żeby zamieszać dodatkowo Nie wiem w jakim sensie metody statyczne to zamieszanie ![]() ![]() Ten post edytował webmaniak 13.04.2013, 07:18:17 -------------------- Pomogłem - kliknij
![]() |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 9 Dołączył: 3.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Eh, może trzeba było zacytować do końca moją wypowiedź, a nie tylko jej fragment? Wyraźnie napisałem że można o tym przeczytać w każdym kursie o OOP. <cut> Nie wiem w jakim sensie metody statyczne to zamieszanie ![]() ![]() Zamieszanie DLA ZACZYYNAJĄCEGO ![]() A takim chyba jest wątkotwórca... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 05:07 |