Перейти к публикации
Гость Marsal

DataLife Engine MySQL запрос (по категориям)

Рекомендованные сообщения

Гость Marsal

Привет всем ещё раз;)

 

Имеется вот такой PHP код с запросом (вывожу им новости с категории):

$id = '3';
$db->query("SELECT * FROM dle_post WHERE category = '$id' LIMIT 10" );

Категория "3" является основной, то есть у неё есть подкатегории "2" и "5".

 

В чем вопрос?

Что поменять в MySQL запросе, что бы при просмотре главной категории выводились все подкатегории?

Изменено пользователем Marsal

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость Marsal

Получилось сделать так:

$id = 3;
$db->query("SELECT id FROM dle_category WHERE parentid = '$id'");
while($perentid = $db->get_row()) {
$perentres .= ",'".$perentid['id']."'";
}
$where = "WHERE category IN ('{$id}'{$perentres})";
$db->query("SELECT * FROM dle_post ".$where." ORDER BY date DESC LIMIT 10" );

 

Можно как-нибудь проще?

Изменено пользователем Marsal

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
TheAndrey


$id = 3;

$db->query("SELECT id FROM dle_category WHERE parentid = '$id'");

$subcats = array();

$subcats[] = $id;

while($sudcat = $db->get_row()) {

$subcats[] = $sudcat['id'];

}

$cat_in = implode(", ", $subcats);

$db->query("SELECT * FROM dle_post WHERE `category` IN ({$cat_in}) ORDER BY `date` DESC LIMIT 10" );

Ещё нужно сделать кеширование...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость Marsal

Спасибо, твой способ мне больше по душе:ph34r:

С кешированием разобрался.

Спасибо ещё раз;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...