потому что практиковаться надо а не херней заниматься годик в каком нить движке покопаешься - многому научишься а бесконечные учебные задания нихрена не дадут за два с половиной года пора бы это уже понять
в учебные материалы я уже давно не смотрю я по чуть чуть практикуюсь, да и в мануал заглядываю) делаю вот так запрос: PHP: SELECT `c`.`category_id`, `c`.`category_name`, `s`.`categ_id`, `s`.`subcategory_name` FROM `game_category` c LEFT JOIN `game_subcategories` s ON ( `c`.`category_id` = `s`.`categ_id` ) WHERE `c`.`category_status` = 1 ORDER BY `s`.`categ_id` ASC все данные выводятся хорошо в php_my_admin базе, но если я в левое меню массивом хочу перебрать категории, то в меню будут повторятся категории так как в категориях будет подкатегории, как в таком случае поступать? делать 2 запроса, один просто вытягивает категории, второй категория id попадает в подкатегорию?
Ок повторюсь, как убрать повторяющие значения из меню? PHP: return $this -> db -> sel(' SELECT `c`.`category_id`, `c`.`category_name`, `s`.`categ_id`, `s`.`subcategory_name` FROM `game_category` c LEFT JOIN `game_subcategories` s ON ( `c`.`category_id` = `s`.`categ_id` ) WHERE `c`.`category_status` = 1 ORDER BY `c`.`category_sort`, `s`.`categ_id` ASC'); сделал запрос. PHP: $category = new CategoryGame(); $listCategory = $category -> getCategoriesList(); в контроллере вызвал. HTML: <?php foreach ( $listCategory as $ctg ): ?> <div class="list-group-item list-group-item-action category-group-title" data-target="#collapse<?php echo $ctg['category_id']; ?>" data-toggle="collapse"> <h5><?php echo $ctg['category_name']; ?></h5> </div> <div class="collapse" id="collapse<?php echo $ctg['categ_id']; ?>"> <a class="list-group-item list-group-item-action" href="/category/<?php echo $ctg['categ_id']; ?>"> { <?php echo $ctg['subcategory_name']; ?> }</a> </div> <?php endforeach; ?> в шаблоне вывел через массив, и после этого у меня дублируется категории, так как подкатегории для этих категорий несколько. Как можно придумать чтобы в меню выводилось по одной категории?
@_ne_scaju_, самый простой вариант собрать всё в ассоциативный массив, одинаковые ключи перезапишутся.
да уж у меня не ключи повторяются а category_name - название категории, ключи все разные от 0 и до...
Код (Text): table_keys | id | name table_key_values | key_id | value Не понимаю чем тебя не устраивает схема: table categories: id | parent_id | name 1 0 Категория 2 1 ПодКатегория 2 1 ПодКатегория 3 0 Категория 4 3 ПодКатегория 5 4 ПодПодКатегория
может и устроило, но я сути не могу уловить) а теперь посидел три минуты подумал и вроде понял) типа: если будет 0 - это категория, если например 20 - это подкатегория и т.д. Ок а как я свяжу подкатегори с категориями? Допустим для категории 1 есть 5 подкатегорий а для категории 2 есть 3 подкатегории? Я не пойму если для категорий будет ключ 0 как же подкатегория поймет что имено этот ключ от ее категории?
@_ne_scaju_, пристрелить тебя мало разберись что такое id, а что такое parent_id и как они связаны ключа 0 нет ни у кого, он есть только в parent_id и это означает что это категория т.е. самый верхний уровень
Код (Text): select * from categories where parent_id = 0 # выбрать все категории select * from categories where parent_id = 2 # выбрать все категории у которых родительская категория равна id 2 select * from categories where id = 2 or parent_id = 2 # выбрать родительскую категорию и все дочерии категории
ай я забыл что ключ это первая ячейка, сейчас сижу через телефон) тогда я понял что мне предложили, буду использовать этот вариант, отпишусь когда сделаю, только это вечером будет
Код (Text): INSERT INTO `game_category` (`category_id`, `parent_id`, `category_name`, `category_status`) VALUES (1, 0, 'WORLD OF TANKS', 1), (2, 0, 'WORLD OF WARSHIPS', 1), (4, 0, 'DOTA 2', 1), (6, 0, 'CSGO', 1), (7, 1, 'wot-1', 0), (8, 1, 'wot-2', 0), (12, 1, 'dota-1', 0), (13, 1, 'dota-2', 0), (14, 1, 'dota-3', 0), (15, 1, 'CS-1', 0), допустим создал таблицу вставил записи, вывожу записи. PHP: return $this -> db -> sel('SELECT `category_id`, `category_name` FROM `game_category` WHERE `parent_id` = 0 AND `category_status` = 1'); запрос выводит все категории те у которых parent_id = 0 и статус равен = 1. а как же связать подкатегории с категорией?) подкатегорией считаю все id от 7 и до 15. пример, хочу чтобы wot-1 wot-2 входил в категории world of tanks, я в меню нажимаю на эту категории и после выводится эти подкатегории. и вообще объясните мне если подкатегория dota-1 и dota 2 и другие не касаются категории world of tanks то parent_id должен быть другой у dota-1-2 и других подкатегорий?
аааааааааааааааа блин, это самая простая реализация, тут вообще думать не надо ну что сложного в parent_id подкатегории указать id родительской категории???
Код (Text): (1, 0, 'WORLD OF TANKS', 1), (2, 0, 'WORLD OF WARSHIPS', 1), (4, 0, 'DOTA 2', 1), (6, 0, 'CSGO', 1), (7, 1, 'wot-1', 0), (8, 1, 'wot-2', 0), (12, 1, 'dota-1', 0), (13, 1, 'dota-2', 0), (14, 1, 'dota-3', 0), (15, 1, 'CS-1', 0), допустим для world of tanks родительским будет 1, а для dota родительским будет 4 ? все дело в том что я такое меню не когда не делал, придумал захотел сделать, и проблемы появились, не могу сообразить мысли есть а воображение не работает.
продолжаю дальше разбирать у меня голова пока не адаптировалась питаюсь вытащить это меню категории и подкатегории. Шаблон: Спойлер: Шаблон HTML: <div class="row"> <div class="col-lg-12"> <div class="list-group"> <?php foreach ( $listCategory as $key => $ctg ): ?> <div class="list-group-item list-group-item-action category-group-title" data-target="#collapse<?php echo $ctg['category_id']; ?>" data-toggle="collapse"> <h5><?php echo $ctg['category_name']; ?></h5> </div> <div class="collapse" id="collapse<?php echo $ctg['category_id']; ?>"> <a style="color: red;" class="list-group-item list-group-item-action" href="/category/<?php echo $ctg['category_id']; ?>"> { <?php echo $ctg['category_name']; ?> } </a> </div> <?php endforeach; ?> </div> </div> </div> Вызов в котроллере: Спойлер: Контроллер PHP: public function indexAction() { # Список категорий игровых для левого меню $category = new CategoryGame(); $listCategory = $category -> getCategoriesList(); # Список последних игр $product = new UserProductGame(); $listGame = $product -> getLatestProducts(8); # Подключаем вид require_once('app/views/main/index.php'); return true; } Запрос в модели: Спойлер: Модель PHP: public function getCategoriesList() { return $this -> db -> sel('SELECT * FROM `game_category` WHERE `parent_id` = 0 AND `category_status` = 1'); } в итоге мы достали все категории меню, и через цикл перебрали, теперь догнать не могу а как же подкатегории вытащить? то-ли делать еще один запрос то ли можно из этого запроса вытащить данные? var_dump( $listCategory ) выводит только категории без подкатегорий.
Код (Text): (1, 0, 'WORLD OF TANKS', 1), (2, 0, 'WORLD OF WARSHIPS', 1), (4, 0, 'DOTA 2', 1), (6, 0, 'CSGO', 1), (7, 1, 'wot-1', 0), (8, 1, 'wot-2', 0), (12, 4, 'dota-1', 0), (13, 4, 'dota-2', 0), (14, 4, 'dota-3', 0), (15, 6, 'CS-1', 0),
так я вчера задал вопрос правильно ли я думаю, про связь подкатегорий, так же само я вчера еще сделал, за направление спасибо) --- Добавлено ---
короче получается так если я в моделе делаю запрос с указанием парент_ид=0 то выводится будет только категории, если я сделаю запрос без условия where то у меня будут все записи этой таблицы, и мне нужно будет через цикл перебрать данные чтобы они в меню были нужным образом, верно? Допустим если останеться как есть у меня в примере думаю не чего путевого не выйдет, нужно это дело по другому делать! Возможно цикл в цикле.