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

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

Индекс материала
Создаем компонент «Моя доска объявлений» - II
Учимся делать запросы в БД
Реакция на нажатие кнопок
Оптимизация кода
Редактирование сообщений
Все страницы
Продолжение статьи "Создаем компонент "Моя доска объявлений"- I

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

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

Итак, на пятом шаге мы создали структуру нашего компонента. Теперь нужно написать каждый из шести наших обработчиков (Почему из шести? Объясняю: 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 запросов.



Комментарии  

Коммент от
Июл 11, 2009
Комментатор
Alika
0 ???? Не работают ссылки на следующие части статьи:
- Создание пустых файлов
- Редактирование файла myboard.xml
- Панель управления компонентом
- Все страницы

Не, ну я так не играю :sad:
система ругается и говорит, что нету-ть продолжения у статей. Может лучшн не разбивать их на страницы, а выложить просто разными частями?
Коммент от
Июл 12, 2009
Комментатор
Aleks_El_Dia
0 Починил ссылки. Дело было в одном непроверенном плагине (каюсь, не протестировал перед установкой). Продолжения работают, читайте на здоровье :-)
Коммент от
Июл 12, 2009
Комментатор
Alika
0 Спасибо! Сейчас же все и прочту :-)

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

Защитный код
Обновить

Популярные файлы

1.
Компонент Миграции с Joomla! 1.0.x на Joomla! 1.5.x
3023
2.
Хак постраничной навигации сайта на CMS Joomla! 1.0
1638
3.
rt-reaction
814

Последние комментарии

  • Темный шаблон то что надо. Респект! Подробнее..
    От Dunko
  • Но я вам точно могу сказать, что человек, сделавш... Подробнее..
    От Ломалкин
  • Обновлять нужно и саму Джумлу и те модули, которы... Подробнее..
    От Ломалкин
. Грузоперевозки грузы - погрузчик цена - Воздушные фильтры, тут www.cargotech.com.ua. . Купить китайский iphone копия