Работа с моделью MVC (помощь новичку)
Доброго времени суток. Возникла проблема при обращении и дальнейшем выводе данных из БД на сайт. (изучаю видео уроки от K0stix)
Не получается вывести результат в views (массив возвращается пустой). При этом БД создана и вспомогательные функции не выдают ошибок при обращении к БД. Где может быть ошибка? views: <?php require_once "../controllers/c_visit_card_content.php"; //Подключение файла - контроллера $temp = new C_visit_card_content(); $visit_card_content=$temp -> print_visit_card_content; $temp -> k_debug($visit_card_content); ?> controllers (файл ../controllers/c_visit_card_content.php): <?php require_once "../models/m_visit_card_content.php"; class C_visit_card_content extends M_visit_card_content { function print_visit_card_content () { $res = $this -> return_visit_card_content; //Возврат ссылки на таблицу базы данных $res=mysql_fetch_array($res); //Здесь находится массив return $res; //Возврат массива } } ?> модель (../models/m_visit_card_content.php) <?php require_once "../config/db.php"; class M_visit_card_content extends Db { function return_visit_card_content() { $sql = "select *from visit_card_content"; $res = $this -> sql($sql); return $res; } } ?> Вспомогательные функции (Они 99 % рабочие должны быть, взяты с урока) Файл db.php <?php require_once "config.php"; //Подключение класса config class db extends config { //Наследование класса config private $connection; function __constructor(){ $this ->open_connection(); } private function open_connection(){ $this -> connection=mysql_connect($this -> DB_HOST,$this -> DB_USER, $this ->DB_PASS); if (!$this -> connection){ die("Соединение с базой данных не выполненно: ".mysql_error()); } else { $db_select=mysql_select_db($this -> DB_NAME); if (!$db_select) { die ("База данных не найдена: ".mysql_error()); } } mysql_query("set names utf8") or die("utf8 не поддерживатеся"); } function sql($query) { $resault = mysql_query($query, $this -> connection); if (!$resault) { die("Заявка не выполнена: ".mysql_error()); } return $resault; } } $db = new db(); ?> файл config.php <?php require_once "debug.php"; class config extends Debug{ var $BASE_URL = "";//Базовое имя URL var $DB_HOST = "localhost"; //имя хоста var $DB_USER = "root"; var $DB_PASS = ""; var $DB_NAME = "rndGNSSgroup"; } ?> файл debug.php [PHP] <?php class Debug { function k_debug($aux) { echo "<pre>"; print_r ($aux); echo "</pre>"; } } ?> |
Цитата:
берете норм книжку и изучаете пыхапе, видеоуроки редко бывают хорошими. |
Цитата:
|
Цитата:
echo "<pre>"; print_r($res); echo "</pre>"; Кстати, вьюхой это с диким натягом является, по хорошему весь этот код в контроллере должен сидеть <?php require_once "../controllers/c_visit_card_content.php"; //Подключение файла - контроллера $temp = new C_visit_card_content(); $visit_card_content=$temp -> print_visit_card_content; $temp -> k_debug($visit_card_content); ?> |
Спасибо что откликнулись. Ну про автора это не реклама, просто в качесвте доп. информации. Да, дело было в скобках.
Возникла еще одна проблема. Браузер выдает ошибку. Warning: mysql_query() expects parameter 2 to be resource, null given in Z:\home\rnd3.local\www\config\db.php on line 38 Заявка не выполнена: Тут понятно, второй параметр выдается пустым. Сделал следующую проверку (Условия Null 1 и Null 2): <?php require_once "config.php"; //Подключение класса config class Db extends Config { //Наследование класса config private $connection; function __constructor(){ $this ->open_connection(); } private function open_connection(){ $this -> DB_HOST; $this -> connection=mysql_connect($this -> DB_HOST, $this -> DB_USER, $this ->DB_PASS); if (is_null($this ->connection)){ echo "NULL_1"; } if (!$this -> connection){ die("Соединение с базой данных не выполненно: ".mysql_error()); } else { $db_select=mysql_select_db($this -> DB_NAME); if (!$db_select) { die ("База данных не найдена: ".mysql_error()); } } mysql_query("set names utf8") or die("utf8 не поддерживатеся"); } function sql($query) { if (is_null($this ->connection)){ echo "NULL_2"; } $resault = mysql_query($query, $this -> connection); if (!$resault) { die("Заявка не выполнена: ".mysql_error()); } return $resault; } } $db = new Db(); ?> Браузер выдал: NULL_2 Warning: mysql_query() expects parameter 2 to be resource, null given in Z:\home\rnd3.local\www\config\db.php on line 38 Заявка не выполнена: Т.е. в приватной функции open_connection переменная $this -> connection еще не равна null (проверка null 1 не выполняется). Но в дальнейшем отрабатывании функции sql, переменная $this -> connection становиться равной null (выполняется проверка null 2). Пробывал изменять настройки приватности (делал все public), результат тот же. В чем проблема если $this -> connection в дальнейшем нигде не переприсваивается? Фугкция sql вызыватся из модуля models, код которого приведен в начале темы с входным параметром запроса считывания БД. |
Цитата:
|
Цитата:
|
Цитата:
её можно удалить |
Часовой пояс GMT +3, время: 19:16. |