Mysql Проблема с получением данных

$iD

Новичок
Добрый день.

делаю что-то типа гостевой книги с использованием ООП.

сделал класс db.php

PHP:
<?php
require_once 'config.php';
class DB
{
    private $conn = NULL;
    function __construct()
    {
        $this->db_conn();
        //echo "Connetion";
    }
    private function db_conn()
    {
        $this->conn = mysqli_connect(DB_HOST, DB_USER,DB_PASSWORD);
        if(!$this->conn)
            die ("Database connection failed" . mysql_error());
        else{
            $select_db = mysqli_select_db($this->conn, DB_NAME);
            if(!$select_db)
                die("Database selection failed" . mysql_error());
        }
    }
    public function query($query)
    {
        $result = mysqli_query($this->conn, $query);
        if(!$result)
            die("Query failed: " . mysql_error());
        return $result;
    }
}
$db = new DB();
потом сделал модель:

PHP:
<?php
// Модель
require_once "../config/db.php";
class MNews extends DB
{
    function return_news()
    {
        $sql_query = "SELECT message FROM comments LIMIT 0,25";
        $res = $this ->query($sql_query);
        return $res;
    }
}
и наконец контроллер:

PHP:
<?php
//Контроллер
require_once "news.php";
class CNews extends MNews
{
    function news_out()
    {
        $res = $this->return_news();
        while($row = mysql_fetch_array($res))
        {
            $news[] = $row['message'];
        }
        return $news;
    }
}
и в итоге получаю ошибку

Warning: mysql_fetch_array() expects parameter 1 to be resource, object given in
я понимаю что он хочет не объект... но как мне скормить ему то что нужно... подскажите пожалуйста
 

Фанат

oncle terrible
Команда форума
Можно тебя попросить впредь убирать лишние переводы строк самостоятельно? Спасибо.
 

Фанат

oncle terrible
Команда форума
mysqli_connect vs
mysql_fetch_array

"Абрам Иваныч, вы или крестик снимите, или трусики наденьте"
 
  • Like
Реакции: $iD

Фанат

oncle terrible
Команда форума
Контроллер у тебя фуфло. И класс БД - тоже.
возвращать массив строк должен метод класса DB
в модели должен вызываться этот метод (с запросом в качестве аргумента).
а контроллер в должен дергать метод модели и передавать данные во вью
 
  • Like
Реакции: $iD

Фанат

oncle terrible
Команда форума
Нет, на ООП это не похоже совсем.
Это немного похоже на MVC, но оопой это даже и не пахнет.
во-первых, экстендить модель контроллером - это просто новое слово в сайтостроении
во-вторых, старая истина о том, что "ооп синтаксис не делает код объектным" в полной мере применима к твоему случаю.
 
  • Like
Реакции: $iD

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Мне одному кажется, что тут:

$res = $this ->query($sql_query);

надо убрать пробел у $this?
 

$iD

Новичок
Это критично? IDE у меня сама поправила, так что это не баг )
 

Sufir

Я не волшебник, я только учусь
А чем ты руководствовался выбирая такую... "архитектуру"? Ты наследуешь "модель" от класса DB, а затем "контроллер" от класса модели. Просто интересно откуда такая идея, прочёл где-то?
 

Фанат

oncle terrible
Команда форума
ты скопировал идею из видеоурока или там идея была другая, а ты её только использовал? Если последнее, то какая идея была там?
 

eax

#
Я тоже видел курс, где контроллер наследуется от модели, там пишут CMS. Называется "php объектно-ориентированный подход", лежит на рутрекере, выложен автором.
 

$iD

Новичок
вот в этом то и загвоздка, что качаешь, думаешь что правильно преподают материал, а потом скидываешь на phpclub, а тут говорят что это просто кусок УГ.))
 

Фанат

oncle terrible
Команда форума
Проблема в том, что профессионалы уроков не снимают. Им некогда - им работать надо.
Да и понимают они, что по видеоурокам ничего путного изучить нельзя.

Поэтому записывает видео всякая шелупонь. Либо такая, которой вообще без разницы, про что делать - лишь бы бабла срубить, типа Попова, либо нубасы, которые знают не больше тебя, но думают "о, видео - это круто!"
 

$iD

Новичок
ну так как же разобраться? :) какую книгу почитать? по ООП для php
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
$iD
Бери Котерова, ссылки есть на форуме, ищи.
 

$iD

Новичок
котеров есть такой: Котеров,Костарев - PHP 5.2ed.2009
есть еще Энди гутманс
и такая Зандстра Мэтт - PHP. Объекты, шаблоны и методики программирования. - 2010
 

WMix

герр M:)ller
Партнер клуба
тут дело даже не в OOP как раз с этой точки зрения все хорошо.. вот только архитектурой MVC это никак не назовешь...
тут просто вывих мозга, когда говорят модель то подразумевают (не всегда конечно) табличку но никак не базу, а у тебя это еще и connection (хотя конечно так можно написать еще куда не шло), когда говорят контроллер, то это уже явно не модель и тем более не база данных. .. возможно ты непонял, и то что ты называешь контроллером тоже является моделью (пусть даже наследованную от базы данных)
 
Сверху