|
|
|
| Подскажите, пожалуйста, как заставить оставаться на месте
пункты второго уровня, когда я на них кликаю?
Меню вида:
Категория 1
-Подкатегория 1
-Подкатегория 1.1
Категория 2
-Подкатегория 2
-Подкатегория 2.2
.........................
........................
БД: id_cat, name, parent_id.
<?
include 'conf.php';
MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не могу создать соединение ");
@mysql_select_db("$dbName") or die("Не могу выбрать базу данных ");
function show_cat($parent_id = 0, $open_cat = 0)
{
$result = mysql_query('SELECT * FROM category WHERE parent_id = ' . $parent_id);
while ($row = mysql_fetch_assoc($result)) {
echo '<a href="?open_cat=' . $row['id_cat'] . '&sub=' . $row['parent_id'] . '">' . $row['name'] . '</a><br />';
if ($open_cat > 0 && $open_cat == $row['id_cat'])
{
show_cat($row['id_cat']);
}
}
}
show_cat(0, (int) $_GET['open_cat']);
?>
|
Спасибо. | |
|
|
|
|
|
|
|
для: sparhok13
(26.06.2008 в 00:13)
| | Неужели никто не может помочь? ((( | |
|
|
|
|
|
|
|
для: sparhok13
(26.06.2008 в 21:48)
| | Неужели никто не может помочь? ((( | |
|
|
|
|
|
|
|
для: sparhok13
(30.06.2008 в 00:38)
| | ПАМАГИТЕЕЕ КТО НИБУДЬ С ЭТМ МЕНЮ.... :( :( :( | |
|
|
|
|
|
|
|
|
для: sparhok13
(26.06.2008 в 00:13)
| | В запроcе SELECT добавить ORDER BY | |
|
|
|
|
|
|
|
для: Yuriev
(30.06.2008 в 11:22)
| | блин. | |
|
|
|
|
|
|
|
для: sparhok13
(30.06.2008 в 21:38)
| | Как говорит сheops "возможно, Вас заинтересует эта тема" .
http://softtime.ru/forum/read.php?id_forum=3&id_theme=53674 | |
|
|
|
|
|
|
|
для: sparhok13
(26.06.2008 в 00:13)
| | Как у вас происходит построение категорий и под категорий?? у вас храняться адреса в одной таблице?? Пример:
id_parent | cat_id | name
1______ 1 _____подкатегория1.1
2______ 1 _____подкатегория1.2
3______ 1 _____подкатегория1.3
4______ 2 _____подкатегория2.1
5______ 2 _____подкатегория2.2
и тд.
Хотя врятли!! Или у вас храняться подкатегории в другой таблице? Что похоже на правду??
Напишите хотябы пример таблиц. Чтоб я понял! :)) | |
|
|
|
|
|
|
|
для: Usta
(01.07.2008 в 00:00)
| | Да! Все хранится в одной табице, только поле id_parent нужно поменять местами с cat_id. Вот так:
cat_id | id_parent | name
1______ 1 _____подкатегория1.1
2______ 1 _____подкатегория1.2
3______ 1 _____подкатегория1.3
4______ 2 _____подкатегория2.1
5______ 2 _____подкатегория2.2 | |
|
|
|
|
|
|
|
для: sparhok13
(26.06.2008 в 00:13)
| | Вот с 3 уровнями вложенности. Работает.
Таблица с полями id - id пункта, pid - id родителя, name - название
Нехватает мне мозгов сделать рекурсивную функцию.
2 вложенных цикла while. Коряво, но по другому не могу, к сожалению.
Может подскажет кто?
<?php
$q = "SELECT * FROM `menu` WHERE `pid`='0'";
$r = mysql_query($q);
if(!$r)
die(mysql_error());
while($parent = mysql_fetch_array($r))
{
echo "<a href=\"$_SERVER[PHP_SELF]?parent=$parent[id]\"><b>$parent[name]</b></a><br />";
//echo $parent['pid'];
if($_GET['parent'] == $parent['id'])
{
$q1 = "SELECT * FROM `menu` WHERE `pid`='".$_GET['parent']."'";
//echo $q1;
$r1 = mysql_query($q1);
if(!$r1)
die(mysql_error());
while($sub1 = mysql_fetch_array($r1))
{
echo " <a href=\"$_SERVER[PHP_SELF]?parent=$sub1[pid]&sub1=$sub1[id]\">$sub1[name]</a><br />";
if($sub1['id'] == $_GET['sub1'])
{
$q2 = "SELECT * FROM `menu` WHERE `pid`='$_GET[sub1]'";
$r2 = mysql_query($q2);
if(!$r2)
die(mysql_error());
while($sub2 = mysql_fetch_array($r2))
{
echo " <a href=\"$_SERVER[PHP_SELF]?parent=$sub1[pid]&sub1=$sub1[id]&sub2=$sub2[id]\"><small>$sub2[name]</small></a><br />";
}
}
}
}
}
?>
|
| |
|
|
|