Главная

Работа с базой данных из joomla

09.04.2012 09:37

   Рассмотрим пример как joomla взаимодействует с базой данных и что при этом используется!

   1. Создается объект который полностью оснащен всеми нужными нам функциями для работы с базой данных и имя ему JFactory::getDBO (пример $db = JFactory::getDBO;);

   2. Формируется SQL запрос (обычно это делают в переменной, пример: $query = "SELECT * FROM #__content");

   3. Делаем запрос в базу данных при помощи спец. функции которую вкл. наш объект - setQuery() (пример: $db->setQuery($query));

   4. Выгружаем результат работы запроса при помощи спец. функций: loadResult(), loadAssoc(), loadAssocList(), loadObject(), loadObjectList(), getNumRows();

   Подробнее про эти функции:

    - $db->loadResult() - возвращает строку

   Пример работы:

$db = JFactory::getDBO;
$query = "SELECT title FROM #__content WHERE id='1'";
$db->setQuery($query);
$result = $db->loadResult();
echo $result;

    - $db->loadAssoc() - возвращает первую запись таблици в виде ассоциативного масива, к элементам массива можно обращаться просто как к в обычном массиве то есть $array['key'], где key - это ключ элемента массива. К слову, существует удобный плагин для браузера "Опера" он предназначен для разработчиков приложений и в нем можно быстро протестировать любой SQL запрос, а Опера на русском живёт здесь.

   Пример работы:

$db = JFactory::getDBO;
$query = "SELECT * FROM #__content";
$db->setQuery($query);
$result = $db->loadAssoc();
var_dump($result);
echo $result['id'];

    - $db->loadAssocList() - возвращает все записи в таблице в виде массива ассоциативных масива.

   Пример работы:

$db = JFactory::getDBO;
$query = "SELECT * FROM #__content";
$db->setQuery($query);
$result = $db->loadAssocList();
var_dump($result);
$result_1 = $result[0];
echo $result_1['id'];

    - $db->loadObject() - возвращает первую запись в таблице в виде объекта, к элементам объекта можно обратиться таким способом $result->key, где key - это ключ элемента.

   Пример работы:

$db = JFactory::getDBO;
$query = "SELECT * FROM #__content";
$db->setQuery($query);
$result = $db->loadObject();
var_dump($result);
echo $result->id;

    - $db->loadObject() - возвращает первую запись в таблице в виде объекта, к элементам объекта можно обратиться таким способом $result->key, где key - это ключ элемента.

   Пример работы:

$db = JFactory::getDBO;
$query = "SELECT * FROM #__content";
$db->setQuery($query);
$result = $db->loadObject();
var_dump($result);
echo $result->id;

    - $db->loadObjectList() - возвращает все записи в таблице в виде массива с объектами.

   Пример работы:

$db = JFactory::getDBO;
$query = "SELECT * FROM #__content";
$db->setQuery($query);
$result = $db->loadObjectList();
$result_1 = $result[0];
echo $result_1->id;

    - $db->getNumRows() - возвращает количество записей в таблице при выполнение запроса выборки SELECT.

   Пример работы:

$db = JFactory::getDBO;
$query = "SELECT * FROM #__content";
$db->setQuery($query);
$result = $db->loadObjectList();
echo $result;

Twitter
Нравится
SocButtons v1.4
 

Комментарии 

 
# Михаил 09.04.2012 11:22
Спасибо, очень полезно знать, а то в документации joomla не все по "человечески" написано!
Ответить | Ответить с цитатой | Цитировать
 
 
# xaocbozzz 12.07.2012 07:14
А для VM можете отписать?
Ответить | Ответить с цитатой | Цитировать
 
 
# Roket007 12.07.2012 19:17
Для какой версии joomla?
Ответить | Ответить с цитатой | Цитировать
 
 
# Андрей 19.12.2013 06:50
ВАЖНО! не $db = JFactory::getDB O; а $db = JFactory::getDB O();
Ответить | Ответить с цитатой | Цитировать
 
 
# Александр 27.01.2014 09:41
Уважаемый автор! Скажите, как перенести в joomla3 пункты меню из HTML-файла? Т.е. есть Html файл с набором вида . Ищу информацию в интернете уже в течении недели - но ничего не нашел. Проблема в том что мое меню имеет 5 вложенностей, где в итоге получается 7000 категории с подкатегориями в сумме. Pуками заносить все эти пункты меню в Joomla просто не реально))) Подскажите пожалуйста выход! Вот сайт chinainua.com
Спасибо!
Ответить | Ответить с цитатой | Цитировать
 
 
# YandexGovno 04.03.2014 14:39
Цитирую Александр:
Уважаемый автор! Скажите, как перенести в joomla3 пункты меню из HTML-файла? Т.е. есть Html файл с набором вида . Ищу информацию в интернете уже в течении недели - но ничего не нашел. Проблема в том что мое меню имеет 5 вложенностей, где в итоге получается 7000 категории с подкатегориями в сумме. Pуками заносить все эти пункты меню в Joomla просто не реально))) Подскажите пожалуйста выход! Вот сайт chinainua.com
Спасибо!

Да звездец комик, 2 раза бы перенести ручками успел бы =)
Ответить | Ответить с цитатой | Цитировать
 
 
# Александр 27.01.2014 09:43
меню вида ul li li ul
Ответить | Ответить с цитатой | Цитировать
 
 
# Roket007 02.02.2014 11:17
Ну смотрите вы можете с помощью регулярного выражения пропарсить свой HTML файл и соответственно создать sql запрос. Если сами не можете написать регулярное выражение то сбросьте мне на почту roket007@yandex .ru сам HTML файл и дамп таблицы для меню в joomla я попробую вам помочь.
Ответить | Ответить с цитатой | Цитировать
 
 
# Александр 15.12.2014 10:08
Есть проблема не могу получить данные из базы.
То есть не могу вывести данные из базы на страницу сайта.
Вот код скрипта:


А на странице сайта получаю вот такой ответ:

setQuery($ww); $result = $db->loadObjectList( ); echo $result; ?>

Что не так?
Ответить | Ответить с цитатой | Цитировать
 
 
# Александр 15.12.2014 10:09
Вот код скрипта
$db = JFactory::getDB O();
$query = SELECT * FROM 'bak_mat_users';
$db->setQuery($query );
$result = $db->loadObjectList( );
echo $result;
Ответить | Ответить с цитатой | Цитировать
 
 
# Александр 15.12.2014 14:04
ой точнее так, на странице сайта получаю вот такой ответ:

setQuery($query ); $result = $db->loadObjectList( ); echo $result; ?>

Что не так?
Ответить | Ответить с цитатой | Цитировать
 

Добавить комментарий


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