Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Как организовать хлебные крошки?
Покинул форум
Сообщений всего: 7
Дата рег-ции: Авг. 2013
Помог: 0 раз(а)
Добрый день. Я еще новичок, потихоньку изучаю PHP и недавно захотел разработать интернет-магазин, как бы применить текущие знания на практике и в будущем иметь под рукой заготовки каких-то отдельных "классических" блоков интернет магазина.
Начал написание магазина не посредственно с разработки страницы отображения категорий и товаров и почти сразу наткнулся на проблему, на которой тщетно бьюсь вот уже второй день на пролет.
В общем начал я с того, что представил как должен работать файл отображающий категории и товары, с этим справился достаточно быстро, хотя скрипт наверное нубский.
В общем логика файла такова:
Мы имеем MySQL БД, в которой находятся таблица хранения категорий и таблица хранения товаров. categories
Цитата:
id | title | alias | description | img | parent
в столбце "alias" хранится название категории на транслисте
в столбце "parent" хранится название родительской категории на транслисте (знаю, что можно использовать родительское id, но подумал, что так будет "визуально-легче-восприниматся", если идея глупая, то сделаю по id )
Собственно таблица товаров организован по классике и содержит поле parent, в котором указано имя категории в которой должен выводится данный товар.
if(!isset($cutName)){//проверяем обратились ли мы к файлу с иминем родительской категории, подкатегории которой нужно вывести. Если нет то исполняем следующий код:
$result=mysql_query("SELECT * FROM categories WHERE parent=''",$db);
//то есть выбираем категории которые не имеют родителя, следовательно категории 0-го уровня (или первого =D, как там правильно..) и дальше выводим их
//ссылка каждой категории в итого выглядит так:
<a href="shop.php?cutName=Вытянутое из таблце поле "alias" данной категории">Название категории</a>
}
//собственно если поле $cutName существует, то мы обратились к файлу пройдя уровень нулевых категорий и уже по логике находимся в подкатегориях, так что выводим следующий код
$result=mysql_query("SELECT * FROM categories WHERE parent='$cutName'",$db);
//мы получили дочерние поля категории имя которой содержится в переменной $cutName и можем, проверив не пустой ли запрос с ними работать
//ссылки на каждую категорию работают по той же модели
<a href="shop.php?cutName=Вытянутое из таблце поле "alias" данной категории">Название категории</a>
//повторяем такой же запрос для товаров
$result=mysql_query("SELECT * FROM product WHERE parent='$cutName'",$db);
Таким образом легко получаем файл в котором можем без проблем создавать многоуровневые категории с возможностью публикаций товаров, это удобно и часто востребовано (когда я работал менеджером в интернет магазине у нас использовалось структура в которой обязательно нужны данные возможности)
На пример структура "главная/музыкальные инструменты/гитары/акустические гитары".
И тут нам для удобства юзера было бы здорово выгрузить все "акустические гитары", но над ними выгрузить еще категории "струны для акустических гитар", "аксессуары для акустических гитар и тд
Но в общем проблема в том, что я совершенно не догоняю, как правильно теперь сделать хлебные крошки для такой модели сайта... уровень знаний еще не тот наверно, а подходящего решения уже второй день не могу найти..
Помогите плиз (Добавление)
Оу... не в ту категорию написал... хотел в "Вопросы новичков"
imya
Отправлено: 08 Августа, 2013 - 15:57:56
Участник
Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012 Откуда: Запорожье, Украина
Простите, забыл написать, что техническим "вебдевелоперским" английским тоже еще не блистаю... что то понимаю уже, а чего то еще нет и от больших статей с терминами мозги через уши текут
Пробовал воспользоваться гугл переводчиком, но от перевода ужаснулся еще больше чем от своего и попробовал искать решение на русских просторах
imya
Отправлено: 08 Августа, 2013 - 16:24:08
Участник
Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012 Откуда: Запорожье, Украина
Я сам не писал крошек, но тут, по идее, нужна рекурсия
Эти примеры (кроме одного) находил в интернете, но в одном для вордпресс, я так понимаю там своя CMS заморочина, у одного парня вообще простой вариант, а вот третье , на "#ХешКоде" действительно работает, вот только там необходимо в массив выводить имена и ссылки на сами крошки, а я как раз это не могу сообразить
вот так там:
Хм.. рекурсия... знаю что это, в теории, а вот как на практике применить.. знаний не хватает.
У меня была одна идея... но это страшная кракозябра наверное
Принцип идеи такой:
допустим мы находимся в категории "планшеты Samsung" а путь до нее такой
главная - электроника - планшеты и телефоны - планшеты - планшеты Samsung
Тогда, в теории можно вывести крошки следующим способом:
//кроме ссылки у нас осталось еще значение имени родительской категории "планшетов
if($myrow['parent']!=''){
//знаем, что наша категория не 0-вого уровня, и имеет родителя
//далее повторяем ту же модель и получаем ссылку "Планшеты и телефоны" и имя родительской категории планшетов и телефонов
}
}
таких "многоуровневых if'ов можно нахреначить штук 30 (вряд ли у кого то будеть больше 30 подкатегорий) .... но это наверное кракозябра страшнейшея... может есть способ провести то же самое, но проще визуально и с меньшим количеством запросов?
видел, но как быть с "mySQLi", ведь обычно хостах установлен mySQL..
Я так понял "mySQLi" это улучшенная версия mySQL?
Или можно использовать "mySQLi" при установленной на хосте mySQL?
DeepVarvar
Отправлено: 08 Августа, 2013 - 21:40:03
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Покинул форум
Сообщений всего: 7
Дата рег-ции: Авг. 2013
Помог: 0 раз(а)
caballero пишет:
Цитата:
но вроде единственное не монстроподобное,
если хранимая процедура в полсотни строк не монстроподобное то даже не заню что тогда монстроподобное
при нормальной организации данных в бд достаточно просто SQL запроса
да, действительно странно как то
вот не могу понять как правильно сделать что бы запрос 1 и дальше обработать все... единственное, что пришло в голову не менее чудовищно, чем хранимая процедура на 50 строк... поэтому решением ее не считаю =)
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.