|
|
|
|
В таблице 3 поля: id, name, parentid.
Такие записи
--------------------------------
| ID | name | parentid |
--------------------------------
| 1 | Кат 1 | 0 |
--------------------------------
| 2 | Кат 2 | 0 |
--------------------------------
| 3 | Кат 3 | 0 |
--------------------------------
| 4 |Субкат 1| 1 |
--------------------------------
| 5 |Субкат 2| 1 |
--------------------------------
| 6 |Субкат 3| 2 |
--------------------------------
| 7 |Субкат 4| 2 |
--------------------------------
| 8 |Субкат 5| 2 |
--------------------------------
| 9 |Субкат 6| 3 |
--------------------------------
Поля с parentid равным 0 - это основные категории. Поля с parentid > 0 это субкатегории
Мне очень трудно объяснить, привиду лучше то, что должно вывести:
| Кат 1 | Кат 2 | Кат 3 |
---------- -------------------
Субкат1 | Субкат 3| Субкат 6
Субкат2 | Субкат 4|
Субкат 5|
|
| |
|
|
|
|
|
|
|
для: JIEXA
(27.04.2005 в 19:21)
| | Если я правильно понимаю, то за один запрос это не вывести. сначала надо выбрать все основные категории, а затем, в цикле - подкатегории. | |
|
|
|
|
|
|
|
для: Loki
(27.04.2005 в 20:10)
| | Да, но как это на практике то? | |
|
|
|
|
|
|
|
для: JIEXA
(27.04.2005 в 21:44)
| | Можно вывести примерно следующим образом
<?php
// Устанавливаем соединение с базой данных
include "config.php";
// Формируем запрос на выборку субкатегорий
// основной категории
$query = "SELECT * FROM tbl WHERE parentid = 0";
// Выполняем запрос
$tb = mysql_query($query);
// Проверяем правильность выполнения запроса
if(!$tb) exit(mysql_error());
// Обнуляем индекс
$i = 0;
// В цикле выполняем обработку категорий
while($cat = mysql_fetch_array($tb))
{
menu[$i] = $cat['name'];
// Запрашиваем подменю данного меню
$query = "SELECT * FROM tbl WHERE parentid = ".$cat['ID'];
// Выполняем запрос
$sb = mysql_query($query);
// Проверяем правильность выполнения запроса
if(!$sb) exit(mysql_error());
// Обнуляем индекс
$k = 0;
while($sub = mysql_fetch_array($sb))
{
menu[$i][$k] = $sub['name'];
$k++;
}
$i++;
}
// Получили двумерный массив $menu, который
// осталось только вывести
echo "<pre>";
print_r(menu);
echo "</pre>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(27.04.2005 в 23:23)
| | спасибо | |
|
|
|