помогите реализовать трехуровневое меню на 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, спасибо попробую...
LindonAlex, спасибо попробую...

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


Спустя 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";
}
}
_____________
Админы и программисты - люди иного мира.