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

Форум PHP

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

 

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

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

тема: Реализация многоуровневой системы (бесконечное вложенный каталог)
 
 автор: isset   (05.02.2005 в 19:34)
 
 

Есть каталог, в нем категории, как сделать возможность создание неограниченного количества категорий и субкатегорий?
Например:
Главная категория
- Субкатегория
-- подкатегория 2
-- подкатегория 3
--- подкатегория 4
- Субкатегория 2

Думаю понятно объяснил

   
 
 автор: isset   (05.02.2005 в 19:34)
 
   для: isset   (05.02.2005 в 19:34)
 

Интересует реализация на mysql

   
 
 автор: Akira   (05.02.2005 в 20:04)   письмо автору
 
   для: isset   (05.02.2005 в 19:34)
 

1) создание таблицы category
2) создание таблицы subcategory
3) в subcategory создаем id_category - порядковый номер category
4) в category создаем id - порядковый номер
Дальше думаю понятно

   
 
 автор: Artem S.   (05.02.2005 в 20:19)   письмо автору
 
   для: isset   (05.02.2005 в 19:34)
 

Добавьте еще поле, например "cat" и храните значение "родителя" - если "0" то это главная категория.

   
 
 автор: isset   (05.02.2005 в 20:32)
 
   для: Artem S.   (05.02.2005 в 20:19)
 

Все это не то, каждая субкатегория может иметь свою субкатегория, а та может иметь еще субкатегорию и так до бесконечности...У меня не получилось реализовать такое

   
 
 автор: Valeri   (05.02.2005 в 20:40)   письмо автору
 
   для: isset   (05.02.2005 в 20:32)
 

возьми любой древовидный форум.
смысл построения БД такойже как там, только вместо топиков и постов будут идти категории, подкатегории и прочее что там у тебя есть.

   
 
 автор: JIEXA   (05.02.2005 в 21:07)   письмо автору
 
   для: isset   (05.02.2005 в 20:32)
 

Это легко, вообщем создай в mysql 2 поля
id
parentid

ID - это порядковый номер категории
PARENTID - по умолчанию 0, если это суб категория, то должен быть тут id категории в каторой она находится, понил?

Вообще скачай отсюда ([url]phpnuke.ru[/url]) модуль Pages и к нему ещё хак от xRay и поймёшь как сделать!

   
 
 автор: isset   (05.02.2005 в 21:24)
 
   для: JIEXA   (05.02.2005 в 21:07)
 

Мне некогда разбирать готовые скрипты. Такое у меня тоже в голове крутится, но вот как потом на php это сделать?

   
 
 автор: JIEXA   (05.02.2005 в 21:43)   письмо автору
 
   для: isset   (05.02.2005 в 21:24)
 

На лови кусок моего кода:

этот кусок выводит глаыные категории:

<?php
$cat_res
=mysql_query("SELECT * FROM articles_cat where parentid='0' order by title asc") or die ("Ошибка:".mysql_error()."");
include
"themes/".$theme."/articles/cat/theme_top_cat.php";
while(
$cat_row=mysql_fetch_assoc($cat_res))
{
        include
"themes/".$theme."/articles/cat/theme_middle_cat.php";
}
?>


это подкатегории:
<?php
if($REQUEST_URI)
{
        
eregi("[[:digit:]]+",$REQUEST_URI,$uri_number);
        
$parseurl$uri_number[0];
} else {
        print
"<b>Ошибка!</b>";
        exit();
        }
$subcat_res=mysql_query("SELECT * FROM articles_cat where cid=$parseurl order by title asc") or die("ошибка:<br>".mysql_error());
$subcat_row=mysql_fetch_array($subcat_res);
$des=$ctitle2 $subcat_row['title'];
$parentid2 $subcat_row['parentid'];
if (
$parentid2!="0"$ctitle2=getparent($parentid2,$ctitle2);
$title$ctitle2;
$keywords=$subcat_row['keywords'];
$res3=mysql_query("SELECT * FROM articles_cat where parentid=$parseurl") or die("ошибка:<br>".mysql_error()."");
$row3=mysql_num_rows($res3);
include
"includes/header.php";
if(
$row3!="")
{
        include
"themes/".$theme."/articles/subcat/theme_top_subcat.php";
        
$subcat_res2=mysql_query("SELECT * FROM articles_cat where parentid='$parseurl'") or die ("Ошибка:".mysql_error()."");
        while(
$subcat_row2=mysql_fetch_assoc($subcat_res2))
        {
                
$title=$subcat_row2['title'];
                
$cid=$subcat_row2['cid'];
                include
"themes/".$theme."/articles/subcat/theme_middle_subcat.php";
        }
        include
"themes/".$theme."/articles/subcat/theme_bottom_subcat.php";
}
?>

Вот добавление
<?php
function getparent($parentid,$title)
{
        
$parentid intval(trim($parentid));
        
$row mysql_fetch_array(mysql_query("SELECT * from articles_cat where cid='$parentid'"));
        
$cid intval($row['cid']);
        
$ptitle $row['title'];
        
$pparentid $row['parentid'];
        if (
$ptitle!=""$title$title." « ".$ptitle;
    if (
$pparentid!=0) {
        
$title=getparent($pparentid,$title);
    }

    return 
$title;
}

        echo 
"<select style=\"width:100%\" name=\"a_cid\">";
        
$res mysql_query("SELECT * FROM articles_cat order by parentid,title");
                while(
$row7 mysql_fetch_array($res))
                {
                        
$cid2 $row7['cid'];
                        
$ctitle2 $row7['title'];
                        
$parentid2 $row7['parentid'];
                        if (
$parentid2!="0"$ctitle2=getparent($parentid2,$ctitle2);
                        echo 
"<option value=\"$cid2\">$ctitle2</option>";
                }
        echo 
"</select><br></td>
?>

Я тебе кусками вырезал, вообщем пробуй! Я бы расписал подробно, но у меня инета мало!

   
 
 автор: cheops   (05.02.2005 в 22:28)   письмо автору
 
   для: isset   (05.02.2005 в 19:34)
 

Таблицу MySQL и приёмы работы с таким каталогом можно посмотреть в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=701

   
Rambler's Top100
вверх

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