Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Problem z obiektem funkcji Query
markkoo99
post
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 22.12.2009

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


Witam,
Mam problem z tworzeniem obiektu. Wyskauje mi taki błąd:

Fatal error: Call to a member function Query() on a non-object in C:\WebSerwer\Apache2\Apache2\htdocs\sklep_inz\aplication\apcore.php on line 46

To cześć kodu gdzie ten błąd jest generowany:
  1. <?php
  2.  
  3. //Dołączenie pliku konfiguracyjnego
  4. require_once(APP_DIR.'/configuration/define.php');
  5. require_once(APP_DIR.'/aplication/comunication.php');
  6. require_once(APP_DIR.'/aplication/object.php');
  7.  
  8. //Klasa bazowa PEAR
  9. require_once('PEAR.php');
  10. require_once('DB.php');
  11.  
  12. include_once('public.php');
  13.  
  14. //Moduły sklepu -------------------------------START ----------------------
  15. //Katalog
  16. require_once(APP_DIR.'/modules/catalog.php');
  17. //-----------------------KONIEC------------------------------
  18.  
  19.  
  20. class AppCore {
  21.  
  22. private static $_appInitialized;
  23. /**
  24. * Obiekt PEAR pamiętający połączenie z bazą danych
  25. */
  26. public static $_dataBaseConnection;
  27. private function __construct() {}
  28.  
  29. public static function initializeApplication() {
  30.  
  31. //Inicjacja przeprowadzana tylko jeden raz
  32. if (self::$_appInitialized) return;
  33.  
  34. //Próba nawiązania połączenia z bazą danych
  35.  
  36. if (PEAR::isError(self::$_dataBaseConnection = DB::connect(DSNInit()))) {
  37.  
  38. if (LOG_WRITE) self::$_logObject->log('Nie można nawiązać połączenia z bazą danych. Przyczyna: '.self::$_dataBaseConnection->getMessage(), LOG_ERR);
  39. throw new Error('dbconnectionerror');
  40. }
  41.  
  42. }
  43.  
  44.  
  45. public function Query($queryString) {
  46. return self::$_dataBaseConnection->Query($queryString);
  47. }
  48. /**
  49. * Metoda obiera ilość wierszy objętych działaniem polecenia
  50. * INSERT, UPDATE lub DELETE
  51. * @return mixed
  52. */
  53.  
  54. public static function AffectedRows() {
  55. return self::$_dataBaseConnection->affectedRows();
  56. }
  57. /**
  58. * Metoda zwraca obiekt połączenia z bazą danych
  59. */
  60. }
  61.  
  62. /*
  63. try {
  64. if (isset($_GET['admin'])) {
  65. include_once('admin.php');
  66. } else {
  67. include_once('public.php');
  68. }
  69. }
  70. */
  71.  
  72. //Inicjacja aplikacji
  73. try {
  74. AppCore::initializeApplication();
  75.  
  76. } catch (Error $err) {
  77. echo (Lang::getMessage('error').': '.Lang::getMessage($err->getMessage()).'<br/>');
  78. exit (Lang::getMessage('endofapplication'));
  79.  
  80.  
  81. }
  82.  
  83.  
  84.  
  85.  
  86.  
  87. ?>
  88.  
  89.  
  90.  
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
markkoo99
post
Post #2





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 22.12.2009

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


Witam,
Wiec moja aplikacja wygląda w następujący sposób:
Katalog Aplication:
-apcore.php ( kod wyzej)

-comunication.php :
  1. <?php
  2.  
  3. /************************************
  4. *
  5. * Połaczenie inicializycjne do bazy danych
  6. *
  7. ************************************/
  8.  
  9. function DSNInit()
  10. {
  11. // Dołączenie obsługi klasy PEAR-DB
  12. require_once('DB.php');
  13.  
  14. return DB_TYPE . '://' . DB_USERNAME . ':' . DB_PASSWORD . '@' . DB_HOST . '/' . DB_NAME;
  15. }
  16.  
  17. ?>


