Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] klasy - problem z przekazywaniem danych
Forum PHP.pl > Forum > Przedszkole
matyskiewicz
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. ?>
nospor
zrob z $db wlasciwosc klasy. Bedzie wowczas dostepna w kazdej metodzie tej klasy
matyskiewicz
wartość klasy tzn?
phpion
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. ?>
nexis
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?
matyskiewicz
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?
nospor
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
matyskiewicz
dziekuje za pomoc
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.