За последние 24 часа нас посетили 22527 программистов и 1141 робот. Сейчас ищут 846 программистов ...

ооп подключчение к базе Разеделние на mcv

Тема в разделе "PHP для новичков", создана пользователем viktor72, 10 апр 2019.

Метки:
  1. viktor72

    viktor72 Активный пользователь

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    Добрый день!
    Правильный ли ход мысли? Что не так , в чём ошибка, что делать?
    Зачем использовать RedBeans ?

    папка models connect.php
    PHP:
    1. // подключение к базе данных
    2. class conn {
    3.         private $con;
    4.        
    5.         function conn2(){
    6.             $this->con = new mysqli('localhost', 'root', '', 'site');
    7.             return $this->con;
    8.         }
    9.        
    10.     }
    11.    
    папка controllers фаил select.php
    PHP:
    1. // запрос в базу данных
    2.     require_once"models/connect.php";
    3.    
    4.     class sel {
    5.        
    6.         function __construct($mys){
    7.             $this->mys = $mys;
    8.         }
    9.        
    10.         function sell(){
    11.             $select = $this->mys->query("SELECT * FROM company");
    12.             return $select;
    13.         }
    14.     }
    15.    
    16.     $mysqli = new conn;
    17.     $mys = $mysqli->conn2();
    18.    
    19.     $selct = new sel($mys);
    20.     $s = $selct->sell();
    папка view фаил index.php
    PHP:
    1.  require_once"controllers/select.php";
    2.     class vw{
    3.        
    4.         function viewSelect($s){
    5.             while($res = mysqli_fetch_array($s)){
    6.                 echo "<p>$res[kompani]</p>";
    7.             }
    8.         }
    9.     }
    10.     $avw = new vw;
    11.     $avw->viewSelect($s);
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Это вы у нас спрашиваете? :) Наверное, вместо собственного кода с кучей ошибок.
     
    viktor72 нравится это.
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Это у тебя там что, просмотр лезет в базу? Логика MVC не соблюдена. Контроллер должен передавать виду готовые данные. Классы у тебя по принципу "нехай будут", не надо так. Лучше уж совсем без них.
     
    viktor72 и _ne_scaju_ нравится это.
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Ну fetch словами «лезет в базу» несовсем корректно обзывать.
     
    viktor72 нравится это.
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    @viktor72, с др. стороны, если нет вменяемой шаблонизации, лучше ввести свой слой для fetch или хотя бы сосредоточить mysqli_fetch-ф-ции в оч. ограниченном наборе методов вьюшки, т.е. сделать соотв. обертку и использовать вызов $this->fetch().

    P.S. Форыч может работать непосредственно с mysqli_result ;)
    --- Добавлено ---
    P.P.S. Естественно, как выше написали, во вьшку можно передавать данные в обычном виде (в виде массива и т.п.).
     
    viktor72 нравится это.
  6. Babka_Gadalka

    Babka_Gadalka Активный пользователь

    С нами с:
    16 фев 2019
    Сообщения:
    162
    Симпатии:
    23
    Адрес:
    Москва, Пушкина, Избушкина, 2й этаж душечка.
    подключаешь ООП mysqli, а используешь потом Процедурный стиль
     
    viktor72 нравится это.
  7. viktor72

    viktor72 Активный пользователь

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    В ЧЁМ КОНКРЕТНО ВЫРАЖАЮТСЯ ОШИБКИ В КОДЕ?
    --- Добавлено ---
    FETCH ЛЕЗЕ В БАЗУ? FETCH ПРЕОБРАЗУЕТ ТО ЧТО ДОСТАЛ ИЗ БАЗЫ В МАССИВ, ИЛИ Я ОШИБАЮСЬ?
    --- Добавлено ---
    ВОПРОС ТОЛЬКО В ТОМ , ЧТО КОНТРОЛЛЕРУ НЕ ПЕРЕДАЮТСЯ ГОТОВЫЕ ДАННЫЕ ИЛИ ЧТО ТО ЕЩЁ?
    ФУНКЦИЯ WHILE , FETCH ДОЖНЫ БЫТЬ НА СТОРОНОЕ КОНТРОЛЛЕРА. КАК ЭТО СДЕЛАТЬ? ИЛИ НЕОБХОДИМО ЗАДЕЙСТВОВАТЬДРУГИЕ ФУНКЦИИ?
    Я ПРЕДПОЛОЖИЛ СЛЕДУЮЩЕЕ:
    1. ИМЕЕТСЯ КЛАСС ПОДКЛЮЧЕНИЯ К БАЗЕ ДАННЫХ, ОБЩИХ ДЛЯ ВСЕХ КЛАСОВ.
    2. ИМЕЕТСЯ КЛАСС КОТОРЫЙ ДОСТАЕТ ИЗ БАЗЫ ДАННЫХ СУЩНОСТЬ "COMPANY". ПРЕДПОЛАГАЕТСЯ ЧТО СЮДА БУДУТ СОЗДАНЫ РАЗНЫЕ ВАРИАНТЫ СЕЛЕКТОВ ЭТОЙ СУЩНОСТИ.
    3. ИМЕЕТ КЛАСС , КОТОРЫЙ ВВЫВОДИТ НА МОНИТОР СУЩНОСТЬ "COMPANY"
    --- Добавлено ---
    Пока что нет знания/понимания как это делается. Можно пример?
    --- Добавлено ---
    На данном этапе нет достаточных знаний/опыта. В чём может быть угроза/проблема, что использовался процедурный стиль?
     
  8. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    :D

    ??? Я вам практически все словами написал ;)
    --- Добавлено ---
    Ну про трэйты еще почитайте, чтобы не дублировать код fetch 100500 раз, хотя можно и наследованием ограничиться.
     
    viktor72 нравится это.
  9. viktor72

    viktor72 Активный пользователь

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    Понятия для моего изучения:
    шаблонизация
    слой
    обёртка
    вызов - $this->fetch
    mysqli_result
    трейты

    Спасибо.