Вывод данных из базы данных

Автор: Илья Остапенко /

Продолжаем обучение создания компонента Joomla. Этот урок называеться "вывод данных из базы данных", следовательно, нам нужно создать таблицу в базе данных, для нашего компонента.

вывод данных из базы данных

Вообще, по уму, таблицу надо создавать сразу с установкой компонента, но я решил с самого начала не загружать вас большим объемом информации и в уроке «создание основы компонента» оставить, только установочный файл. Мы создадим таблицу компонента, а так же отобразим из неё данные в бэкэнде (админке). Ну что поехали?

 

Создание таблицы в базе данных

Итак, для начала войдите в свою базу данных, с помощью программы phpmyadmin, обычно именно она установлена на всех хостингах. После авторизации, перед вами появятся список таблиц в вашей базе данных. В самом верху будет вкладка “SQL” нажмите на неё и перед вами появиться поле для ввода sql запроса, с помощью которого мы сейчас создадим таблицу для компонента.

Это называется sql запрос.  Если уже работали с такими запросами, то вам все строчки должны быть понятны, если нет, то сейчас я все объясню.

CREATE TABLE #__lesson - Другими словами Создать таблицу ‘префикс БД__название таблицы’

 

Дальше идут перечисления ячеек и их тип (name  CHAR(30)), объясню на примере:

name  –  название ячейки;

CHAR(30) –  Ячейка будет содержать строку длинной до 30 символов для одного поля. Значение 30 можно изменить на любое до 254.

 

Дальнейшие строчки точно такие же, кроме двух последних:

PRIMARY KEY (id)  - Указывает что ячейка id будет уникальным номером. Такая ячейка должна быть в каждой таблице;

TYPE=MyISAM – тип таблицы MyISAM. Не буду описывать, что значит MyISAM, ибо в данном случае это не важно.

 

Как и говорил все это должно устанавливаться вместе с установкой компонента, следовательно, стоит сохранить этот код в отдельном файле и прописать этот файл в установочном файле компонента.  Для этого, необходимо в самом начале, в папке admin создать файл с названием install.mysql.utf8.sql и разместить в нем вышенаписанный код.

Если вы будите создавать таблицу через phpmyadmin, то замените символ # на префикс вашей базы данных. Так же нужно изменит установочный файл компонента, добавив в него вот такой фрагмент:

Для работы с нашей базой данных, необходимо создать файл с классом Jtable, который позволит выполнить все основные функции по работе с таблицей.  Для этого, в папкеadministrator/com_название компонента (у меня administrator/com_lesson) создайте папку tables, а в ней файл с названием lesson.php. В нем должен находиться следующий код:

Сейчас я объясню, что же значит этот код. Мы создали класс TableLesson который будет, так сказать, улучшать класс JTable. Мы добавили поля нашей таблицы, как свойства класса. Так же создали функцию construct() которая вызовет конструктор родительского класса и будет передавать имя таблицы, первичный ключ, а так же коннектор для базы данных.

parent::__construct('#__lesson', 'id', $db) – конструктор(‘таблица’, ’первичный ключ’, ’коннектор’)

Для того чтобы, Joomla знала где ей найти классы JTable, нужно задать ей путь поиска в главном файле бэкэнда admin.название компонента.php (admin.lesson.php). Добавьте эту строчку сразу после объявления контроллера.

Таблица для нашего компонента создана, теперь давайте выведем её в админке нашего компонента. Да, выводить, пока что нечего, но если в таблице нет данных, то в админке так и должно быть написано.

 

Отображение данных в админке компонента

Чтобы отобразить данные таблицы нам придется, изменит модель и вид в админке компонента. Начнем с изменения модели. Новый код модели будет выглядеть так:

Создаем приватную функцию $_teach для кэширования списка заданий. Далее создали функцию getTeach с условием в котором происходит отбор данных из таблицы. Сейчас подробно опишу каждую строчку:

Переменной  $query присваивается sql запрос.  Данную строчку можно описать так‘ВЫБРАТЬ  все ячейки’.’ИЗ’.’таблицы lesson’.

В базу данных отправляется запрос с помощью метода setQuery() сам запрос берется из переменной $query. Главное запомнить, что метод setQuery(), только устанавливает запрос, а не извлекает данные. Сделанный запрос записывается в свойство  $this->_db.

Далее если запрос установлен, то извлекаем из него данные. В свойство $this->_dbзагружаем данные методом loadObjectList(). А свойству $this->_teach присваиваем свойство $this->_db в котором загружены данные из таблицы.

Условие выполнено. Теперь возвращаемся к свойству $this->_teach.

Теперь данные из базы данных получены, осталось их вывести в админке компонента, для этого нам придется изменить его вид. Для начала изменим файл управления данными, то есть view.html.php.

Как видите, файл управления не сильно изменился, добавилось всего две  новых строки.

Переменной $rows присваивается полученный список заданий из модели. А модель, как мы уже знаем, получила его из базы данных.

Данная строка присваивает полученный список виду. Ничего нового подобное я описывал ранее.

Теперь нужно красиво отобразить информацию, для этого, как вы уже знаете нужно изменить файл default.php который находиться в папке tmpl.

В принципе, тут, пока что нечего описывать, в основном тут один html, а если вы читаете данные уроки, то соответственно должны знать, хотя бы основы html.  От PHP, условие, которое будет выводить строку «Пока уроков нет», если в нашей таблице нет ни одного урока. Так же, переменные ячеек таблицы, из tables/lesson.php которые приравниваются к полям таблицы базы данных.

Ну вот и все, вроде я ничего не забыл! Если вы все сделали правильно, то в админке вашего компонента отобразится строка "Пока уроков нет", так как в нашей таблице, ещё пока что нет записей, следовательно вывод данных из базы данных произведен успешно. В следующем уроке мы будем добавлять данные в базу данных, это так же и будет темой следующей статьи.

Если вы нашли ошибку, то обязательно напишите мне о ней в комментариях. Так же если у вас появился вопрос, оставляйте его так же в комментарии. Если вам понравилась эта статья, то ставьте лайк! Обновленные файлы админки компонента вы можете скачать во вложении, они находиться внизу сразу под тегами.

P.S.: Если все файлы, кроме создания таблицы в БД, скопировать в файлы фронтэнда, то есть в папку components/com_lesson, то все тоже самое будет выводиться во фронтэнде.

 

Поисковая оптимизация сайтов - это важный этап в раскрутке вашего сайта. Качественная поисковая оптимизация принесет на ваш сайт много трафика, а так же поспособствует повышению пузомериков сайта. Больше об этом вы сможете узнать на сайте seouniver.ru
Скачать файлы компонента можно по ссылке ниже
com_lesson_2

Оставить комментарий

Это не спам.