Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: вывод многоуровнего каталога
 
 автор: tauruz   (19.11.2006 в 21:47)   письмо автору
 
 

создаю два массива из стандартнго вида таблицы (id_catalog, name, id_parent)

как оператором лутьше рганизовать разбор массивов!
направте плиз на путь истинный
пробовал foreach но что то не выходит постоянно ловлю себя на мысли что изобретаю велосипед!

сначало хотелось бы разобраться с итерационным методом а пот. с рекурсивным

прилагаю код:

<?
$SQL
="SELECT  id_strana, id_parent, strana FROM strana ORDER BY strana";
$res mysql_query($SQL) or die("Error in $sql: ".mysql_error()); 

$tree = array(); $names = array(); 
while(
$row mysql_fetch_row($res)) 

    list(
$id$parent$name) = $row
    
$tree[$parent][] = $id
    
$names[$id] = $name


$id_cat $_GET['id_cat'];

foreach (
$tree[0] AS $znach)
    {
    echo 
"<a href=\"3.php?id_cat=".$znach."\">".$names[$znach]."</a><br>";
        
        if(!empty(
$tree[$znach]) && isset($_GET['id_cat']) && in_array($tree[$id_cat],$tree))
            {
            foreach (
$tree[$id_cat] as $znach_2)
                {
                    echo 
"<a href=\"3.php?id_cat=".$znach."&id_cat2=".$znach_2."\">".$names[$znach_2]."</a><br>";
                }
            }
    }
?>

взят с этого же форума но развите это задачи не нашел.

заранее благобдарю!

   
 
 автор: Trianon   (20.11.2006 в 09:53)   письмо автору
 
   для: tauruz   (19.11.2006 в 21:47)
 

А что Вы хотите получить в результате?
В принципе, можно реализовать обход дерева вообще не применяя рекурсию, только код будет крайне сложным и запутанным. Зачем?

Что мне всегда казалость странным...
Есть задачи, которые решать с применением рекурсии - преступление. То же самое вычисление факториала. Или, допустим, нахождение обратного пути в каталоге, хранимом в виде id_cat, id_parent. И тем не менее, постоянно решают и в пример приводят....

И точно также есть задачи, которые совершенно противоестественно решать без применения рекурсии. Вроде этой (обхода дерева в глубину.) И ведь тоже почему-то решают...

   
 
 автор: tauruz   (20.11.2006 в 11:32)   письмо автору
 
   для: Trianon   (20.11.2006 в 09:53)
 

По умолчанию выводятся все корневые категории которые являються ссылками на дочерние.
Нажав на ссылку кореннгого кталога под ним должны выводиться дочерние, нажав на дочернюю выводятся поддочерние и т.д.

В принципе 3-ех уровней достатточно.

   
 
 автор: tauruz   (21.11.2006 в 00:29)   письмо автору
 
   для: Trianon   (20.11.2006 в 09:53)
 

ну вот вроде сообразил!!

<?
$SQL
="SELECT  id_strana, id_parent, strana FROM strana ORDER BY strana";
$res mysql_query($SQL) or die("Error in $sql: ".mysql_error()); 

$tree = array(); $names = array(); 
while(
$row mysql_fetch_row($res)) 

    list(
$id$parent$name) = $row
    
$tree[$parent][] = $id
    
$names[$id] = $name

$id_cat $_GET['id_cat'];

catalog(0,$tree,$names);

function 
catalog($id,$tree,$names)
{
    global 
$id_cat;
    
    foreach (
$tree[$id] AS $znach)
    {
    echo 
"<a href=\"3.php?id_cat=".$znach."\">".$names[$znach]."</a><br>";
    
        if(!empty(
$id_cat) && in_array($tree[$znach],$tree) && $znach == $id_cat){
        
catalog($znach,$tree,$names);
        }
        
    }
}
?>


по моему всеравно громоздко!!!

подскажите как теперь к дочерним ссылка прикрутить id_cat2, id_cat3
так что бы в корне ссылки имели вид:

id_cat=1
id_cat=2 и т.д.

а дочерние
id_cat=1&id_cat2=6
id_cat=2&id_cat2=7

вроде понятно

Заранее спасибо

   
 
 автор: Trianon   (21.11.2006 в 09:52)   письмо автору
 
   для: tauruz   (21.11.2006 в 00:29)
 

Непонятно лишь - зачем. id объекта односзначно определяет id его родителя. А Вы провоцируете ситуацию, когда на вход скрипту придет id_cat=1&id_cat2=7.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования