Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z Klasa odpowiedzialna za wyświetalnie danych
markkoo99
post
Post #1





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

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


Witam,
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'));
}





?>

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;
}
?>


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;}
}
?>


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;
}
}
?>

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ć.
Go to the top of the page
+Quote Post
Prph
post
Post #2





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 4.03.2006
Skąd: Łódź

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


Po tym, co zamieściłeś trudno powiedzieć, to działa lub nie działa. Jeżeli masz biały ekran i nic się nie wyświetla, upewnij się, że masz włączone raportowanie o błędach:

  1. error_report(E_ALL);
  2. ini_set('display_errors', 'on');


Mała uwaga do:
  1. $sqlquery = 'select * from categories';
  2. if (!$result = AppCore::Query($sqlquery)) throw new Error('dberror');


Wyjątkiem powinna rzucać metoda query. Tutaj możesz najwyżej próbować go złapać i zgłosić kolejny wyjątek lub nie łapać w ogóle i aplikacja sama się zatrzyma.
Go to the top of the page
+Quote Post
markkoo99
post
Post #3





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

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


Wcześniej jak wrzuiłem kod to waliło błędy jeden za drugim, wiec je usuwałem z myśla ze zadziała w końcu.Ale ukazuje sie biały ekran. Nie wiem czy dobrze wyświetlam dane z bazy korzystajac z klasy. Jak można w najprosty sposó wyświetlis jakies dane z bazy korzsytajc z PHP obiektowego ?
Go to the top of the page
+Quote Post
Prph
post
Post #4





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 4.03.2006
Skąd: Łódź

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


Zamiast:

  1. if (!$num = $result->numRows()) {
  2. return 0;
  3. }
  4. return $num;
  5. }


zrób:

  1. return $result->numRows();


W ogole to pobranie wszystkich rekordów i zliczenie ich w PHP to bardzo zły pomysł. Zobacz select count(*) from....
Go to the top of the page
+Quote Post
markkoo99
post
Post #5





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

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


Zmieniłem i dalej biały ekran. Nie wiem czy cos wcześniej nie jest skopane. Tylko nie wiem co. Zastanwiam sie czy pod wzgeldem teoretycznym obiektowsc tutaj właściwie zdefiniowałem.
Go to the top of the page
+Quote Post
Prph
post
Post #6





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 4.03.2006
Skąd: Łódź

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


Tylko w tym kodzie nic nie wyświetlasz. To jest cały Twój kod? Załącz plik, w którym chcesz coś wyświetlić.
Go to the top of the page
+Quote Post
markkoo99
post
Post #7





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

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


No własnie to sa wszytkie moje pliki jakie mam. Gdzie zdefiniować to wyświetlanie?? To mnie właśnie trzyma , bo dopiero co zaczynam w tej tematyce.
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: 4.10.2025 - 19:50