как разделить контент из БД на каталоги?

Safary

Новичок
как разделить контент из БД на каталоги?

вот к примеру как создать каталог программ?

К примеру есть таблица Programs в MySQL:

ID 1
NAME Photoshop
AUTHOR Adobe
WWW http://adobe.com
LINK http://filehosting/photoshop.rar
DATE 01.01.2009

Есть шаблон, который выводит данные из этой таблицы...

Вопрос заключается в том, как создать именно каталог.
Тоесть чтобы найти photoshop - на сайте надо было зайти в софт - программы - графика - редакторы.
Вот именно упорядочить программы. И чтобы создавать каталоги самому из админки.
Нужна теория, как такие вещи осуществляются, просто варианты осуществления.
 

Safary

Новичок
ну... как бы обьяснить...

ну сделал я шаблон программы, где её описание, имя, автор и т.д. выводится из таблицы programs =)

в этой таблице куча программ, собранных вместе:
photoshop
3ds max
word 2007
torrent
firefox

вот как бы разделить эти проги на каталоги...
Чтобы 3ds max лежал в СОФТ-ГРАФИКА-3Д-редакторы,
Чтобы photoshop лежал в СОФТ-ГРАФИКА-редакторы,
Чтобы word 2007 лежал в СОФТ-ОФИС-РАБОТА С ТЕКСТОМ
Чтобы firefox лежал в CОФТ-ИНТЕРНЕТ-ВЕБ-БРАУЗЕРЫ

Я думаю либо создавать кучу таблиц, типа:

3д-редакторы
2д-редакторы
работа с текстом
веб-браузеры
качалки

либо одну таблицу Programs, и чтоб выглядела так:

ID 1
NAME______Photoshop
AUTHOR____Adobe
WWW_____http://adobe.com
LINK______http://filehosting/photoshop.rar
DATE______01.01.2009
PATH______софт/графика/растровые редакторы

и по последней ячейке - PATH - уже распределять.

Ну в общем меня интересует как делается древовидная система, в которой всё лежит... Чтобы из админки можно было создать каталог, в нем создать ещё один каталог и в нем например данные из таблицы выводились, к примеру программма фотошоп..

В общем на примере СОФТ-портала спрашиваю. Хотя мне не для этого надо =)
 

Safary

Новичок
спасибо, уже изучаю через переводчик.
Кстати искал русскую статью, но потом она сослалась на эту же, обьясняя тем что этот способ лучше =)

-~{}~ 01.01.09 22:44:

Ага, частично разобрался как такие вещи делаются, хотя это неудобно... создавать такую базу:

children_____parent_______
=====================
soft__________programs
soft__________games
programs______graphics
programs______internet
programs______system
graphics_______editors
graphics_______viewers
=====================

И тоесть в этой же таблице надо размещать программы?
Продолжение таблицы:
=====================
editors________photoshop
editors________gimp
editors________photocanvas
=====================
если на сайте будут тысячи программ, таблица огромной будет, а если после этого я захочу добавить ещё один раздел, скажем...
=====================
graphics______3D-editors
3D-editors____3dsmax
3D-editors____maya
3D-editors____Rhino3D
=====================

это будет в конце таблицы... Это правильный вариант будет?
Просто моё имхо что программы отдельно надо как-то от самой структуры каталогов. Как бы такое сделать?
 

Фанат

oncle terrible
Команда форума
в таблице программ добавить поле с идентификатором раздела каталога
 

Safary

Новичок
поиск по таблице же начинается сначала, будет лишняя трата времени пока дойдет до конца поиск...

Это нормальная структура получается?

-~{}~ 01.01.09 22:59:

тоесть примерно вот так раздел программ выглядит:
==================================
ID___________________________ 1
NAME_________________________ Photoshop
AUTHOR_______________________ Adobe
WWW________________________ http://adobe.com
LINK__________________________ http://filehosting/photoshop.rar
DATE__________________________ 01.01.2009
CATALOG_ID____________________7
==================================
так делать? блин, неудобная система получается какая-то...
 

Фанат

oncle terrible
Команда форума
неудобно на потолке спать. какие конкретно неудобства?
и что там у тебя за детский лепет про "поиск начинается сначала"?
 

Safary

Новичок
:D фа нат, не ну мя прет твой стиль общения ))))) хахах! :D развеселил даже

конкретно какие неудобства... Ну например то что как-то всё не очень понятно, запутаться легко в этом всём )

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

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Автор оригинала: Safary
конкретно какие неудобства... Ну например то что как-то всё не очень понятно, запутаться легко в этом всём )
смени профессию - иди грузить что-нибудь, там все просто и думать не надо :)
а здесь, увы, помочь не сможем - все довольно сложно, запутано и у всех реально уходят годы, чтобы разобраться

А про поиск начинается с начала - я про то что как бы если в конце таблицы запись будет - чуть чуть медленее дойдет, в начале - быстрее. Хотя она ж по первой букве, потом по второй совпадение ищет..
это не так, почитай про индексы (впрочем, там тоже не очень понятно)
 

Safary

Новичок
да я хочу разбираться, просто думал более удобный способ найти. Сейчас разбираюсь, ну вроде не всё так плохо как сначала казалось :)

-~{}~ 02.01.09 00:18:

Вот теперь не могу сделать чтоб всё по-нормальному выводилось, точнее вывод-то сделал, но кол-во уровней не получается сделать... Код из урока не работает, сам пытаюсь придумать, да не получается...

PHP:
function podpapka($papka,$s){
$r=mysql_query('SELECT podpapka FROM soft_catalog WHERE papka="'.$papka.'"'); 

while($str=mysql_fetch_array($r))	{
echo str_repeat('>',$s).$str['podpapka'].'<br>';

podpapka($str['podpapka'],$s);

									}
}

podpapka('софт',0);
если так делать - то выводит:

графика
редакторы
photoshop
Gimp
офис
word 2007
openOffice2008
интернет
браузеры
качалки
пейджеры
ICQ
QIP
программирование
php
c++

А теперь чтобы сделать уровни... Вот их не получается, пишу код такой:
PHP:
function podpapka($papka,$s){
$r=mysql_query('SELECT podpapka FROM soft_catalog WHERE papka="'.$papka.'"'); 

while($str=mysql_fetch_array($r))	{
echo str_repeat('>',$s).$str['podpapka'].'<br>';
$s++; ########[B] ВОТ ТУТ ВСТАВИЛ ПРИБАВЛЕНИЕ УРОВНЯ[/B]
podpapka($str['podpapka'],$s);

									}
}

podpapka('софт',0);
и этот код выдает вот такую фигню:

графика
>редакторы
>>photoshop
>>>Gimp
>офис
>>word 2007
>>>openOffice2008
>>интернет
>>>браузеры
>>>>качалки
>>>>>пейджеры
>>>>>>ICQ
>>>>>>>QIP
>>>программирование
>>>>php
>>>>>c++

как бы сделать уровни... hm...
 

findnext

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

Safary

Новичок
dimagolov, нет какой-то англ. урок. если надо - то найду и скину ссылку.

findnext, ну MySQL же реляционная, вот её и учу.
 
Сверху