![]() |
![]() ![]() |
![]() |
-Gość- |
![]()
Post
#1
|
Goście ![]() |
Witam,
Mam pewien zbiór klas. Obiekty mają odpowiadać za obsługę kilku języków na stronie. Podział jest następujący: abstract PropertyTemplates (klasa abstrakcyjna - przygotowawcza, wspólna wszystkim klasom dziedziczącym po niej): Kod require_once ('class/MySQL.class.php'); require_once ('class/Language.class.php'); require_once ('class/Browser.class.php'); abstract class PrepareTemplates { protected $objSql; protected $objBrowser; protected $objLanguage; public function __construct() { $this->objSql = MySQL::connect(); $this->objBrowser = new Browser(); $this->objLanguage = new Language(); } public function LanguageVersion() { return $this->objLanguage->GetLanguage(); } public function UserBrowser() { return $this->objBrowser->GetBrowserName(); } } Po tej klasie dziedziczą klasy odpowiadające za pobranie odpowienich danych w zależności od wybranej wersji językowej np LeftMenuTemplate: Kod require_once ('class/PrepareTemplates.class.php'); require_once ('interfaces/Templates.interfaces.php'); class LeftMenuTemplate extends PrepareTemplates implements Templates { public $sql; public function __construct() { parent::__construct(); } public function Execute() { $sqlQuery = "SELECT * FROM links_left_'".$this->LanguageVersion()."'"; $query = $this->objSql->query($sqlQuery); $fetch = $query->fetch_array(MYSQLI_ASSOC); //tutaj miala byc petla while, ale sa problemy z pobraniem za pomoca fetch_array } Niestety PHP zwraca mi błąd dla linii którą zakomentowałem w klasie PrepareTemplates: Call to a member function fetch_array() on a non-object . Pewnie w zły sposób odwołuję się do metody fetch_array klasy mysqli, bo w innym miejscu bez dziedziczenia wszystko działa prawidłowo np. Kod require_once ('class/MySQL.class.php'); $sql = MySQL::connect(); $zapytanie = "SELECT * FROM sessions WHERE sessions_identifer = '0b5c8pkm9ol101gnb87b2jpth6'"; $query = $sql->query($zapytanie); $fetch = $query->fetch_array(MYSQLI_ASSOC); print_r($fetch); Gdzie robię więc błąd? Dodatkowo dla jasności dodaję też klasę MySQL: Kod class MySQL
{ public static $connect = null; private static $db_host = 'localhost'; private static $db_user = 'root'; private static $db_pass = 'AX1BY2CZ3'; private static $db_name = 'sucza_database'; public static function connect() { if (is_null(self::$connect)) { self::$connect = new mysqli (self::$db_host, self::$db_user, self::$db_pass, self::$db_name); self::$connect->set_charset("utf-8"); } return self::$connect; } public static function AddSQL() { $GLOBALS['sql_count']++; } public static function GetCountSQL() { return $GLOBALS['sql_count']; } } |
|
|
-Gość- |
![]()
Post
#2
|
Goście ![]() |
Sprostowanie: PHP zwraca błąd dla LeftMenuTemplate, a nie klasy Prepare[...]. Błąd jest dokladnie tam gdzie wstawiłem komentarz w kodzie.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 562 Pomógł: 15 Dołączył: 8.08.2003 Skąd: Denmark/Odense Ostrzeżenie: (0%) ![]() ![]() |
Hmm... Co jest nie tak z tym zapytaniem? (podpowiedź: apostrofy...?)
-------------------- Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica |
|
|
-Gość- |
![]()
Post
#4
|
Goście ![]() |
Racja, szkolny błąd. Dziękuję za pomoc.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 10:05 |