Код соответствующий модели MVC

ivan453

Новичок
Вопрос в следующем как разделить код для модели (то что для БД) и код для контроллера(обрабатывает то что получает от пользователя)?
В коде который ниже все в вперемешку, наверно так не правильно.(это файл fullnews учебной ленты новостей - выводиться полная новость и можно оставить комментарий)
PHP:
<?php
session_start();

require_once './modules/function/function.php';

$id_ = intval($_GET['id']);

$query = "select * from news where id=$id_";

$ln_db->get_query($query);

$row = $ln_db->get_from_db();


//name string comments
$name_news = $row[0]['name'];


//комментарий
$query = "select name,date,comment,email from comments_user where news_name ='$name_news'";

$ln_db->get_query($query);

$row_comm = $ln_db->get_from_db();


if(@$_POST['add_comm']){

   
  $res_form = intval($_POST['number']);
    
  $warnig = check_fields($_POST['_name'], $_POST['email'], $_POST['comment'],@$_SESSION['res'],$res_form);
  
    if(empty($warnig)){
        
        $str = htmlspecialchars($_POST['comment']);
        
        $str = check_input($_POST['comment']);
        
        $name = check_input($_POST['_name']);
        
        $email = check_input($_POST['email']);
                        
        
        $query = "insert into  comments_user values (NULL,'$name',Now(),'$str','$email','$name_news')";

        $ln_db->get_query($query);
 
        $ln_db->get_from_db();

        header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
        exit;
    }


}

$rand_mass = random_number();

$rand_numbr1 = $rand_mass[0];

$rand_numbr2 = $rand_mass[1];

$token = $rand_mass[3];

$_SESSION['res']= $rand_mass[4];
Несколько раз идет примерно такой код
PHP:
$query = "select * from news where id=$id_";

$ln_db->get_query($query);

$row = $ln_db->get_from_db();
И этот код вперемешкус кодом для контролера.
Наверно нужно вместо этого какая функция(что бы это было в одном месте), но тогда же будет же модельный код и контроллерный мешаться между собой?!
Понимаю что МVC это разделение логики приложения, но сам код не разделяется?
 

fixxxer

К.О.
Партнер клуба
ivan453
забей, тебе еще рано думать про mvc. Как дорастешь - возьми какой-нибудь фреймворк и сделай на нем. Пока просто подумай как часто используемый код вынести в функции.
 

С.

Продвинутый новичок
Прочитай эту тему:
http://phpclub.ru/talk/threads/Класс-вызывается-2-раза.73406/
Фигурирущий в ней болван оказался не в состоянии ничего понять. Если у тебя мелькнут просветы, задавай более конкретные вопросы. Иначе никто расстилаться здесь по этой теме не будет.
 

fixxxer

К.О.
Партнер клуба
Ваше мнение очень важно для нас, оставайтесь на линии.
 

trava

Новичок
Ragazzo
вы уверены ? интересно по теме кто-нибудь выскажется :)
 

trava

Новичок
ivan453
(после прочтения кода) гм , превосходно а за это деньги платят ?
по теме: подсказка ; отделите запросы, дайте осмысленные названия функциям, покажите че получилось.
 

WMix

герр M:)ller
Партнер клуба
ну так на скидку

модель
PHP:
class CommentsUser{

// другие методы

public function getCommentRowByNewsName($name_news){
//комментарий
  $query = "select name,date,comment,email from comments_user where news_name ='$name_news'";
  $this->ln_db->get_query($query);
  return $this->ln_db->get_from_db();
}}
контроллер
PHP:
$name_news = $model->getCommentRowByNewsName($name_news);
в контроллере я знать не хочу откуда беруться данные, за это отвечает модель, хорошо если ответ модели не просто аrray а всеже некий RowObject типа Bean который не только содержит данные но и методы по выводу этих данных,.. но это уже больше Java чем PHP
 

Здыхлик

Kohaner
Команда форума
Для начала надо бы задуматься, а зачем вообще этот MVC Вам нужен. Не для записи в резюме ведь :) Посмотреть на код, и подумать, какие минусы в нем есть, насколько сложно будет потом что-то в нем поменять (например, настройки БД, имена полей/таблиц), добавить функционал или передать кому-то на сопровождение.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
WMix
Надеюсь, что в запросе $name_news не просто так туда попадает, а то как-то неправильно дырки делать.
 

WMix

герр M:)ller
Партнер клуба
c0dex
я просто обернул то что он написал, вопрос стоял какая часть модель а какая контроллер...
 

ivan453

Новичок
Прочитай эту тему:
http://phpclub.ru/talk/threads/Класс-вызывается-2-раза.73406/
...задавай более конкретные вопросы. Иначе никто расстилаться здесь по этой теме не будет.
Если есть несколько селектов
PHP:
 $query = "select * from news where id=$id_";

$ln_db->get_query($query);

$row = $ln_db->get_from_db();
что то такое, 2-3 раза в одном пхп файле.
Ведь это не есть хорошо, само по себе??
Все это нужно как-то собрать в одном файле(сами запросы) или даже для каждого запроса один файл по названию таблицы-читал это на форуме этом же, который подключать нужно в необходимых местах?
 

С.

Продвинутый новичок
С точки зрения канона MVC это не преступление. Но если пойти дальше и выделять внутри модели отдельный слой хранилища, рабoтающий на тех же принципах заменяемости, то да, действительно запросы к хранилищу лучше оформлять отдельно.

Таким образом в "чистой" модели уже не будет вызовов типа
PHP:
$ln_db->get_query($query);
Обращение будет происходить к абстрактному хранилищу и не в общих терминах БД, а в соданных специально для данного приложения:
PHP:
$storage->getNews($id_)
 

trava

Новичок
Логично :
1. не писать полный запрос : select * from news where id=$id_, а сделать драйвер всех запросов к БД.
2. использовать ООП на полную, т.е работать с сущностями. Users и тд, в которых и определять все взаимодействие.
 
Сверху