|
|
|
|
|
для: Волки
(22.01.2008 в 13:02)
| | Таблица menu, в ней вот такие поля:
id pid title
1 0 Техника
2 1 Мобильные
3 1 Бытовая
4 2 ....
5 0 ....
6 2 ....
|
`id` (собственный идентификатор) и `pid` (идентификатор родительского объекта), `title` (название раздела меню). Посоветовали сделать рекурсией - сделала, после этого посоветовали сделать отдельно массив уровня вложений каталогов, а отдельно - вывод самого меню. Хочу так и сделать, изменив свой скрипт, но не знаю, как составить массив уровня вложений каталогов.
Получаемый каталог - двух уровней:
Если что-то не поняли, можно решить по "аське": 374-122-783
Буду очень признательна, если вы мне поможете. | |
|
|
|
|
|
|
|
для: Лена
(21.01.2008 в 17:38)
| |
<?
function xTree($p_ind_start)
{
/*
a 1 0
b 2 0
c 3 1
d 4 1
e 5 2
f 6 3
g 7 1
*a
*c
*f
*d
*g
*b
*e
*/
$result = mysql_query("select * from `menu` where `pid`=$p_ind_start order by `id`");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
//$row = array('title'=>"????", 'id', 'pid')
echo $row['title']; //сформировать линк для вывода на экран
$result2 = mysql_query("select count(*) from `menu` where `pid`={$row['id']};");
//если у текущего элемента есть "дочки"
if (($row2 = mysql_fetch_row($result2)) && $row2[0]!=0)
xTree($row['id']);
}
}
xTree(0);
?>
|
получилось чтот подобное.
или в icq стучись | |
|
|
|
|
|
|
|
для: Лена
(21.01.2008 в 17:38)
| | есть таблица `menu` с полями `id` (собственный идентификатор) и `pid` (идентификатор родительского объекта). Таким образом можно добится огромной степени вложености.
Сортировка нужна по id (вспоминая предыдущую тему)
т.е. таблица например:
name id pid
A 1 0
B 2 1
C 3 1
D 4 2
E 5 0
F 6 2
|
и получаемый каталог:
действительно ли это то что необходимо получить? | |
|
|
|
|
|
|
| Прошу помощи. Была написана рекурсивная функция, которая выводит меню каталогов. Предложили переделать ее так, чтобы отдельно выводился массив вложенности каталогов и отдельно - построение меню. Уже начала ненавидеть и меню, и массив вложенности. Получился код:
<?php
include( "dbopen.php" );
function ShowTree($PID, $level, $prefix ="") {
global $link;
$sSQL = "SELECT * FROM `menu` WHERE pid = " . $pid . " ORDER BY id";
$result = mysql_query($sSQL, $link);
$result=array();
function level ($level, $value); {
// массив вложения каталогов
$level=array($value);
$y=$level [$value];
// корневые элементы
$level[0][0]=$level[$pid];
// основная часть дерева, но как ее оформить, если данные title содержатся в поле базы данных title?
$level[1][0] = $result($level[$pid], array("title"=>"Ук***"));
$level[2][0] = $result($level[1][0], array("title"=>"К****"));
$level[2][1] = $result($level[1][0], array("title"=>"З***"));
$level[1][1] = $result($level[$pid], array("title"=>"Р***"));
$level[1][2] = $result($level[$pid], array("title"=>"Б***"));
$level[2][2] = $result($level[1][2], array("title"=>"Д***"));
$level[2][3] = $result($level[1][2], array("title"=>"К***"));
$level[2][4] = $result($level[1][2], array("title"=>"П***"));
$level[1][3] = $result($level[$pid], array("title"=>"Т***"));
$level[2][5] = $result($level[1][3], array("title"=>"А***"));
$level[2][6] = $result($level[1][3], array("title"=>"М***"));
$level[2][7] = $result($level[1][3], array("title"=>"Б***"));
$level[1][4] = $result($level[$pid], array("title"=>"С***"));
$level[2][8] = $result($level[1][4], array("title"=>"Н***"));
$level[2][9] = $result($level[1][4], array("title"=>"М***"));
$level[1][5] = $result($level[$pid], array("title"=>"Л***"));
$level[1][6] = $result($level[$pid] array("title"=>"Э***"));
//рекурсивно вызвать функцию построения массива вложенности,
level ($level, $value);
}
if (mysql_num_rows($result) > 0) {
echo("<UL">\n");
while ( $row = mysql_fetch_array($result) ) {
$id = $row["id"];
$pid= $row["pid"];
$title = $row["title"];
if (empty ($level[$pid])):
$level[$pid]=array($id=>$title)
else
$level[$pid][$id]=$title;
endif;
echo("<LI>\n");
echo "<A HREF=\"" . "?ID="(" ", $level[$pid]. $row ['title']. "</A>" . "<br>;\n");
ShowTree($ID, " ");
);
}
echo("</UL>\n");
}
}
ShowTree(0, "");
mysql_close($link);
?>
|
| |
|
|
|
|