|
|
|
| Существуют две таблицы menu и data:
Таблица menu:
id_menu parent_menu title
1 0 Овощи
2 0 Фрукты
3 1 Овощи Русские
4 1 Овощи Буржуйские
5 2 Фрукты Русские
6 2 Фрукты Буржуйские
7 3 Чистые
8 3 Грязные
9 4 Чистые
10 4 Грязные
11 5 Чистые
12 5 Грязные
13 6 Чистые
14 6 Грязные
где id_menu - уникальный индификатор категории, parent_menu - ссылка на родительский элемент,title-название категории
Таблица data:
id_data parent_data title_data
1 7 Картофель Русский Чистый
2 7 Морковь Русский Чистый
3 8 Картофель Русский Грязный
4 8 Морковь Русский Грязный
5 9 Картофель Буржуйский Чистый
6 9 Морковь Буржуйский Чистый
7 10 Картофель Буржуйский Грязный
8 10 Морковь Буржуйский Грязный
где parent_data - ссылка на родительский элемент.
Задача: Существует сайт типа:блог и начинающий сайтостроитель. Слева на странице, как положено, выводится меню в виде дерева, а вот справа выводится контент...При выборе пункта menu происходит передача данных id_menu... и здесь самое непонятное...Как нужно сделать запрос к базе, потом загнать в массив и уже после этого зациклить, при условии что при выборе в таблице menu родительской категории - из таблицы data выводились не только те элементы, которые непосредственно относятся к самой категории, но и из подкатегорий этого родителя(Грубо говоря, на каждом шаге должна существовать выдача...).
Пример: В таблице menu выбираем Овощи Русские(id_menu=3) и из data получаем:
Картофель Русский Чистый(id_data=1)
Морковь Русский Чистый(id_data=2)
Картофель Русский Грязный(id_data=3)
Морковь Русский Грязный(id_data=4)
Заранее премного благодарен всем откликнувшимся!!! | |
|
|
|
|
|
|
|
для: Sadalsky
(24.01.2012 в 17:08)
| | Правильно ли я понимаю, что data.parent_data = menu.id_menu, а вам нужен menu.parent_menu? | |
|
|
|
|
|
|
|
для: cheops
(24.01.2012 в 20:37)
| | короче говоря....предложили вот такой кодинг...только я не пойму...как его притянуть...
// $id_ctg - уникальный ID той категории (раздела каталога) для которой
// мы выводим список все товаров (и в том числе товаров в подкатегориях)
$ctgs = get_subcategories( $id_ctg );
$ctgs[] = $id_ctg;
$ids = implode($ctgs);
$query = "SELECT * FROM `products` WHERE `id_ctg` IN (".$ids.") ORDER BY price";
// Получить для текущей категории все подкатегории (всех уровней вложенности)
function get_subcategories( $id )
{
$q = mysql_query("SELECT `id_ctg` FROM `categories` WHERE `parent`=".$id);
$r = array();
while ($row = mysql_fetch_row($q)) {
$r[] = $row[0];
$a = get_subcategories( $row[0] );
for ( $i = 0; $i < count($a); $i++ ) $r[] = $a[$i];
}
return $r;
}
|
| |
|
|
|
|
|
|
|
для: Sadalsky
(24.01.2012 в 21:22)
| | Нужно подставить свои названия таблиц и полей, именно поэтому и приведен выше вопрос, верно ли то, что написано? Чтобы вам дать в руки запросы с вашими именами, а потом вы оформите их в виде кода, который приведен выше. | |
|
|
|
|
|
|
|
для: cheops
(24.01.2012 в 22:48)
| | в первой части вопроса вы абсолютно правы, а вот со второй частью вопроса немного не понял... | |
|
|
|
|
|
|
|
для: cheops
(24.01.2012 в 22:48)
| | parent_data = id_menu - вообще говоря, вот так там просто немного смешалось... | |
|
|
|
|
|
|
|
для: Sadalsky
(24.01.2012 в 23:02)
| | Допустим выбрана "Морковь" (data.id_data = 8), тогда извлечь идентификатор родителя можно так
SELECT
menu.parent_menu
FROM
menu
LEFT JOIN
data
ON
data.parent_data = menu.id_menu
WHERE
data.id_data = 4
| Можно использовать этот идентификатор во вложенном запросе, а можно извлечь и подставить в новый запрос, чтобы выбрать подчиненные подкаталоги для данного каталога. | |
|
|
|