-object.php :
  1. <?php
  2.  
  3. abstract class Object {
  4. /**#@+
  5.   * @access protected
  6.   */
  7. /**
  8.   * @var string Unikalny identyfikator obiektu (32 znaki).
  9.   */
  10. protected $_Id;
  11. /**
  12.   * @var string Identyfikator w?a?ciciela obiektu.
  13.   */
  14. protected $_Owner;
  15. /**
  16.   * @var string Typ obiektu (wszystkie typy przechowywane s? w bazie danych)
  17.   */
  18. protected $_Type;
  19. /**
  20.   * @var string Opis obiektu
  21.   */
  22. protected $_Desc;
  23.  
  24. protected $_LastModifyDate;
  25.  
  26. protected $_Active;
  27.  
  28. public function __construct () {}
  29.  
  30. public function setId($id){$this->_Id = $id;}
  31. }
  32. ?>
  33.  


- public.php
  1. <?php
  2. //Pobieranie struktury kategorii
  3. class Catalog extends Object {
  4.  
  5.  
  6.  
  7. public function getCategoryProductsNumber() {
  8. $sqlquery = 'select * from categories';
  9. if (!$result = AppCore::Query($sqlquery)) throw new Error('dberror');
  10. if (!$num = $result->fetchRow(DB_FETCHMODE_ASSOC)) {
  11. return 0;
  12. }
  13. return current($num);
  14.  
  15. }
  16. }
  17.  
  18.  
  19. $catalog = new Catalog();
  20. $cat_struct = $catalog->getCategoryProductsNumber();
  21.  
  22. Catalog::getCategoryProductsNumber();
  23.  
  24.  
  25.  
  26. ?>



Katalog configuration:


- define.php
  1. <?php
  2. // Definiowanie parametrów konfiguracyjnych
  3.  
  4. define("DB_TYPE",'mysql');
  5. //Nazwa hosta na którym znajduję sie baza danych
  6. define("DB_HOST",'localhost');
  7. //Nazwa bazy danych
  8. define("DB_NAME",'xxx');
  9. //Nazwa użytkownika bazodanowego
  10. define("DB_USERNAME",'xxxx');
  11. //Hasło do bazy danych
  12. define("DB_PASSWORD",'xxxx');
  13. //Protokuł obsługujący połączenia
  14. define("DB_PROTOCOL", 'tcp');
  15.  
  16. ?>
  17.  


Katalog www:

-index.php

  1. <?php
  2.  
  3. define('APP_DIR', "../");
  4.  
  5. // G��wny plik aplikacji
  6. require_once(APP_DIR.'aplication/apcore.php');
  7.  
  8.  
  9. ?>
  10.  



Baza danych jest narazie prosta bo chce tylko wyświetlić te dane, a nie wiem gdzie popełniam błąd.
  1. -- phpMyAdmin SQL Dump
  2. -- version 3.1.3.2
  3. -- <a href="http://www.phpmyadmin.net" target="_blank">http://www.phpmyadmin.net</a>
  4. --
  5. -- Host: localhost
  6. -- Czas wygenerowania: 13 Cze 2010, 12:40
  7. -- Wersja serwera: 6.0.5
  8. -- Wersja PHP: 5.2.6
  9.  
  10. SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
  11.  
  12. --
  13. -- Baza danych: `xxxx`
  14. --
  15.  
  16. -- --------------------------------------------------------
  17.  
  18. --
  19. -- Struktura tabeli dla `categories`
  20. --
  21.  
  22. CREATE TABLE IF NOT EXISTS `categories` (
  23. `ID_Cat` int(11) NOT NULL AUTO_INCREMENT,
  24. `ID_Parent` int(11) NOT NULL,
  25. `Name` varchar(40) NOT NULL,
  26. `Description` varchar(40) NOT NULL,
  27. PRIMARY KEY (`ID_Cat`)
  28. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
  29.  
  30. --
  31. -- Zrzut danych tabeli `categories`
  32. --
  33.  
  34. INSERT INTO `categories` (`ID_Cat`, `ID_Parent`, `Name`, `Description`) VALUES
  35. (1, 0, 'kat1', 'opis1'),
  36. (2, 0, 'kat2', 'opis2'),
  37. (3, 1, 'katpod', ''),
  38. (4, 2, 'podkat2', '');
  39.  
  40.  


To jest cała struktura mojej aplikacji.
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.10.2025 - 09:26