[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Трехуровневое меню
divine266
Доброго времени суток...
помогите реализовать трехуровневое меню на php 2 уровня я сделал а третий как сделать не пойму...1 и 2 уровни находятся в разных таблицах,
вот код

$sql = "SELECT cat, cat_link, menu, link, p.id p_id, c.id
FROM deb_menu c
LEFT JOIN deb_cat p
ON p.menu_id=c.id"
;
$query = mysql_query($sql) or die(mysql_error());
$cat = array();
if(mysql_num_rows($query) > 0) {
while($res = mysql_fetch_assoc($query)) {
$cat[$res['id']]['menu'] = $res['menu'];
$cat[$res['id']]['id'] = $res['id'];
$cat[$res['id']]['link'] = $res['link'];

settype($cat[$res['id']]['cat'], 'array');
$cat[$res['id']]['cat'][] = $res['cat'];

settype($cat[$res['id']]['cat_link'], 'array');
array_push($cat[$res['id']]['cat_link'], $res['cat_link']);


}
}

Заранее спасибо!



Спустя 9 минут, 16 секунд (25.11.2010 - 19:19) Kuliev написал(а):
divine266
Давно делал такую штуку, выкладывал на форуме, попробуй поискать в поиске, обязательно найдешь!

Спустя 3 минуты, 39 секунд (25.11.2010 - 19:23) sergeiss написал(а):
divine266 - объясни подробнее, что именно тебе не понятно. В приведенном тобой примере можно только догадываться насчет меню. Больше похоже просто на выборку из БД... Где тут меню, где какой уровень...

Спустя 9 минут, 16 секунд (25.11.2010 - 19:32) divine266 написал(а):
ну смотри я загоняю все в массив,
$cat[$res['id']]['menu'] = $res['menu'];
$cat[$res['id']]['id'] = $res['id'];
$cat[$res['id']]['link'] = $res['link'];

это первый уровень,

settype($cat[$res['id']]['cat'], 'array');
$cat[$res['id']]['cat'][] = $res['cat'];
settype($cat[$res['id']]['cat_link'], 'array');
array_push($cat[$res['id']]['cat_link'], $res['cat_link']);

это второй уровень
вот код в шаблоне
{foreach from=$cat item=categories}
{assign var="bb" value=-1}
<div class="block_left_top">
<div
class="name_menu_left"><a href="{$site}{$categories.link}">{$categories.menu}</a></div>
</div>
<div
class="block_left_center">
<ul>

{foreach from=$categories.cat item=cat2}
{assign var="bb" value=$bb+1}
<li><a href="{$site}{$categories.link}/{$categories.cat_link.$bb}">{$cat2}</a></li>
{/foreach}
</ul>
</div>
<div
class="block_left_bottom"></div>
{/foreach}

меню получается такое
ОС
--Софт
а мне надо тоб получилось
ОС
--Софт
---Медиа

Спустя 3 часа, 22 минуты, 39 секунд (25.11.2010 - 22:55) sergeiss написал(а):
divine266 - ты каким-то шаблонизатором пользуешься, что ли?

Спустя 2 часа, 14 минут, 40 секунд (26.11.2010 - 01:10) LindonAlex написал(а):
Вообще как мне кажется, правильнее всего организовать базу данных для трех уровней, а от нее уже плясать. Попробуй сделать таким макаром - для всех разделов одна таблица. Основной поле id - auto_increment. Дальше можешь добавлять по своему усмотрению, и потом главный фокус - поле parent. Т.е. родитель. В нем записываешь id того раздела, к которому принадлежит данный подраздел. Вносишь ручками первую запись, например ROOT, id = 1. Вот все записи с parent = 1 будут на первом уровне. И так далее по порядку.
ЗЫ
Это подойдет если ты хочешь сделать раскрытие списков подразделов при активации родительского раздела. Тогда все очень просто.

Спустя 13 часов, 57 минут, 28 секунд (26.11.2010 - 15:07) divine266 написал(а):
sergeiss, да, smarty пробую узаю...еще не определился что лучше и на чем остановиться, не по теме вопрос ну если можешь что нить предложить буду благодарен...
LindonAlex, спасибо попробую... wink.gif

Спустя 1 час, 56 минут, 6 секунд (26.11.2010 - 17:03) sergeiss написал(а):
Цитата (divine266 @ 26.11.2010 - 16:07)
да, smarty пробую узаю...еще не определился что лучше и на чем остановиться, не по теме вопрос ну если можешь что нить предложить буду благодарен...

Я бы предложил забыть про шаблонизаторы и самому всё писать smile.gif Но только боюсь, что начнётся очередная холиварная война wink.gif

Спустя 19 минут, 24 секунды (26.11.2010 - 17:23) divine266 написал(а):
Цитата
Но только боюсь, что начнётся очередная холиварная война

не понял, что ты под этим подразумеваешь?)))

Спустя 58 минут, 8 секунд (26.11.2010 - 18:21) sharki написал(а):
divine266 sergeiss имеет введу, что опять пойдут возмущения от людей кто использует smarty

Спустя 3 часа, 51 минута, 31 секунда (26.11.2010 - 22:12) divine266 написал(а):
я конечно сам сторонник того что все писать самому не использовать никакихфреймворков и т.д, но пока еще не столько опыта..поэтому приходится узать готовое(((

Спустя 18 часов, 44 минуты, 32 секунды (27.11.2010 - 16:57) divine266 написал(а):
Подскажите еще...вот код как сюда можно добавить еще 1 параметр как название меню только ссылку...что то крутил крутил не могу дальше додумать...

$sql = "SELECT * FROM menu";
$q = mysql_query($sql);
while($res = mysql_fetch_assoc($q)){
$array[] = array($res['id'], $res['cat_name'], $res['parent']);
}

foreach ($array as $value ) {
$arr[$value[2]][$value[0]]= $value[1];
}

get_menu($arr,count($arr));

function menu($array,$count,$x=0)
{
if ($array[$x])
{
echo "\n".'<ul>'."\n";
foreach ($array[$x] as $key => $value)
{
echo '<li>';
echo $array[$x][$key];
menu($array,$count,$key);
echo '</li>'."\n";
}
echo '</ul>'."\n";
}
}



_____________
Админы и программисты - люди иного мира.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.