Pomoc - Szukaj - U¿ytkownicy - Kalendarz
Pe³na wersja: config.inc.php + include w pliku klasy - b³±d
Forum PHP.pl > Forum > PHP > Object-oriented programming
Aztech
U¿ywam smarty, AdoBD + php 5.0.2.

Mam plik config.inc.php a w nim zapisane dane potrzebne do po³±czenia
  1. <?php
  2.  
  3. // Modify this data before instalation.
  4. // Remember that directories in Linux are case sensitive!!!
  5.  
  6. /********** HOST AND DATABASE **********/
  7.  
  8. $rbx_db_host = 'localhost'; //host where exists database
  9. $rbx_db_name = 'robotecs';  //database name
  10. $rbx_db_user = 'user'; //username used to log to the database
  11. $rbx_db_pass = 'password'; //password for username
  12. $rbx_db_admin = 'admin';  //administrator of the database
  13. $rbx_db_admin_pass = 'amd_password';  //passsword for administrator
  14.  
  15. /* inne zmienne configu*/
  16.  
  17.  
  18. ?>


a nastêpnie klasê TUser w pliku user.php a w niej konstruktor + include któy mi nie chce dzia³aæ!
  1. <?php
  2.  
  3.  
  4. //includy potrzebne do dzialania klasy
  5.  
  6. require_once("./core/adodb/adodb.inc.php");
  7. include("./configs/config.inc.php");
  8.  
  9. //definicje klas bledow
  10.  
  11. class UserException extends Exception {};
  12. class IllegalDataException extends Exception {};
  13. class SqlException extends Exception {};
  14.  
  15. class User {  
  16. /* pola prywatne */
  17.  
  18.  
  19. public function __construct($nick="", $email="") {
  20. $this->db = NewADOConnection("mysql");
  21. $this->db->debug = true;
  22. $this->db->Connect($rbx_db_host, $rbx_db_user, $rbx_db_pass, $rbx_db_name);  
  23. //$this->db->Connect('localhost', 'user', 'password', 'robotecs');  
  24. if (!empty($email)){
  25. if (!empty($nick)){
  26. $this->user_id =  0;
  27. $this->nick  =  "";
  28. $this->name  =  $nick;
  29. $this->password  =  "";
  30. $this->password_crypt  =  "";
  31. $this->email =  $email;
  32. $this->gg  =  "";
  33. $this->icq =  "";
  34. $this->tlen_id =  "";
  35. $this->photo =  "";
  36. $this->description =  "";
  37. $this->phone =  "";
  38. $this->result  =  null;
  39. }
  40. else throw new UserException("Can't create user when nickname is empty.");
  41. }
  42. else throw new UserException("Can't create user when email is empty.");
  43. }
  44. }
  45.  
  46. ?>


okazuje siê bowiem, ¿e podczas dowolnego pó¼niejszego wywo³ania w dowolnej metodzie tej klasy poni¿szego kodu konczy sie komunikatem: Nie wybrano ¿adnej bazy danych.

  1. <?php
  2.  
  3. $this->db->Execute('jakis kod AQL');
  4.  
  5. ?>


sprawdzalem zawartosc zmiennych:
$rbx_db_host;
$rbx_db_name;
$rbx_db_user;
$rbx_db_pass;

i okazuje siê, ¿e nie maj± one ¿adnych warto¶ci!!! Pytanie DLACZEGO? Gdzie¶ jest jaki¶ prosty b³±d (tak przypuszczam) którego nie jestem w stanie zlokalizowaæ i odp³ywam bo siedzê nad tym ju¿ 2 godziny i kupa.

Je¶li podstawiê t± wyremowan± linijkê
  1. <?php
  2.  
  3. //$this->db->Connect('localhost', 'user', 'password', 'robotecs');
  4.  
  5. ?>

zamiast tej ze zmniennymi to wszystko jest piêknie i cacy..
ja ju¿ odpadam, nie widzê nic... sad.gif
dr_bonzo
Zasieg zmiennych!
$rbx_* sa niewidoczne w klasie/obiekcie, przekaz je w konstruktorze.
Wlacz wszystkie bledy: error_reporting( E_ALL )
Aztech
zrobi³em tak:

wyrzuci³em include i konstruktor zmieni³em tak:
user.php
  1. <?php
  2.  
  3. public function __construct($nick="", $email="", $rbx_db="") {
  4. $this->db = NewADOConnection("mysql");
  5. $this->db->debug = true;
  6. $this->db->Connect($rbx_db['host'], $rbx_db['user'], $rbx_db['pass'], $rbx_db['name']);
  7. if (!empty($email)){
  8. if (!empty($nick)){
  9. $this->user_id =  $id;
  10. $this->nick  =  "";
  11. $this->name  =  $nick;
  12. $this->password  =  "";
  13. $this->password_crypt  =  "";
  14. $this->email =  $email;
  15. $this->gg  =  "";
  16. $this->icq =  "";
  17. $this->tlen_id =  "";
  18. $this->photo =  "";
  19. $this->description =  "";
  20. $this->phone =  "";
  21. $this->result  =  null;
  22. }
  23. else throw new UserException("Can't create user when nickname is empty.");
  24. }
  25. else throw new UserException("Can't create user when email is empty.");
  26. }
  27.  
  28. ?>


w pliku config.inc.php doda³em:
  1. <?php
  2.  
  3. $rbx_db['host'] = $rbx_db_host;
  4. $rbx_db['name'] = $rbx_db_name;
  5. $rbx_db['user'] = $rbx_db_user;
  6. $rbx_db['pass'] = $rbx_db_pass;
  7. $rbx_db['admin'] = $rbx_db_admin;
  8. $rbx_db['admpass'] = $rbx_db_admin;
  9.  
  10. ?>


a w pliku register.php gdzie tworzony jest konstruktorem nowy obiekt user klasy TUser mam tak:
  1. <?php
  2.  
  3. include("./configs/config.inc.php");
  4. /* kod */
  5. try {
  6. $user = new User($_POST["reg_nick"],$_POST["reg_email"],$rbx_db);
  7.  /* kod */
  8. }
  9. catch (UserException $e){  
  10. //throw $e;
  11. $e_msg .= $e->getMessage();  
  12. }
  13. catch (IllegalDataException $e) {
  14. $e_msg .= $e->getMessage();  
  15. }
  16. catch (SqlException $e) {
  17. $e_msg .= $e->getMessage();  
  18. }
  19. catch (Exception $e) {
  20. echo 'Unknown error!'.$e->getMessage();
  21. }
  22. }
  23.  
  24.  
  25. ?>


O to Ci chodzi³o? Dzia³aæ teraz to dzia³a... ale nie wiem sam czy to jest, ¿e tak siê wyra¿em najlepsze rozwi±zanie.
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.