Создаем компонент «Моя доска объявлений» - II

joomla компоненты

Работа компонента с базой данных

Шаг шестой. Доступ к базе данных.

Итак, на пятом шаге мы создали структуру нашего компонента. Теперь нужно написать каждый из шести наших обработчиков (Почему из шести? Объясняю: 1- реакия на нажатие пункта меню Наша доска; 2 – отображение основной страницы компонента по умолчанию, т.е. реакция на нажатие подменю пункта Наша доска -> Просмотр и удаление объявлений, 3 – Реакция на нажатие кнопки Редактировать (отображение страницы редактирования объявления); 4 – Реакция на нажатие кнопки Закрыть (отмена редактирования сообщения и возврат к главной странице); 5 – Реакция на нажатие кнопки Удалить; 6 – Реакция на нажатие кнопки Сохранить.)

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

Мы поступим следующим образом (для того, чтобы лучше разобраться в возможностях): сначала, напишем обработчики для каждого события компонента, вставляя их в созданную нами структуру; потом учитывая то, что некоторые части повторяются попробуем оптимизировать код администраторской части компонента. В итоге у нас должно получится 2 работоспособных варианта компонента.

Каждый начинающий создатель компонентов сам решит, какой вариант разработки ему нравится больше.

Перед тем как начать непосредственно программировать, рассмотрим основные моменты доступа к базам данных (с помощью встроенных средств Joomla).

Рассматривать буду Joomla 1.0.13 (поэтому гарантировать что описанные мной классы, методы и свойства присутствуют и в следующих версиях не могу, хотя вероятно они вряд ли кардинально изменились).

Для работы с базами данных в Joomla присутствует библиотека ../includes/database.php.

Если вам интересно откройте этот файл и внимательно рассмотрите. В нем описано 2 класса: database и mosDBTable.

Рассмотрим первый из них. Он имеет довольно много свойств и методов, но рассмотрим только те, которые нам пригодятся, а именно: для выполнения запросов к базе данных (выборка и запись информации).

Итак чтобы выполнить какой либо запрос нужно выполнить последовательность следующих действий (команд и .т.д):

$database->setQuery(<запрос>);
$database->query();

Запрос может быть следующих видов:
“select * from jos_user”
“select * from #__users”

Использование комбинации символов #__ вместо префикса таблиц позволяет использовать компонент с разными базами данных joomla (отличающимся префиксом таблиц). В процессе выполнения функции setQuery, #__ заменяется на текущий префикс. Поэтому предпочтительнее использовать второй вид запросов.

Функция query возвращает истину если запрос удачен, и ложь в остальных случаях. Для того чтобы возвратить результат запроса нужно выполнить одну из перечисленных функций (заменив на нее $database->query();). Допустим результат должен быть помещен в переменную $result.

Если мы хотим поместить в переменную массив, состоящий из значений какого-то одного поля таблицы, используем:

loadResultArray(<номер поля >);

Поля нумеруются с нуля, если значение параметра функции не указано, то по умолчанию считается равным нулю)

Если результат должен быть получен виде ассоциативного массива, используем:

loadAssocList();

Также существует еще несколько функции расширяющих возможности по обработке результатов запроса. Сейчас не будем акцентировать на них свое внимание.

Попробуем применить полученные знания на практике. Для этого сделаем так чтобы при нажатии на пункт меню нашего компонента «Просмотр и удаление объявлений» появлялся список имен пользователей зарегистрированных в системе.

Открываем файл admin.mybord.php и вставляем вместо строчки

echo 'Отображение компонента по умолчанию';

следующий код:

$query = 'select * from `#__users`';
$database->setQuery($query);
$result = $database->loadResultArray(1);
for ($i=0;$i<count($result);$i++)
{
echo($result[$i]."<br>");
}

Или этот (отличаются они только реализацией обхода результирующего массива)

$query = 'select * from `#__users`';
$database->setQuery($query);
$result = $database->loadResultArray(1);
foreach ($result as $row)
{
echo($row."<br>");
}

Теперь как и в предыдущих шагах архивируем файлы компонента и устанавливаем. Смотрим что получилось. В дальнейшем для того чтобы изменить компонент мы не будем удалять его, менять и снова устанавливать.

Поступать будем так: заходим на сервере (локальном или удаленном, удобнее конечно разрабатывать на локальном, например Denwer)

если редактируем часть администратора, то ../administrator/components/com_myboard (в нашем случае!!!)

если редактируем frontend, то ../components/com_myboard

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

Попробуйте обязательно выполнить какой-нибудь запрос с помощью функции query(); Например создайте таблицу #__proba с любыми полями.

У меня получилось вот что:

$query = 'CREATE TABLE `proba` (
`id_proba` INT NOT NULL AUTO_INCREMENT ,
`proba` TEXT NOT NULL ,
PRIMARY KEY ( `id_proba` )
);';
$database->setQuery($query);
if ($database->query())
{
echo('Таблица успешно создана!');
}

На следующем шаге мы рассмотрим основы SQL запросов.


Источник: http://joomlaforum.org

Добавить комментарий:
Имя:
E-mail:
2021 © Обсуждение Joomla и других CMS-систем управления сайтами  Правила | О проекте | Обратная связь