Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wywołanie funkcji z klasy w innej funkcji.
Forum PHP.pl > Forum > Przedszkole
darektbg
Witam !
Mam taki kod:
  1. <?php
  2. class dbmysql
  3. {
  4. var $Host;
  5. var $Login;
  6. var $Password;
  7. var $ConnectId;
  8. var $DataBase;
  9. var $FetchRows;
  10. var $NumRows;
  11. var $Query;
  12. var $QueryResult;
  13. var $QueryCounter;
  14. var $ErrorMsg;
  15. // Połączenie się z bazą danych
  16. function connect()
  17. {
  18. if($this->ConnectId = @mysql_connect($this->Host,$this->Login,$this->Password))
  19. {
  20. // Użytkownik zalogowany
  21. return TRUE;
  22. }
  23. else
  24. {
  25. // Bł&plusmn;d poł&plusmn;czenia lub wywołania serwera bazy danych
  26. return FALSE;
  27. }
  28. }
  29. // Wybranie bazy danych
  30. function select_db()
  31. {
  32. if(@mysql_select_db($this->DataBase))
  33. {
  34. // Baza danych wybrana
  35. return TRUE;
  36. }
  37. else
  38. {
  39. // Baza danych nie wybramna. Występił bł&plusmn;d
  40. return FALSE;
  41. }
  42. }
  43. //zapyanie do bazy
  44. function query($Query)
  45. {
  46.  
  47. $this->QueryResult = @mysql_query($Query);
  48.  
  49. }
  50. // Tablica w wynikami
  51. function fetch_array()
  52. {
  53. // MYSQL_ASSOC - tylko tablica asosjacyjna
  54. while($row = mysql_fetch_array($this->QueryResult, MYSQL_ASSOC))
  55. {
  56. $this->FetchRows[] = $row;
  57. }
  58. return $this->FetchRows;
  59. }
  60. //Ilość otrzymanych rekordów
  61. function fetch_num_array()
  62. {
  63. $this->NumRows = mysql_num_rows($this->QueryResult);
  64. return $this->NumRows;
  65. }
  66. }
  67. $db = new dbmysql;
  68. $db->Host = "localhost";
  69. $db->Login = "login";
  70. $db->Password = "hasło";
  71. $db->DataBase = "nazwabazy";
  72.  
  73. $db->connect();
  74. $db->select_db();
  75.  
  76. $sql = 'SELECT login FROM ed_uczen WHERE login="c0424"';
  77. $db->query($sql);
  78. $rows = $db->fetch_num_array();
  79. if ($rows > 0)
  80. echo "tak";
  81. else
  82. {echo"nie";}
  83. ?>


Kod działa prawidłowo, tz. wyświetla napis tak lub nie w zależności czy istnieje rekord z bazie danych o login = c0424.
Jednak gdy wsadze kod spawdzający "czy istnieje rekord o login=c0424" do funkcji poza klasą i wywołam ją cały czas wyświetla mi się napis tak, nie zależnie czy jest rekord o danym "login" czy nie.

  1. <?php
  2. class dbmysql
  3. {
  4. var $Host;
  5. var $Login;
  6. var $Password;
  7. var $ConnectId;
  8. var $DataBase;
  9. var $FetchRows;
  10. var $NumRows;
  11. var $Query;
  12. var $QueryResult;
  13. var $QueryCounter;
  14. var $ErrorMsg;
  15. // Połączenie się z bazą danych
  16. function connect()
  17. {
  18. if($this->ConnectId = @mysql_connect($this->Host,$this->Login,$this->Password))
  19. {
  20. // Użytkownik zalogowany
  21. return TRUE;
  22. }
  23. else
  24. {
  25. // Bł&plusmn;d poł&plusmn;czenia lub wywołania serwera bazy danych
  26. return FALSE;
  27. }
  28. }
  29. // Wybranie bazy danych
  30. function select_db()
  31. {
  32. if(@mysql_select_db($this->DataBase))
  33. {
  34. // Baza danych wybrana
  35. return TRUE;
  36. }
  37. else
  38.  {
  39. // Baza danych nie wybramna. Występił bł&plusmn;d
  40. return FALSE;
  41. }
  42. }
  43. //zapyanie do bazy
  44. function query($Query)
  45. {
  46.  
  47. $this->QueryResult = @mysql_query($Query);
  48.  
  49. }
  50. // Tablica w wynikami
  51. function fetch_array()
  52. {
  53. // MYSQL_ASSOC - tylko tablica asosjacyjna
  54. while($row = mysql_fetch_array($this->QueryResult, MYSQL_ASSOC))
  55. {
  56. $this->FetchRows[] = $row;
  57. }
  58. return $this->FetchRows;
  59. }
  60. //Ilość otrzymanych rekordów
  61. function fetch_num_array()
  62. {
  63. $this->NumRows = mysql_num_rows($this->QueryResult);
  64. return $this->NumRows;
  65. }
  66. }
  67. function istnieje()
  68. {
  69. $sql = 'SELECT login FROM ed_uczen WHERE login="c0424"';
  70. $db->query($sql);
  71. $rows = $db->fetch_num_array();
  72. if ($rows > 0)
  73. echo "tak";
  74. else
  75. {echo"nie";} 
  76. }
  77. $db = new dbmysql;
  78. $db->Host = "localhost";
  79. $db->Login = "login";
  80. $db->Password = "hasło";
  81. $db->DataBase = "nazwabazy";
  82.  
  83. $db->connect();
  84. $db->select_db();
  85. istnieje();
  86. ?>


Pozdrawiam
Darektbg
sticker
brakuje Ci referencji do obiektu jako parametru w funkcji istnieje()
Po krótce funkcja istenieje nie wie co to jest $db bo nie ma o nim żadnych informacji wiec samo $db->query($sql) powinno rzucać Ci błąd że coś tam nie jest prawidłową metodą $db
darektbg
Witam !
Czyli, jeżeli zrobie tak:
  1. <?php
  2. function istnieje()
  3. { 
  4. $db = new dbmysql 
  5. $sql = 'SELECT login FROM ed_uczen WHERE login="c0424"';
  6. $db->query($sql); 
  7. $rows = $db->fetch_num_array();
  8. if ($rows > 0)
  9. echo "tak";
  10. else {echo"nie";} 
  11. }
  12. ?>

to teorytycznie ma prawo to działać ?
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.