Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.02.2012, 01:31
Аспирант
Отправить личное сообщение для IONEX Посмотреть профиль Найти все сообщения от IONEX
 
Регистрация: 08.01.2012
Сообщений: 32

Работа с моделью 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>";
        }
    }
?>
Ответить с цитированием
  #2 (permalink)  
Старый 06.02.2012, 13:36
Аватар для Shaci
:-/
Отправить личное сообщение для Shaci Посмотреть профиль Найти все сообщения от Shaci
 
Регистрация: 28.09.2009
Сообщений: 1,126

Сообщение от IONEX Посмотреть сообщение
Доброго времени суток. Возникла проблема при обращении и дальнейшем выводе данных из БД на сайт. (изучаю видео уроки от K0stix)
[sarcasm]конечно все знают видео уроки от K0stix[/sarcasm],
берете норм книжку и изучаете пыхапе, видеоуроки редко бывают хорошими.

Последний раз редактировалось Shaci, 06.02.2012 в 14:06.
Ответить с цитированием
  #3 (permalink)  
Старый 06.02.2012, 13:42
Аватар для Shaci
:-/
Отправить личное сообщение для Shaci Посмотреть профиль Найти все сообщения от Shaci
 
Регистрация: 28.09.2009
Сообщений: 1,126

Сообщение от IONEX
$visit_card_content=$temp -> print_visit_card_content;
попробуйте скобки поставить у вызова метода
Ответить с цитированием
  #4 (permalink)  
Старый 06.02.2012, 13:48
Аватар для Shaci
:-/
Отправить личное сообщение для Shaci Посмотреть профиль Найти все сообщения от Shaci
 
Регистрация: 28.09.2009
Сообщений: 1,126

Сообщение от IONEX
$res = $this -> return_visit_card_content;
$res=mysql_fetch_array($res);
return $res;
и тут тоже скобки, может поможет + можно посмотреть, вытаскивает ли он из базы в этом методе

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

Последний раз редактировалось Shaci, 06.02.2012 в 14:04.
Ответить с цитированием
  #5 (permalink)  
Старый 07.02.2012, 00:38
Аспирант
Отправить личное сообщение для IONEX Посмотреть профиль Найти все сообщения от IONEX
 
Регистрация: 08.01.2012
Сообщений: 32

Спасибо что откликнулись. Ну про автора это не реклама, просто в качесвте доп. информации. Да, дело было в скобках.

Возникла еще одна проблема. Браузер выдает ошибку.

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, код которого приведен в начале темы с входным параметром запроса считывания БД.
Ответить с цитированием
  #6 (permalink)  
Старый 07.02.2012, 01:23
Аватар для Shaci
:-/
Отправить личное сообщение для Shaci Посмотреть профиль Найти все сообщения от Shaci
 
Регистрация: 28.09.2009
Сообщений: 1,126

Сообщение от IONEX
$this -> DB_HOST;
в подробноси кода не вдавался, сходу вижу странную строку
Ответить с цитированием
  #7 (permalink)  
Старый 07.02.2012, 13:06
Аспирант
Отправить личное сообщение для IONEX Посмотреть профиль Найти все сообщения от IONEX
 
Регистрация: 08.01.2012
Сообщений: 32

Сообщение от Shaci Посмотреть сообщение
в подробноси кода не вдавался, сходу вижу странную строку
Тут все нормально код рабочий (можно как то улучшить запись?). Эта переменная создается в классе Config и наследуется всеми остальными классами. Ошибку нашел, - конструктор неправильно назвал вместо construct писал constructor.
Ответить с цитированием
  #8 (permalink)  
Старый 07.02.2012, 13:30
Аватар для Shaci
:-/
Отправить личное сообщение для Shaci Посмотреть профиль Найти все сообщения от Shaci
 
Регистрация: 28.09.2009
Сообщений: 1,126

Сообщение от IONEX Посмотреть сообщение
Тут все нормально код рабочий (можно как то улучшить запись?). Эта переменная создается в классе Config и наследуется всеми остальными классами. Ошибку нашел, - конструктор неправильно назвал вместо construct писал constructor.
это понятно. просто смысл этой строки?
её можно удалить
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с массивами. Требуется помощь. Кристи Общие вопросы Javascript 3 08.02.2011 18:00
Jquery Ajax, помощь новичку mxwuser AJAX и COMET 2 04.09.2010 11:56
Помощь новичку Рон Элементы интерфейса 13 05.05.2010 17:14
помощь новичку - задача вывода содержимого нескольких страниц в одну новую samurau AJAX и COMET 2 03.11.2009 19:07