Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] klasy - problem z przekazywaniem danych
matyskiewicz
post 19.11.2008, 10:22:01
Post #1





Grupa: Zarejestrowani
Postów: 184
Pomógł: 3
Dołączył: 6.10.2006
Skąd: Poznań

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


Witam. Piszę funkcję do łączenia się z bazą danych. Mam problem z przekazaniem zmiennej $db z punktu 1 do punktu 2.
  1. <?php
  2. class DB_MYSQL
  3. {
  4.    private $dbHost, $dbLogin, $dbPasswd;
  5.    
  6.    function connect($dbHost, $dbLogin, $dbPasswd)
  7.    {
  8.        $this -> host = $dbHost;
  9.        $this -> login = $dbLogin;
  10.        $this -> passwod = $dbPasswd;
  11.        
  12.        $db = @mysql_connect($this -> host, $this -> login, $this -> passwod); // punkt 1
  13.        if (!$db)
  14.        {
  15.            die('<p>Brak połączenia z serwerem. Komunikat błędu: '. mysql_error() .'</p>');
  16.            exit;
  17.        }
  18.    }
  19.  
  20.    function mysql_selectDb($dbTable)
  21.    {
  22.        $this -> table = $dbTable;
  23.  
  24.        $db_selected = mysql_select_db($this -> table ,$db); // 2
  25.        if (!$db_selected)
  26.        {
  27.            die('<p>Brak połączenia z tabelą. Komunikat błędu: '. mysql_error() .'</p>');
  28.               exit;
  29.        }
  30.    }
  31. }
  32.  
  33. $dbtest = new DB_MYSQL;
  34. $dbtest -> connect("xxx1", "xxx2", "xxx3");
  35. $dbtest -> mysql_selectDb("xxx4");
  36. ?>


--------------------
eclipse :)
Go to the top of the page
+Quote Post
nospor
post 19.11.2008, 10:23:03
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




zrob z $db wlasciwosc klasy. Bedzie wowczas dostepna w kazdej metodzie tej klasy


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
matyskiewicz
post 19.11.2008, 11:38:27
Post #3





Grupa: Zarejestrowani
Postów: 184
Pomógł: 3
Dołączył: 6.10.2006
Skąd: Poznań

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


wartość klasy tzn?


--------------------
eclipse :)
Go to the top of the page
+Quote Post
phpion
post 19.11.2008, 11:46:31
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(matyskiewicz @ 19.11.2008, 13:38:27 ) *
wartość klasy tzn?

Dodaj $db to składowych klasy:
  1. <?php
  2. private $dbHost, $dbLogin, $dbPasswd, $db;
  3. ?>

po czym w kodzie odwołuj się do niej nie poprzez $db, a poprzez $this->db:
  1. <?php
  2. $this->db = @mysql_connect($this -> host, $this -> login, $this -> passwod); // punkt 1
  3.       if (!$this->db) {
  4.       }
  5. // ...
  6.  
  7. $db_selected = mysql_select_db($this -> table, $this->db); // 2
  8. ?>
Go to the top of the page
+Quote Post
nexis
post 19.11.2008, 12:15:42
Post #5





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


Mam nadzieję, że przed przystąpieniem do napisania obiektowej obsługi MySQL zapoznałeś się z MySQLi" title="Zobacz w manualu PHP" target="_manual i chcesz zrobić coś zupełnie innego?


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
matyskiewicz
post 20.11.2008, 11:25:24
Post #6





Grupa: Zarejestrowani
Postów: 184
Pomógł: 3
Dołączył: 6.10.2006
Skąd: Poznań

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


Tak czytałem o tej klasie, lecz piszę swoją ponieważ chciałbym się nauczyć pisać klasy.
I tutaj napotkałem na kolejny problem:
  1. <?php
  2. class DB_MYSQL
  3. {
  4.    private $dbHost, $dbLogin, $dbPasswd, $db;
  5.    public $dane = array();
  6.    
  7.    function connect($dbHost, $dbLogin, $dbPasswd)
  8.    {
  9.        $this -> host = $dbHost;
  10.        $this -> login = $dbLogin;
  11.        $this -> passwod = $dbPasswd;
  12.        
  13.        $this -> db = @mysql_connect($this -> host, $this -> login, $this -> passwod);
  14.        if (!$this->db)
  15.        {
  16.            die('<p>Brak połączenia z serwerem. Komunikat błędu: '. mysql_error() .'</p>');
  17.            exit;
  18.        }
  19.    }
  20.  
  21.    function mysql_selectDb($dbTable)
  22.    {
  23.        $this -> table = $dbTable;
  24.        
  25.        $db_selected = @mysql_select_db($this -> table , $this->db);
  26.        if (!$db_selected)
  27.        {
  28.            die('<p>Brak połączenia z tabelą. Komunikat błędu: '. mysql_error() .'</p>');
  29.               exit;
  30.        }
  31.    }
  32. ################################################################################
  33. ###############################
  34. # część dopisana
  35. ################################################################################
  36. ###############################
  37.    function query($query)
  38.    {
  39.        $this -> query = $query;
  40.                
  41.        $result = @mysql_query($this -> query);
  42.        if (!$result)
  43.        {
  44.               die ('<p> Błędne zapytanie SQL. Komunikat błędu ' . mysql_error() .'</p>');
  45.            exit;
  46.        }
  47.                
  48.        if(mysql_num_rows($result)>0)
  49.              while($row = mysql_fetch_assoc($result))
  50.                $dane[] = $row;
  51.        }
  52.  
  53.  
  54. }
  55.  
  56. $dbtest = new DB_MYSQL;
  57. $dbtest -> connect("xxx", "xxx", "xxx");
  58. $dbtest -> mysql_selectDb("xxx");
  59. $dbtest -> query("SELECT * FROM test");
  60. echo 'id: '. $dane['id'];
  61. ?>

Dopisałem funkcję query. Z założenia ona ma pobrać dane i wpakować je w tablicę $dane[]. Kiedy starałem się wyświetlić je nie wyświetliły się żadne dane poza
  1. id:

Dlaczego nie pojawiaja się żadne dane?

Ten post edytował matyskiewicz 20.11.2008, 11:26:47


--------------------
eclipse :)
Go to the top of the page
+Quote Post
nospor
post 20.11.2008, 11:36:45
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




bierzesz sie za klasy a masz elementarne braki w podstawach

zasieg zmiennych:
http://pl.php.net/manual/pl/language.variables.scope.php
To ze ty sobie utworzysz tablice w funkcji, to nie znaczy ze ona bedzie widoczna na zewnatrz. Funkcja musi ją np. zwrocic

  1. <?php
  2. function test(){
  3. $dane = array(1,2,3);
  4. return $dane;
  5. }
  6.  
  7. $d = test();
  8. print_r($d);
  9. ?>


ps: wlacz wyswietlanie wszystkich bledow
http://nospor.pl/php-faq-n29.html#faq-2


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
matyskiewicz
post 20.11.2008, 13:08:59
Post #8





Grupa: Zarejestrowani
Postów: 184
Pomógł: 3
Dołączył: 6.10.2006
Skąd: Poznań

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


dziekuje za pomoc


--------------------
eclipse :)
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 21:50