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

Форум MySQL

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

 

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

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

тема: Рекурсия=вывод подкаталога с MySQL по клику
 
 автор: virtus   (16.05.2006 в 15:45)   письмо автору
 
 

Помогите, поделитесь живим примером каталога... Вот как необходимо:

Пункт1
Пункт2
Пункт3
Пункт4
[i]После клика на пункт 3[/i
]Пункт1
Пункт2
Пункт3
-подпункт1
-подпункт2
Пункт4
После клика на подпункт1
Пункт1
Пункт2
Пункт3
-подпункт1
--под-подпункт1
-подпункт2
Пункт4

НУ И ТАК ДАЛЕЕ.. НЕ JS - только PHP
структура базы

CREATE TABLE catalog_cat (
  idcat int(11) NOT NULL auto_increment,
  pidcat int(11) NOT NULL default '0',
  name varchar(255) NOT NULL default '',
  description text NOT NULL,
  PRIMARY KEY  (idcat)
) ENGINE=MyISAM;


СПАСИБО БОЛЬШЕ

   
 
 автор: kaoz   (16.05.2006 в 16:22)   письмо автору
 
   для: virtus   (16.05.2006 в 15:45)
 

в этой теме описан каталог с бесконечно вложенной структурой

http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=15065&page=1

   
 
 автор: virtus   (16.05.2006 в 16:31)   письмо автору
 
   для: kaoz   (16.05.2006 в 16:22)
 

ну так там нет примера никакого... :(

   
 
 автор: virtus   (16.05.2006 в 17:25)   письмо автору
 
   для: virtus   (16.05.2006 в 15:45)
 

УТОЧНЮ:
нужно сделать чтобы направить рекурсию по нужной ветке дерева в зависимости от $_GET["id"]

   
 
 автор: namo   (16.05.2006 в 18:44)   письмо автору
 
   для: virtus   (16.05.2006 в 17:25)
 

Вот мое дерево :)


CREATE TABLE 'cms_pages' (
  'id' int(6) NOT NULL auto_increment,
  'name' varchar(255) default NULL,
  'displaySubPages' int(1) NOT NULL default '0',
  'public' int(1) NOT NULL default '0',
  'parent' int(6) NOT NULL default '0',
  'anonce' text,
  'full' text,
  'prior' int(1) NOT NULL default '0',
  'main' int(1) NOT NULL default '0',
  PRIMARY KEY  ('id')
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=9 ;

А вот функции :)

<?
   
function processCategories($level$path$sel)
    {
       global 
$cfg;

       
$out = array();
       
$cnt 0;

       
$q mysql_query("SELECT 'id', 'name', 'main' FROM '".$cfg['sql']['pref']."pages' where 'parent' = '$path[$level]' AND 'public' = '1' order by 'prior'") or die (mysql_error());
       while (
$row mysql_fetch_row($q))
       {
          
$out[$cnt][0] = $row[0];
          
$out[$cnt][1] = $row[1];
         
$out[$cnt][2] = $row[2];
          
$out[$cnt][3] = $level;
          
$cnt++;

          if (
$level+1<count($path) && $row[0] == $path[$level+1])
          {
             
$sub_out $this->processCategories($level+1,$path,$sel);
             for (
$j=0$j<count($sub_out); $j++)
             {
                
$out[] = $sub_out[$j];
                
$cnt++;
             }
          }

       }

       return 
$out;

    }

    function 
CatList($parent,$level)
    {
       global 
$cfg;

       
$q mysql_query("SELECT 'id', 'name', 'public', 'prior', 'main' FROM '".$cfg['sql']['pref']."pages' WHERE 'parent' = '$parent' ORDER BY 'prior'");
       
$a = array();
       while (
$row mysql_fetch_assoc($q))
       {
          
$row['level'] = $level;
          
$a[] = $row;
          
$b $this->CatList($row['id'],$level+1);
          for (
$j=0$j<count($b); $j++)
          {
              
$a[] = $b[$j];
          }
       }
       return 
$a;
    }
?>

   
 
 автор: virtus   (16.05.2006 в 18:48)   письмо автору
 
   для: namo   (16.05.2006 в 18:44)
 

NAMO - спасибо ;) только мне попроще нужно

   
Rambler's Top100
вверх

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