Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
 Аватар для Serj190492
160 / 159 / 59
Регистрация: 19.02.2015
Сообщений: 830

Выборка из БД в ООП

28.07.2016, 20:20. Показов 1960. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Коллеги, выручайте, я запарился)
Наконец-то добрался до изучения ООП.

В процедурке были такие функции:
Кликните здесь для просмотра всего текста

Получить все статьи из БД
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function get_all()
    {
        $query = "SELECT * FROM articles ORDER BY id_article DESC";
        $result = mysql_query($query);
 
        if (!$result)
            die(mysql_error());
 
        // Извлечение из БД.
        $n = mysql_num_rows($result);
        $articles = array();
 
        for ($i = 0; $i < $n; $i++)
        {
            $row = mysql_fetch_assoc($result);
            $articles[] = $row;
        }
 
        return $articles;
    }
Получить 1 статью
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function get_one($id_article)
    {
        $id_art = mysql_escape_string ($id_article);
        $id = (int)$id_art;
 
        // Запрос.
        $query = "SELECT * FROM articles WHERE `id_article` = '".$id."'";
        $result = mysql_query($query);
 
        if (!$result)
            die(mysql_error());
 
        // Извлечение из БД.
        $articles = array();
        $row = mysql_fetch_assoc($result);
        $articles[] = $row;
 
        return $articles[0];
    }


Теперь обе функции делаю методами одного класса:
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
class Articles {
    protected $id_article; //ИД статьи
    protected $title; //Заголовок статьи
    public $content; //Текст статьи
 
    function __construct()
    {
    }
 
    public function get_all()
    {
        $query = "SELECT * FROM articles ORDER BY id_article DESC";
        $result = mysql_query($query);
 
        if (!$result)
            die(mysql_error());
 
        // Извлечение из БД.
        $n = mysql_num_rows($result);
        $articles = array();
 
        for ($i = 0; $i < $n; $i++)
        {
            $row = mysql_fetch_assoc($result);
            $articles[] = $row;
        }
 
        return $articles;
    }
 
    public function get_one($id_article)
    {
        $id_art = mysql_escape_string ($id_article);
        $id = (int)$id_art;
 
        // Запрос.
        $query = "SELECT * FROM articles WHERE `id_article` = '".$id."'";
        $result = mysql_query($query);
 
        if (!$result)
            die(mysql_error());
 
        // Извлечение из БД.
        $articles = array();
        $row = mysql_fetch_assoc($result);
        $articles[] = $row;
 
        return $articles[0];
    }


Проблема в следующем - не могу получить список всех статей.
Подключаюсь к БД, создаю класс, вызываю get_all - в нём NULL...

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
 
include_once('controller/C_Base.php');
include_once('controller/Articles.php');
 
//
// Конттроллер страницы чтения.
//
 
class C_View extends C_Base
{
    //
    // Конструктор.
    //
    function __construct()
    {
    }
 
    //
    // Виртуальный обработчик запроса.
    //
    protected function OnInput()
    {
        $articles = new Articles();
 
        parent::OnInput();
        $this->title = $this->title . ' :: Главная';
        $art = $articles->get_all;
        var_dump($art);
    }
Добавлено через 1 минуту
Да, за mysql вместо mysqli не ругайтесь - в курсе. Переделаю в ближайшее время)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.07.2016, 20:20
Ответы с готовыми решениями:

-ООП+ -MVC Выборка данных из БД
Всем привет! Столкнулся с проблемой логики))))Точнее с логикой проблемы у меня видимо)) Из названия темы видно, что я пытаюсь изучить... ...

Выборка без ключевых слов/Выборка без столбцов/Выборка с условием
Нужно сделать 2 типа выборки в отдельный столбец: #1 без ключевых слов типа &quot;АРБУЗ, ДЫНЯ&quot; #2 без данных содержащихся в трех...

Изучаю Python, сейчас учу основы ООП, где можно найти задачи по ООП
Скиньте пожалуйста источники с задачами(желательно на русском)

6
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
28.07.2016, 20:40
Лучший ответ Сообщение было отмечено Serj190492 как решение

Решение

Цитата Сообщение от Serj190492 Посмотреть сообщение
$articles->get_all
Скобки в конце забыли. Это ж функция метод.
1
 Аватар для Serj190492
160 / 159 / 59
Регистрация: 19.02.2015
Сообщений: 830
28.07.2016, 20:51  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
Скобки в конце забыли
Блин, большое человеческое) Совсем глаза от кода устали походу...)

Еще хотелось бы знать, корректно ли будет такое выражение $this->articles = $this->articles->get_all(); в этом коде?
Как-то смущает конструкция. Или нормально всё?)

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class C_View extends C_Base
{
    protected $articles;
    //
    // Конструктор.
    //
    function __construct()
    {
    }
 
    //
    // Виртуальный обработчик запроса.
    //
    protected function OnInput()
    {
        $this->articles = new Articles();
 
        parent::OnInput();
        $this->title = $this->title . ' :: Главная';
        $this->articles = $this->articles->get_all();
        var_dump($this->articles);
    }
 
    //
    // Виртуальный генератор HTML.
    //
    protected function OnOutput()
    {
        $vars = array('text' => $this->articles);
        $this->content = $this->Template('templates/v_view.php', $vars);
        parent::OnOutput();
    }
}
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
28.07.2016, 21:02
Serj190492, а зачем на 16-ой строке записывать в объект?
PHP
1
2
$articles = new Articles();
$this->articles = $articles->get_all();
1
 Аватар для Serj190492
160 / 159 / 59
Регистрация: 19.02.2015
Сообщений: 830
28.07.2016, 21:06  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
а зачем на 16-ой строке записывать в объект?
По какой логике я действовал:
Чтобы воспользоваться методом класса - нужно создать объект этого класса, т.е.
PHP
1
$articles = new Articles();
И уже после этого можно использовать
PHP
1
$articles->get_all();
В каком месте я не понял ООП?)
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
28.07.2016, 21:55
Serj190492, всё верно, я о другом. На 16-ой строке не нужен $this. Под объектом имел ввиду текущий объект, т.е. C_View.
1
 Аватар для Serj190492
160 / 159 / 59
Регистрация: 19.02.2015
Сообщений: 830
28.07.2016, 22:15  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
всё верно, я о другом
Всё, догнал) Большое спасибо за разъяснения!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.07.2016, 22:15
Помогаю со студенческими работами здесь

Выборка уникальных записей с максимальными датами, и затем выборка по найденому
Как вообще такой запрос лучше составить? У меня есть таблица User(id) и Message( id, fromUserId, toUserId, sendDate). Мне нужно...

Выборка задолженностей по таблице (выборка строк с пустыми ячейкам даты оплаты) для отчета
Имеется таблица учета продаж, в ней нужно сделать выборку по дате оплаты для ежемесячного отчета. То есть, вначале ввести дату начала...

Выборка из Combobox, причем выборка должна быть частичной
Добрый день. Подскажите пожалуйста как реализовать такого рода задачу: Есть 4 Combobox, в каждом Combobox по 10-ть записей, при...

Выборка из таблици товаров по самому максимальному рейтингу магазина, рейтинг мазаницов если есть одиноковые, выборка уже по минимальной цене
Всем привет, нужна помошь. Имеется следующая таблица товаров Таблица: products её колонки products_id - идентификатор...

ООП ради ООП
Доброго времени суток! Есть к примеру класс Cat который реализует интерфейс Movable, инкапсулирует цвет, и прочее. Имеет ли смысл...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru