MVC как писать запрос mysql в model

Тема в разделе "Как сделать...", создана пользователем m1ko, 24 ноя 2013.

  1. m1ko

    m1ko Создатель

    Регистр.:
    15 авг 2010
    Сообщения:
    42
    Симпатии:
    3
    Пытаюсь написать свой скрипт по урокам, пересмотрел кучу и запутался и не нашел в них как именно в модели ПРАВИЛЬНО написать запрос, допустим выбрать все из таблицы news и передать их в представление.
    Кто поможет если не трудно?

    Сейчас в модели написан в ручную массив


    PHP:
    class Model_Updates extends Model
    {
        public function 
    get_updates()
        {  
        return array(
              
                array(
                    
    'title' => 'Новость 1.',
                    
    'content' => 'Контент..',
                    
    'author' => 'Author',
                    
    'date' => '12-04-2013'
                
    ),
                array(
                    
    'title' => 'Новость 2',
                    
    'content' => 'Контент...',
                    
    'author' => 'Author',
                    
    'date' => '12-04-2013'
                
    ),
            );
        }


    }
     
  2. fmedia

    fmedia Создатель

    Регистр.:
    26 окт 2012
    Сообщения:
    34
    Симпатии:
    8
    Тебе в помощь mysql_fetch_array();

    $sql=mysql_query("select * from news");
    while($r[]=mysql_fetch_array($sql));
     
  3. m1ko

    m1ko Создатель

    Регистр.:
    15 авг 2010
    Сообщения:
    42
    Симпатии:
    3
    Я нашел пока что такой вариант
    PHP:
    $q "SELECT * FROM news ORDER BY date DESC, id DESC";
            
    $res mysql_query($q) or die(mysql_error());   
            
    $posts = array();
            while (
    $row mysql_fetch_assoc($res)) {
                
    $posts[] = $row;
            }   
            return 
    $posts;
     
  4. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    359
    Симпатии:
    243
    Идея примерно правильная.

    Вот только, работать с такой моделью (как сейчас) не очень удобно. Если потребуется по ID или по URL-у (alias, slug и тд) одну запись выдернуть - придётся ещё дописывать. Если все записи за месяц (за год, из категории "электроника", только "включенные") - тоже пилить придётся.

    p.s. вместо mysql_ функций уже давно рекомендуется использовать PDO или mysqli_
     
  5. m1ko

    m1ko Создатель

    Регистр.:
    15 авг 2010
    Сообщения:
    42
    Симпатии:
    3
    У меня уже наброшены функции такие как getRow getAll getOne отдельно можно и с остальными параметрами сделать, но у меня проблема var_dump выводит bool(false)
    код функции у меня уже другой.
     
  6. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    359
    Симпатии:
    243
    А что выведет функция mysql_error() ?
     
  7. ishkval

    ishkval Постоялец

    Регистр.:
    2 окт 2013
    Сообщения:
    104
    Симпатии:
    36
    Mysql_error выводит сообщение о ошибке от базы данных чтобы программист мог понять почему например в базу данных что то не вставилось или что то не выдернулось
     
  8. UJy

    UJy

    Регистр.:
    23 авг 2011
    Сообщения:
    354
    Симпатии:
    127
    Капитан очевидность )))
    esche имел в виду: какое сообщение отдает mysql_error() учитывая, что var_dump выводит bool(false).
    Знаю ошибку - легко решить проблему.
     
  9. m1ko

    m1ko Создатель

    Регистр.:
    15 авг 2010
    Сообщения:
    42
    Симпатии:
    3
    Написали что бы похвастаться?

    mysql_error(); молчит ничего не выдает

    Вообщем нашел ошибку в коде, исправил но теперь var_dump выводит за место того что нужно

    object(mysqli_result)#6 (5) { ["current_field"]=> int(0) ["field_count"]=> int(5) ["lengths"]=> NULL ["num_rows"]=> int(2) ["type"]=> int(0) }
     
    Последнее редактирование: 26 ноя 2013
  10. maksdekka

    maksdekka Писатель

    Регистр.:
    24 июл 2013
    Сообщения:
    1
    Симпатии:
    1
    MVC на то и паттерн архитектуры проектирования, чтобы упростить разработку а никак не усложнять её. MVC это ООП, то есть никаких fetch_array и т.д. здесь в помине не нужно писать. Объектно ориентировочная структура позволяет выполнять запросы например вот так:
    $this->db->query('ЗДЕСЬ ВАШ ЗАПРОС');
    ну и соответственно
    $query = $this->db->query('ЗДЕСЬ ВАШ ЗАПРОС');

    где в query результат вашего запроса, это пример из CodeIgniter, у вас может быть по другому, но суть остается сутью. Классовая структура и обращения к объектам класса.