Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Prosta obiektówka, za chwilę zwariuję..
Dual Jack
post
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ę:

  1.  
  2. public $host = "localhost";
  3. public $user = "root";
  4. public $pass = "password";
  5. public $db_name = "test";
  6.  
  7. public function __construct($host,$user,$pass,$db_name){
  8. echo $db_name; // nic nie zwraca?!
  9. $connect = mysql_connect($host,$user,$pass);
  10. $database = mysql_select_db($db_name);
  11. mysql_query("SET NAMES utf8");
  12. $return_error = "<h1>Błąd połączenia z bazą danych</h1>";
  13. if($connect) return TRUE;[u] else die($return_error)[/u];
  14. }
  15.  
  16. public function query($query){
  17. $results = mysql_query($query) or die(mysql_error());
  18. return $results;
  19. }
  20.  
  21. }
  22.  
  23. function sql($sql){
  24. $db = new mysql_connect;
  25. $db -> query($sql);
  26. }
  27.  
  28. sql("SELECT * FROM blog");



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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
matiit
post
Post #2





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ć (IMG:style_emoticons/default/smile.gif)
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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
skleps
post
Post #3





Grupa: Zarejestrowani
Postów: 142
Pomógł: 9
Dołączył: 3.03.2011

Ostrzeżenie: (0%)
-----


Cytat(matiit @ 12.04.2013, 16:22:03 ) *
Musze to napisać (IMG:style_emoticons/default/smile.gif)
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 (IMG:style_emoticons/default/smile.gif)


Nie mieszaj - wiadomo że w programowaniu wszystko się da, a wyjątków, podpórek i kombinacji jest cała kupa (IMG:style_emoticons/default/smile.gif)
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 (IMG:style_emoticons/default/smile.gif)


p.s. żeby zamieszać dodatkowo - można też wywoływać metody z obiektu bez tworzenia tego obiektu (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 12:06