| Урок 4. Использование Базы Данных (Основы программирования для Joomla 1.5) |
|
|
|
В предыдущих двух уроках мы научились строить простой 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, это необходима для того, чтобы не было накладок при повторных установках одного и тоже компонента. Сохраняем эти запросы в файл install.sql и переносим этот файл в дистрибутив компонента по пути - com_hello/admin/install.sql. Создание SQL файла удаленияПри деинсталляции компонента необходимо удалять таблицы, которые были созданы установкой данного компонента. Система Joomla сама удалит файлы и каталоги, которые были созданы во время установки, но Вы должны вручную включить запросы, которые удалят и таблицы, которые были добавлены к базе данных. Поскольку у нас только одна таблица, нам потребуется запрос: DROP TABLE IF EXISTS `#__hello`; Заносим дополнение в файл установки hello.xmlВ файле hello.xml нужно добавить наши два новых файла в список установки. Файлы SQL должны находиться в папке admin. Также нам нужно сказать установщику, чтобы он запустил запросы при установке и удалении компонента. Наш новый файл hello.xml выглядит так: <?xml version="1.0" encoding="utf-8"?> Обратите внимание на атрибуты в тэге <file> в разделах <install> и <uninstall>. Это charset и driver. Charset - это тип используемой кодировки. Для Joomla рекомендуется использовать только utf8. Если вы хотите создать файл установки другой кодировки (для старых версий MySQL), вы должны изменить этот атрибут. Атрибут driver определяет, для какой базы данных были написаны запросы. В настоящее время, это может быть только mysql, но в будущих версиях Joomla может быть больше доступных драйверов базы данных. Архив исходных файлов для этого урока можно скачать по этой ссылке: Предыдущие уроки по Основах программирования для Joomla 1.5: Урок 1. Основы функционирования Joomla 1.5 Урок 2. Создание простейшего компонента для Joomla 1.5
|

Z417310586352

