Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MySql + дрвовидное меню 
:(
    Опции темы
agarheim
Дата 26.5.2007, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 2.3.2006

Репутация: нет
Всего: нет



Нашел много статей на тему создания древовидного меню. Но как сделать его динамическим так и ненашел. В силу того что пока учусь. код вышел кривоват но работоспособен. Может мне кто -то поможет и подкоректирует мой код. или направит в другое русло.

Код

<script language=JavaScript>

function show(obj) {
if (document.getElementById(obj).style.display == 'none') 
document.getElementById(obj).style.display = 'block';
else document.getElementById(obj).style.display = 'none';
}
</script>
<style>
p { margin: 0px}

.sub 
  { padding-left: 20px;
    display: block;
    background: #DC334A;
    padding: 5 5 5 20;
    width: 125px }

.treemenu { cursor: pointer;
        background: #ccf54e;
        padding: 5px;
        display: block;
        width: 110px;
        color: #979797;
        font-weight: bold }

.sub a { color: #000000; text-decoration: 
</style>
<?
$bd_host="localhost";
$bd_user="root";
$bd_pass="";
$bd_name="myshop";
error_reporting (E_ERROR | E_WARNING | E_PARSE);
//include("./config/session.php");
@MYSQL_CONNECT($bd_host, $bd_user,$bd_pass) or die("Îøèáêà ïðè ñîåäèíåíèè ñ Áàçîé MySQL!!!");
@MYSQL_SELECT_DB($bd_name) or die("Íå ìîãó âûáðàòü òàáëèöó <b>$bd_name</b>");

$sql02=mysql_query("select * from `categories` where parent=1 order by parent asc");
$num_results = mysql_num_rows($sql02);
for ($i=0; $i <$num_results; $i++)
 {  $row = mysql_fetch_assoc($sql02);
    $s= '<span class="treemenu" onclick="show('."'sub$i'".')">'.$row['name']."</span>";
    
    $sql03=mysql_query("select * from `categories` where parent=".$row['categoryID']." order by parent asc");
    $num_results1 = mysql_num_rows($sql03);
     if ($num_results1>0) { 
    for ($y=0; $y <$num_results1; $y++)
 {  $row3 = mysql_fetch_assoc($sql03);
    if ($y<=0) {$s.='<span class="sub" id="sub'.$i.'" style="display: none">'; }
        $s.='<p><a href="#">'.$row['name'].'</a></p>';
 }}
  $s.='</span>';
 $r=$s;
 $s=0;
 echo $r;
 }
?>


Код

CREATE TABLE `categories` (
  `categoryID` int(11) NOT NULL auto_increment,
  `name` varchar(255) default NULL,
  `parent` int(11) default NULL,
   PRIMARY KEY  (`categoryID`),
  KEY `IDX_CATEGORIES1` (`parent`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;


Данные в табличке следующего плана 
categoryID   name parent
 2                   test1      1
3                   test1      1
4                   test1      2
5                   test1      2
6                   test1      3
7                   test1      3
больше чем 2 не будет вложенности. заранее спасибо

PM MAIL WWW ICQ   Вверх
Master
Дата 3.6.2007, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



ужОс

Это делается следующим образом:
Поле `id_parent` создается не для уровня страницы, а для указатеся на родительский идентификатор. если разделы находятся в корне, то id_parent равен нулю.
Для вывода такого меню используются не вложенные циклы, а рекурсивная функция (вызывающая сама себя)


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
kit_kat
Дата 3.6.2007, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 25.2.2007
Где: Петербург

Репутация: нет
Всего: 6



FAQ: http://vingrad.ru/PHP-FAQ-002203
Лаконично и понятно.
PM MAIL WWW   Вверх
SelenIT
Дата 3.6.2007, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Другой FAQ: http://phpclub.ru/faq/wakka.php?wakka=Tree...tAll&v=1crk

Не менее лаконично, но все дела за один запрос к базе smile.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0946 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.