Как сделать в покуп.тележке подкаталоги в каталогах?

shebeko

Новичок
Как сделать в покуп.тележке подкаталоги в каталогах?

вощем я полный профан в php, ну не полный... гостевую могу написать =), но курсовик делать надо =)

помогите плиз, тема курсовика, взаимодействие пользователя с системой на примере (покупательской тележки)

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

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

не могли бы вы о великие мозги PHP? тыкнуть меня в литературу или по начальному объяснить как это реализовать?
большое спасиб =)
 

Nogrogomed

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

Есть еще альтернативный вариант: разделы делятся на категории "для товаров" и "для подразделов", и дальше также деревом. Хотя этот вариант проигрывает первому
 

shebeko

Новичок
спасиб всем.... да бд есть ща пробую юзать и совершенствовать такой код, нашел здесь гдет на форумах

PHP:
<? 
    function get_data () 
    { 
        mysql_connect ("localhost", 'root', ''); 
        mysql_select_db ('test'); 
         
        $query = "SELECT id, title, parent from Three order by parent"; 
        $res = mysql_query ($query); 
         
        $data = array (); 
        while ($row = mysql_fetch_assoc ($res)) 
        {                             
            $data [] = $row; 
        }   
        return $data; 
    }                

    function print_three ($data, $parent = 0) 
    { 
        static $counter = 0; 
         
        $counter += 5; 
        for ($i = 0; $i < count ($data); $i ++) 
        { 
            if ($data [$i] ['parent'] == $parent) 
            { 
                for ($j = 0; $j < $counter; $j ++) 
                    echo "&nbsp"; 
                echo $data [$i] ['title'] . "<br>"; 
                print_three ($data, $data [$i] ['id']); 
            } 
        } 
        $counter -= 5; 
    } 
     
    $d = get_data (); 
    print_three ($d);     
?>
мож что посоветуете??

-~{}~ 19.12.06 19:28:
 

Vallar_ultra

Любитель выпить :)
порадовало знание Английского у автора кода :)) print_three = print_tree (tree - это дерево, а three - это "три")

А что тебе посоветовать-то по поводу этого кода? я б лично посоветовал написать свой, например. Кто-то посоветует не заморачиваться, пойти и купить битрикс.... Советов может быть много, важно то, что нужно тебе.
 

Vallar_ultra

Любитель выпить :)
2shebeko

Ты пишешь курсач на РНР??? Это ж где такое разрешено?
 

Marquis

Новичок
Vallar_ultra
Проверяют насколько пациент хорошо умеет думать головой, а какой там ЯП использовался имхо по барабану. Все привыкли к Дельфям и Сишнику а тут раз и на php дали задание :)
 

Vallar_ultra

Любитель выпить :)
2Marquis
:)))) Да просто у нас в универе всегда тока ОПРЕДЕЛЁННЫЕ языки разрешались...
 

hermit_refined

Отшельник
я считаю, что в университете идеально использовать C - там хотя бы segmentation fault приучает к внимательности. кошмар, что наблюдается сейчас среди программистов нового поколения - в том числе следствие подобной халтуры.
 

Vallar_ultra

Любитель выпить :)
2nerezus

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

З.Ы. Люди, закончившие кулинарный техникум, не обижайтесь - это была всего лишь метафора! :)
 

SaNeK

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

Ты пишешь курсач на РНР??? Это ж где такое разрешено?
ну почему же? Все ведь зависит от того, как звучит тема К.Р. Конечно, если речь идет о связи ЯПа с БД с помощью SQL почему бы и не взять PHP: а то будет человек писать на C# - дак ведь там можно об DataGrid голову тридцать раз сломать...
 

Vallar_ultra

Любитель выпить :)
2SaNeK
DataGrid в .NET оч приятная штука, и голову сломать там тяжко при наличии некой соображалки, а во-вторых институт учит вроде как мыслить системно, а вот как себе будет человек представлять работу БД-соединений, если только ПХП-шные функции знать и будет. Внутри однго коннектора ведь много всего происходит и если он планирует в последствии работать программером, то такое знание если не необходимо - то весьма желательно. ИМХО.
 

shebeko

Новичок
я мог сие сделать и на FoxPro и на Exel и на C и на Delphi ... и на Flashe... понимаете у нас главное не язык, а то что на нем программируется... у меня мат модель диалога и мат модель р.базы данных. Сейчас и веду работы чтоб в последствии по этой теме писать еще и Диплом... вот

а то что типа тока на C писать и тп... так у нас каждый год по 3 языка. и на чем мне реализовывать проект это дело мое, главное чтоб он был реализован и нужен комуто в итоге.
 

Vallar_ultra

Любитель выпить :)
2shebeko

у нас каждый год по 3 языка

Хорошо там у вас.... Я вот когда учился, такой роскоши нам не давали.... Долбаный Delphi в течении 2-х лет :(((((
 

zerkms

TDD infected
Команда форума
кошмар, что наблюдается сейчас среди программистов нового поколения - в том числе следствие подобной халтуры
т.е. ты считаешь, что, взяв чей то код, и даже не понимая что и как он делает (вместо того, чтобы потратить час и не написать собственный аналог), ты не халтуришь аналогично, да?
умиляет ;)
 
Сверху