FL.ru – фриланс сайт удаленной работы №1. Поиск удаленной работы, фрилансеры.

Работаем с базой данных (БД) на Joomla 1.5.x

Категории: Joomla

1. Как безопасно вставить данные в Joomla 1.5.x

Любые изменения в базе данных любого CMS требуют безопасного подхода, поэтому для предохранения от проникновения в БД случайных данных используется способ getEscaped(); . Код приведен ниже:

1
2
3
4
5
6
7
< ?php
 $_REQUEST["sometext"]="Соблюдайте безопасность работы, экранируйте различные  апострофы - (')   ";
 $mytext=JRequest::getVar('sometext','');
 $db=&amp;JFactory::getDBO();
 $mytext=$db->getEscaped($mytext);
 echo $mytext;
?>

2. Как установить данные в текущую базу данных

Если вам необходимо получить данные из базы данных, которая отличается от текущей БД, то следует применять следующий код:

1
2
3
4
5
6
< ?php
$db=&amp;JFactory::getDBO();
$database_name="db2";
if ($db->select($database_name)) {
 //запрос к сторонней БД}
?>

Однако учтите, что для успешного выполнения этого запроса необходим доступ пользователя mysql и к текущей базе данных, и к той, которая будет использоваться. Доступ устанавливается в настройках Joomla.

база данных joomla

3. Как отладить и проверить текущий запрос

Иногда возникает необходимость проверки текущего запроса – что он вам возвращает. В случае обнаружения ошибки его нужно отладить, и сделать это, не прибегая к PhpAdmin, а при помощи следующего метода:

1
2
3
4
5
6
< ?php
$db=&amp;JFactory::getDBO();
$q="SELECT * FROM #__content LIMIT 5";
$db->setQuery($q);
$db->explain();
?>

При возникновении каких-либо неполадок с соединением прежде всего нужно проверить связь с сервером mysql. Это необходимо, если вы хотите внести изменения в БД, но по неизвестным причинам соединение не работает. Для проверки соединения войти в PhpAdmin не получится, поэтому нужно применить такой метод проверки:

1
2
3
4
5
6
7
8
9
< ?php
$db=&amp;JFactory::getDBO();
if ($db->connected()) {
 echo "Нет соединения с сервером БД";    
die();
} else {
 echo "Все в порядке, соединение есть!";
}
?>

4. Как получить данные о пользователе

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


Идентификатор группы

Имя группы

2

Зарегистрированные пользователи

3

Автор

4

Редактор

5

Участник

6

Менеджер

7

Администратор

8




Суперадминистратор

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
< ?php
//текущий пользователь
$current_user =&amp; JFactory::getUser();
// пользователь с заданным идентификатором
$user62=&amp; JFactory::getUser(23);
//получаем группу текущего пользователя и пользователя с ID=23
echo "Идентификатор группы текущего пользователя:".$user->get( 'gid' );
echo "<br />Идентификатор группы пользователя с ИД=23:".$user62->get('gid' );
// обратитесь для получения информации о регистрации пользователя
if ($user->get( 'guest' )) {
echo "<br />Гость";    
}else {
echo "<br />Пользователь зарегистрирован";        
//Дата последнего захода на сайт
echo "<br />Дата последнего визита:".$user->get('lastvisitDate');
//Дата регистрации
echo "<br />Дата регистрации:".$user->get('registerDate');
//Имя   пользователя/никнейм
echo "<br />Имя пользователя/никнейм:".$user->get('name'). "/".$user->get('username');
//Узнать идентификационный номер пользователя
echo "<br />ID пользователя:".$user->get('id');
//Тип пользователя 
echo "<br />Тип пользователя:".$user->get('usertype');
//Электронный адрес пользователя
echo "<br />email пользователя:".$user->get('email');
//Узнать MD5 хеш пароля
echo "<br />MD5 хеш пароля:".$user->get('password');
}
?>

5. Несложная функция, которая показывает, сколько было обработано строк при последнем запросе:

1
2
3
4
5
6
7
8
9
10
11
12
< ?php
//Создание экземпляра класса
$db=&amp;JFactory::getDBO();
// Создание запроса к БД
$q='SELECT id,title FROM jos_content ORDER BY id ASC  ';
// Установка запроса в экземпляр класса работы с БД
$db->setQuery($q);
//Выполнение запроса 
$db->query(); 
//Результат, то есть – количество обработанных строк
echo $db->getAffectedRows ();
?>

6. Как выполнить сразу несколько запросов

В основном этот метод используется для удаления или установки какого-либо компонента в БД, требующего множественные запросы:

1
2
3
4
5
6
7
8
9
10
11
12
13
< ?php
// Создание экземпляра класса 
$db=&amp;JFactory::getDBO();
$q="";
//Создание запросов к базе данных
for ($i=0;$i&lt;10;$i++){
$q.=" INSERT INTO `jos_content` (`title`, `introtext`) VALUES  ('Тест$i', 'test$i') ; ";
}
//Установка запроса в экземпляр класса работы с БД
$db->setQuery($q);
//Выполнение запросов к БД
$db->queryBatch();
?>

7. Выполнить запрос

Конструкция, приведенная ниже, успешно применяется для выполнения таких запросов, как DELETE, INSERT или UPDATE

1
2
3
4
5
6
7
8
9
10
11
12
13
< ?php
//Экземпляр класса 
$db=&amp;JFactory::getDBO();
//Запрос к БД
$q=" INSERT INTO `jos_content` (`title`, `introtext`) VALUES  ('Тест', 'test') ";
// Установка запроса в экземпляр класса работы с БД
$db->setQuery($q);
//Выполнение запроса
if(!$db->query()){
// Вывод ошибки, если запрос не выполняется
echo __LINE__.$db->stderr();
} 
?>

После выполнения такого запроса в менеджере статей отобразится эта статья:

база данных joomla

Продолжение статьи о работе с базой данных Joomla 1.5.x читайте здесь.




Подпишитесь на рассылку блога
max1net.com:
Уже подписались человек
Укажите свой e-mail