Mam problem z wyświetleniem danych z baz danych. Robię aplikację obiektowo a raczej sie uczę. Bo jest robię bez obiektów to wyświetla mia zawartość bazy danych. Pewnie mam coś źle napisane w tej klasie która odpowiada za wyświetlanie danych.
Struktura aplikacji wygląda następująco:
Głównym rdzeniem aplikacji jest plik apcore.php
CODE
<?php
//Dołączenie pliku konfiguracyjnego
require_once(APP_DIR.'/configuration/define.php');
require_once(APP_DIR.'/aplication/comunication.php');
require_once(APP_DIR.'/aplication/object.php');
//Klasa bazowa PEAR
require_once('PEAR.php');
require_once('DB.php');
//Moduły sklepu -------------------------------START ----------------------
//Katalog
require_once(APP_DIR.'/modules/catalog.php');
//-----------------------KONIEC------------------------------
class AppCore {
private static $_appInitialized;
/**
* Obiekt PEAR pamiętający połączenie z bazą danych
*/
public static $_dataBaseConnection;
public static function initializeApplication() {
//Próba nawiązania połączenia z bazą danych
if (PEAR::isError(self::$_dataBaseConnection = DB::connect(DSNInit()))) {
if (LOG_WRITE) self::$_logObject->log('Nie można nawiązać połączenia z bazą danych. Przyczyna: '.self::$_dataBaseConnection->getMessage(), LOG_ERR);
throw new Error('dbconnectionerror');
}
}
public static function Query($queryString) {
return self::$_dataBaseConnection->Query($queryString);
}
/**
* Metoda obiera ilość wierszy objętych działaniem polecenia
* INSERT, UPDATE lub DELETE
* @return mixed
*/
}
//Inicjacja aplikacji
try {
AppCore::initializeApplication();
} catch (Error $err) {
echo (Lang::getMessage('error').': '.Lang::getMessage($err->getMessage()).'<br/>');
exit (Lang::getMessage('endofapplication'));
}
?>
//Dołączenie pliku konfiguracyjnego
require_once(APP_DIR.'/configuration/define.php');
require_once(APP_DIR.'/aplication/comunication.php');
require_once(APP_DIR.'/aplication/object.php');
//Klasa bazowa PEAR
require_once('PEAR.php');
require_once('DB.php');
//Moduły sklepu -------------------------------START ----------------------
//Katalog
require_once(APP_DIR.'/modules/catalog.php');
//-----------------------KONIEC------------------------------
class AppCore {
private static $_appInitialized;
/**
* Obiekt PEAR pamiętający połączenie z bazą danych
*/
public static $_dataBaseConnection;
public static function initializeApplication() {
//Próba nawiązania połączenia z bazą danych
if (PEAR::isError(self::$_dataBaseConnection = DB::connect(DSNInit()))) {
if (LOG_WRITE) self::$_logObject->log('Nie można nawiązać połączenia z bazą danych. Przyczyna: '.self::$_dataBaseConnection->getMessage(), LOG_ERR);
throw new Error('dbconnectionerror');
}
}
public static function Query($queryString) {
return self::$_dataBaseConnection->Query($queryString);
}
/**
* Metoda obiera ilość wierszy objętych działaniem polecenia
* INSERT, UPDATE lub DELETE
* @return mixed
*/
}
//Inicjacja aplikacji
try {
AppCore::initializeApplication();
} catch (Error $err) {
echo (Lang::getMessage('error').': '.Lang::getMessage($err->getMessage()).'<br/>');
exit (Lang::getMessage('endofapplication'));
}
?>
Plik do odpowiedzialny za komunikacje z baza comunication.php:
CODE
<?php
/************************************
*
* Połaczenie inicializycjne do bazy danych
*
************************************/
function DSNInit()
{
// Dołączenie obsługi klasy PEAR-DB
require_once('DB.php');
return DB_TYPE . '://' . DB_USERNAME . ':' . DB_PASSWORD . '@' . DB_HOST . '/' . DB_NAME;
}
?>
/************************************
*
* Połaczenie inicializycjne do bazy danych
*
************************************/
function DSNInit()
{
// Dołączenie obsługi klasy PEAR-DB
require_once('DB.php');
return DB_TYPE . '://' . DB_USERNAME . ':' . DB_PASSWORD . '@' . DB_HOST . '/' . DB_NAME;
}
?>
Plik Klasy Object.php :
CODE
<?php
abstract class Object {
/**#@+
* @access protected
*/
/**
* @var string Unikalny identyfikator obiektu (32 znaki).
*/
protected $_Id;
/**
* @var string Identyfikator w?a?ciciela obiektu.
*/
protected $_Owner;
/**
* @var string Typ obiektu (wszystkie typy przechowywane s? w bazie danych)
*/
protected $_Type;
/**
* @var string Opis obiektu
*/
protected $_Desc;
/**
* @var string Data utworzenia obiektu
*/
protected $_CreateDate;
/**
* @var string Data ostatniej modyfikacji obiektu
*/
protected $_LastModifyDate;
/**
* @var bool Aktywno?? obiektu
* (TRUE - obiekt jest aktywny
* FALSE - obiekt jest niekatywny)
*/
protected $_Active;
/**#@-*/
/**
* Domy?lna metoda wywo?ywana podczas inicjalizacji obiekt?w tej klasy
* @access public
*/
public function __construct () {}
/**
* Ustawia unikalny identyfikator obiektu
* @access public
* @param string $id Unikalny identyfikator
* @return bool
*/
public function setId($id){$this->_Id = $id;}
}
?>
abstract class Object {
/**#@+
* @access protected
*/
/**
* @var string Unikalny identyfikator obiektu (32 znaki).
*/
protected $_Id;
/**
* @var string Identyfikator w?a?ciciela obiektu.
*/
protected $_Owner;
/**
* @var string Typ obiektu (wszystkie typy przechowywane s? w bazie danych)
*/
protected $_Type;
/**
* @var string Opis obiektu
*/
protected $_Desc;
/**
* @var string Data utworzenia obiektu
*/
protected $_CreateDate;
/**
* @var string Data ostatniej modyfikacji obiektu
*/
protected $_LastModifyDate;
/**
* @var bool Aktywno?? obiektu
* (TRUE - obiekt jest aktywny
* FALSE - obiekt jest niekatywny)
*/
protected $_Active;
/**#@-*/
/**
* Domy?lna metoda wywo?ywana podczas inicjalizacji obiekt?w tej klasy
* @access public
*/
public function __construct () {}
/**
* Ustawia unikalny identyfikator obiektu
* @access public
* @param string $id Unikalny identyfikator
* @return bool
*/
public function setId($id){$this->_Id = $id;}
}
?>
Plik Catalog.php który zawiera klasę do wyświetlania danych z bazy:
CODE
<?php
class Catalog extends Object {
public function __construct($catdata = array()) {
$this->_SubCategory = NULL;
//Tworzenie obiektu
}
public function getCategoryProductsNumber() {
$sqlquery = 'select * from categories';
if (!$result = AppCore::Query($sqlquery)) throw new Error('dberror');
if (!$num = $result->numRows()) {
return 0;
}
return $num;
}
}
?>
class Catalog extends Object {
public function __construct($catdata = array()) {
$this->_SubCategory = NULL;
//Tworzenie obiektu
}
public function getCategoryProductsNumber() {
$sqlquery = 'select * from categories';
if (!$result = AppCore::Query($sqlquery)) throw new Error('dberror');
if (!$num = $result->numRows()) {
return 0;
}
return $num;
}
}
?>
Struktura bazy jest bardzo prosa i składa sie kilku rekordów. Chodzi o to żeby coś wyświetlić.
Początkowo wyskakiwały mi błędy które stopniowo usuwałem, a teraz mam biały ekran i nic nie wyświetla. Nie wiem jak sobie poradzić z góry dziękuje za wskazówki. Będę bardzo wdzięczny za pomoc bo utknąłem w miejscu i nie wiem jak sobie z tym poradzić.