четверг, 29 ноября 2012 г.

Всем привет!
Я продолжаю описывать возникающие проблемы в личных пробелах программирования и сегодня решал как выполнить запрос в базу данных Joomla для реализации автоподстановки во время регистрации в фронтэнде городов, которые администратор занес в бэкэнде и сохранил в базу данных.


Чтобы выполнить такой запрос нам нужно подключиться к базе данных Joomla. У Joomla есть стандартные методы для подключения, все параметры для подключения уже имеются и для того чтобы выполнить подключение используем следующее:

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

Для подключения к базе данных joomla используется метод getDBO. С помощью данного метода, мы можем выполнить любые запросы в базу данных начиная с созданием таблиц оканчивая удалением всего сайта Joomla.

Давайте рассмотрим простой запрос:
function getCityList(){
$db = & JFactory::getDBO(); 
 $query = "SELECT 101_text FROM #__auto_dictionary_125 ORDER BY 101_text ASC"; 
$db->setQuery($query); 
 return $db->loadResultArray (); 
}

Рассмотри подробнее что написано в функции  getCityList():
1) переменной $db присваиваем метод получения объекта базы данных при помощи стандартного класса Joomla.
$query - создаем строковый запрос, в котором мы выбираем(SELECT) колонку (101_text) из (FROM) нашей таблицы (#__auto_dictionary_125) и сортирует (ORDER BY) по нашей же колонке  (101_text) по возрастанию (ASC);
2) затем присваиваем $db результат запроса;
3) возвращаем наш результат как массив значений;


Пояснения:

Префикс таблиц в Joomla.


Joomla изначально создавалась для учета реальных требований хостинга и в ней заложен функционал доступа к таблицам, согласно их префиксу.
Что это значит? Если ваш тарифный план на хостинге дает вам возможность использовать только одну базу данных, а вам надо поставить, например две и больше Joomla или какой-либо дополнительный скрипт, названия таблиц которого совпадают с некоторыми таблицами в Joomla, то это можно реализовать при помощи префикса таблиц.

Сам префикс задается еще при установке и чаще всего представляет собой нечто вроде “jos_” (JOS расшифровывается как Joomla Open Source) и записывается в файл конфигурации Joomla - configuration.php.

Поэтому удобно и просто использовать механизм, встроенный в Joomla, а именно подстановку вместо префикса базы данных #__ (знак решетки и два подчеркивания). В классе database данный символ будет заменен на текущий префикс таблиц, с которым работает Joomla. Например, если при установке вы оставили префикс пустым, то он и будет заменен на пустую строку, и названия таблиц будут самыми читабельными: users, session.

Мы использовали два метода класса database. Ниже я привожу описание методов класса database, которые значительно упрощают работу с базой в Joomla.
setQuery - один из самых часто используемых методов. Нужен для того, что бы объект записал запрос в свою внутреннюю переменную и заменил префикс на тот, который записан в файле конфигурации.
query - используется для исполнения запроса, не возвращающего никаких данных. Например, вставки или удаления строк из таблицы по некоторому условию.
loadObjectList - используется для выборки массива объектов представляющих собой наследники stdClass с именами полей совпадающих с именами столбцов в таблице.
loadResultArray - загрузка массива результатов. Удобно при выборке одной колонки, а не нескольких.
loadResult - загрузка одного поля. Т.е. мы знаем что результат будет только один.

#__auto_dictionary_125 - имя таблицы базы данных с префиксом #, Joomla сама заменит "#__ " на префикс таблицы текущей базы данных MySQL. 

Комментариев нет:

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