Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> config.inc.php + include w pliku klasy - błąd, już całkowicie zgłupiałem
Aztech
post
Post #1





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


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... (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Ten post edytował Aztech 12.12.2005, 23:52:50
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Zasieg zmiennych!
$rbx_* sa niewidoczne w klasie/obiekcie, przekaz je w konstruktorze.
Wlacz wszystkie bledy: error_reporting( E_ALL )
Go to the top of the page
+Quote Post
Aztech
post
Post #3





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


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.
Go to the top of the page
+Quote Post

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: 22.08.2025 - 23:22