Хостинг для Joomla:

Помощь сайту

Понравился сайт? Внесите вклад в его развитие, пожертвовав любую сумму на один из кошельков:

ВебМаниZ417310586352
R397827462806

СМСSMS (от 5 руб.)

Деньги пойдут на оплату хостинга и на развитие сайта.
В примечании к платежу укажите Ваш email и Имя.

Администрация сайта.

Home Уроки Программирование joomla Урок 4. Использование Базы Данных (Основы программирования для Joomla 1.5)
Урок 4. Использование Базы Данных (Основы программирования для Joomla 1.5) PDF Печать

В предыдущих двух уроках мы научились строить простой model-view-controller компонент. В итоге в нашем компоненте есть одно Представление ( view ), которое получает данные от Модели. В этом уроке мы вместо данных, содержащихся в коде модели, модель будет брать данные из Базы Данных. Также Вы узнаете, как пользоваться классом JDatabase для работы с базой данных.

Наша модель в сейчас имеет один метод: getGreeting(). Все, что эта функция делает - возвращение жестко-закодированное приветствие "Hello World!".

Для работы с базой данных, загрузим приветствие в таблицу базы данных.

При установке компонента необходимо создание таблицы с записью текстового поля с приветствием. Как создать SQL файл, и какие строки добавить в hello.xml, рассмотрим позже.

Для начала заменим код в Модели для получения приветствия с таблицы базы данных.

Сначала нужно подключится к базе данных (БД). В Joomla 1.5 все параметры для подключения уже есть и для того чтобы создать свое подключение используем следующее:

$db => JFactory::getDBO();

JFactory – это статический класс, который используется для подключения к многим объектам системы Joomla. Подробней информацию об этом классе можно посмотреть в документации API на сайте разработчиков Joomla.

Для подключенич к Базе данных используется метод getDBO.

С помощью этой ссылки  на объект базы данных мы можем получить наши данные. Делается это в два этапа:

  • сохранение нашего запроса в классе БД
  • загрузка результата

Для этого вносим изменение для Модели в функции getGreeting(), которая находится в файле component/model/models/hello.php:

function getGreeting()
{
   $db =& JFactory::getDBO();
 
   $query = 'SELECT greeting FROM #__hello';
   $db->setQuery( $query );
   $greeting = $db->loadResult();
 
   return $greeting;
}

 

Здесь hello - это имя таблицы в базе данных, которую мы создадим позже, а greeting - это имя поля в таблице. Если Вы не знакомы с SQL, то вам нужно почитать руководство по нему. Хорошим руководством на примерах есть видео-курс «PHP+MySQL для начинающих», подробно ознакомится и купить который можно по ссылке: http://joomla-master.com/phpmysql.htm.

Метод $db->loadResult выполняет сохраненный запрос базы данных и возвратит первое поле первой строки результата.

Создание установочного SQL файла

Установщик расширений в Joomla поддерживает выполнение SQL запросов во время установки компонента. Все запросы могут быть записаны в обычный текстовый файл. Это упрощает работу с Joomla, потому что нет нужды редактировать в ручную Базу данных.

В нашем файле установки будут три запроса:

  • удаление таблицы, если она уже существует
  • создание таблицы с необходимыми полями
  • вставка данных (строки приветствия).

Вот наши запросы:

DROP TABLE IF EXISTS `#__hello`;
 
CREATE TABLE `#__hello` (
  `id` int(11) NOT NULL auto_increment,
  `greeting` varchar(25) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
 
INSERT INTO `#__hello` (`greeting`) VALUES ('Hello, World!'),
('Bonjour, Monde!'),
('Ciao, Mondo!');

Joomla сама заменит "#__ " на префикс таблицы текущей базы данных MySQL. По-умолчанию, таблица будет названа jos_hello. Joomla позволяет использовать одну базу данных при работе с несколькими установками Joomla, и при этом избежать ошибок при одинаковых именах таблиц.

В первом запросе уничтожается таблица #__hello, это необходима для того, чтобы не было накладок при повторных установках одного и тоже компонента.

По второму запросу создается два поля в таблице. Первое поле - это id. Оно называется ключевым (primary key). Ключевое поле используется для уникальной идентификации записи. Оно часто используется для поиска строк в БД. Другое поле - это greeting. Это поле хранит текст приветствия.

Сохраняем эти запросы в файл install.sql и переносим этот файл в дистрибутив компонента по пути - com_hello/admin/install.sql.

Создание SQL файла удаления

При деинсталляции компонента необходимо удалять таблицы, которые были созданы установкой данного компонента. Система Joomla сама удалит файлы и каталоги, которые были созданы во время установки, но Вы должны вручную включить запросы, которые удалят и таблицы, которые были добавлены к базе данных. Поскольку у нас только одна таблица, нам потребуется запрос:

DROP TABLE IF EXISTS `#__hello`;

Сохраняем эти запросы в файле uninstall.sql и переносим его в дистрибутив компонента по пути - com_hello/admin/uninstall.sql.

Заносим дополнение в файл установки hello.xml

В файле hello.xml нужно добавить наши два новых файла в список установки. Файлы SQL должны находиться в папке admin.

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

Наш новый файл hello.xml выглядит так:

<?xml version="1.0" encoding="utf-8"?>


   Hello
   
   29.02.2008
   Kotofeich
   
   http://www.example.org
   Copyright Info
   License Info
   
   Component Version String
   
   Description of the component ...
 
   
   
      index.html
      hello.php
      controller.php
      views/index.html
      views/hello/index.html
      views/hello/view.html.php
      views/hello/tmpl/index.html
      views/hello/tmpl/default.php
      models/hello.php
   
   
      
         install.sql
      
   
   
      
         uninstall.sql
      
      
   
      
      Hello World!
 
      
      
      
   
         index.html
         admin.hello.php
         install.sql
         uninstall.sql
            
   



Обратите внимание на атрибуты в тэге <file> в разделах <install> и <uninstall>. Это charset и driver. Charset - это тип используемой кодировки. Для Joomla рекомендуется использовать только utf8. Если вы хотите создать файл установки другой кодировки (для старых версий MySQL), вы должны изменить этот атрибут. Атрибут driver определяет, для какой базы данных были написаны запросы. В настоящее время, это может быть только mysql, но в будущих версиях Joomla может быть больше доступных драйверов базы данных.

Теперь наш компонент может работать не только с MVC framework классами, но и с классами запросов JDatabase для работы с базой данных.

Архив исходных файлов для этого урока можно скачать по этой ссылке:
http://joomla-master.com/com_hello_4.zip


Предыдущие уроки по Основах программирования для Joomla 1.5:

Введение

Урок 1. Основы функционирования Joomla 1.5

Урок 2. Создание простейшего компонента для Joomla 1.5

Урок 3. Добавление Модели

 

 
 JOOMLA MASTER; WEB Хостинг