Блог старого компьютера

Блог старого компьютера


Главная Joomla Как правильно работать с базами данных в Joomla

Как правильно работать с базами данных в Joomla

09.12.2012 10:44 Администратор Joomla
Печать PDF

Многие люди которые строят свои сайты на joomla рано или поздно сталкиваются с необходимостью совершить тот или иной запрос к базе данных. Но не все новички делают это правильно. Кто то просто самым обычным методом обращается к базе даннх не используя встроенных в Joomla функций для работы с базами данных. И это конечно же не правильно. Если мы разрабатываем код по Joomla то и должны использовать ее методы, так как они существенно безопаснее, и более гибкие. Ведь вы наверняка приходя на работу не тащите свои инструменты (функции) из гаража и работаете теми инструментами (функциями) которые вам предоставил работодатель (среда разработчки).

Почему я решил написать эту статью? Я как и многие для экномии времении своих разработок использовал стандартыне php функции для работы с базой данных. Но однажды я себе сказал хватит, нужно один раз прочитать запомнить и не позорясь использовать в своих разработках на joomla ее же методы и классы, а не плодить очередной говно код.

 Давайте представим картину что вы написали замечательный компонент и выложили его в интернет, но в его коде вы не использовали встроенных методов для работы с базами данных joomla. Человек у которого joomla использует в качестве базы данных MySQLi (кстати она имеет ряд преимуществ), а не MySQL установив ваш замечательный компонент столкнется с ошибками, и тут его постигнет разочарование. Надо оно вам? Думаю нет.

Сложного в работе с базами joomla ничего нету. Для начала поясню методы класса для работы с базами данных:

  • setQuery - метод служит для замены #__ на префикс который указан в файле configuration.php
  • query - метод исполнения запроса который не возвращает ни каких данных (удобно использовать для удаления). 
  • loadObjectList - метод для выборки массива объекта  представляющих собой наследники stdClass
  • loadResultArray - метод для загрузки результатов в массив
  • loadResult - метод для загрузки одного результата

Все эти методы очень легко запомнить благодаря их названию (они все переводятся на русский).

Рассмотрим на небольшом примере чтоб было понятнее (loadResult):

$database =& JFactory::getDBO();
$database->setQuery("SELECT alias FROM #__content WHERE id='1'");
$alias = $database->loadResult();
echo $alias;

Пример который я привел выше, делает запрос в базу sdf345e5_content и получает алиас материала с id равным 1. Первая строка в коде является обязательной если мы собираемся работать с базами данных. Она получает доступ к глобальному объекту для работы с базами данных. Хм, только что заметил что ознакомление я вам даю с конца, ну да ладно ничего страшного.

 loadResultArray:

$database =& JFactory::getDBO();
$database->setQuery("SELECT title FROM #__content ");
$result = $database->loadResultArray();
print_r($result); 

 Код написанный выше вернет нам массив который содержит заголовки всех материалов в таблице.

 loadObjectList:

$database =& JFactory::getDBO();
$database->setQuery("SELECT id, title, alias FROM #__content ");
$list = $database->loadObjectList();
$html ='<table border="1"><tr><td>ID</td><td>TITLE</td><td>ALIAS</td></tr>';
foreach($list as $data) {
$html .= '<tr><td>'.$data->id.'</td><td>'.$data->title.'</td><td>'.$data->alias.'</td><td></tr>';
}
$html .= '</table>';
echo $html; 

 Выше я показал код с помощью которого удобно выводить данные из базы данных в html таблицу с использованием метода loadObjectList. Чтоб достучаться до какой то одной ячейки  пишем такую строчку:

echo $list[0]->alias;

 Конечно для данной цели нужно использовать метод loadResult, ну а вдруг вам перед циклом нужно проверить содержит ли ячейка нужные вам данные ради которой вы и запускали цикл.

 query (пример представленный ниже не запускайте, он может уничтожить нужную вам статью):

$database =& JFactory::getDBO();
$database->setQuery("DELETE FROM #__content WHERE id='1'");
$database->query();

 Как я уже говорил с помощью данного метода удобно удалять данные из таблицы. Данный пример удаляет материал из таблицы с id равным 1.

Вот вроде и все. Пусть вы и новичек, но старайтесь писать свой код грамотно, и красиво.

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


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

Поиск

Голосование

Что Вы думаете на счет битрикса?
 

Все материалы раздела