Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вывод менюшки из БД посредством PHP->Java (https://javascript.ru/forum/misc/9242-vyvod-menyushki-iz-bd-posredstvom-php-java.html)

Kukaramba 05.05.2010 23:35

Вывод менюшки из БД посредством PHP->Java
 
Доброго времени суток.
Долго мучился с менюшкой для БД. Захотелось сделать древовидный список с открывающимися элементами. При выполнении кода (ниже) - открывается пустой экран после долгой прогрузки страницы (считывается БД). Думаю что проблема в подстановке значений из PHP в Java в самом конце кода. Помогите разобраться.
Кстати, на эту идею навело http://www.coders-library.ru/news-vi...rd-Result.html



<html><head>
</head><body>
<script language="JavaScript" src="\demo1\tree.js"></script>
<script language="JavaScript" src="\demo1\tree_items.js"></script>
<script language="JavaScript" src="\demo1\tree_tpl.js"></script>

<?php 

// database access parameters 
// alter this as per your configuration 
$host = "192.***"; 
$user = "user"; 
$pass = "123"; 
$db = "ST_"; 
$table= "project";

//Соединяемся с базой данных 
$link = pg_pconnect("host=$host dbname=$db user=$user password=$pass"); 
if (!$link) 
{ 
die("Could not open connection to database server"); 
} 

//$ID1 = 0;
function get_tree($parent_id = 0) {  
      global $out;  
      $query = "SELECT id,note,id_parent FROM project WHERE id_parent = '$parent_id'"; //начинаем с нулевого уровня 
      $result = pg_query($query);  
      while ($row = pg_fetch_array($result)) {  
          $out .= "['{$row['note']}','data.php?id={$row['id']}&pid={$row['id_parent']}',&#092;n"; 
            get_tree($row['id']);  //идём дальше "внутрь" если  
//есть у данного id подуровни 
            $out .= "],";
      }  
      return $out;  //возвращаем сформированую структуру.  
//Не хватает только начальной строки и конечной 
} 
?>


<?php

//Начинаем с начальной строки 
$tree_items = "[ ['HOME', 'index.php',"; 
//Вызываем функцию для построения меню 
$tree_items .= get_tree(); 
//Заканчиваем структуру конечной строкой 
$tree_items .= "] ];"; //Всё, структура для меню получена

echo '<script language="JavaScript" 
   <!--//
 var TREE_ITEMS = '.$tree_items.'; //создаём массив и  
//подставляем в него сформированные ранее данные 
   new tree (TREE_ITEMS, TREE_TPL); //вызываем функцию яваскрипт,  
//которая разберёт нашу структуру и отрисует наше меню 
//-->
</script>';
?>



</body></html>

DooMer 06.05.2010 14:10

выгружай все меню и преобразуй его в древовидную структуру
З.Ы. Рекурсия зло

Kukaramba 06.05.2010 14:32

Как я могу применить это на БД?? Я новичок в этом....

Kolyaj 06.05.2010 14:37

Цитата:

Сообщение от DooMer
З.Ы. Рекурсия зло

Да ладно.

DooMer 06.05.2010 14:39

$query = "SELECT id,note,id_parent as parentId FROM project"; //загрузка всей таблицы БД

далее приведенны по ссылке функции преобразуют меню в дерево

DooMer 06.05.2010 14:42

Цитата:

Сообщение от Kolyaj (Сообщение 54363)
Да ладно.

ну скорость работы меньше в разы чем у цикла + есть шанс переполнения стека(не в этом случае) + дергать базу Н раз вместо всеголишь 1го...

Kukaramba 06.05.2010 17:56

эмм... заменил свою строку этой, и опять - ничего....

Kukaramba 06.05.2010 18:00

Блин, что ж сделать то, чтобы менюшка заработала??

Kukaramba 06.05.2010 18:11

:dance: ...это уже танцы с бубнами....

Kukaramba 07.05.2010 10:29

Сделал менюшку (Ура! Получилось. Спасибо всем за помощь). Теперь при выборе пункта меню - получается такая ссылка:
http://docum/table2.php?id=3&id_parent=0
При переходе на которую - страница не найдена.
Я так понимаю - мне нужно создать еще страницу, гду в запросe SELECT отлавливать id и id_parent. Подскажите, нужно ли как то обозначать эти переменные, или просто сделать страницу с таблицой, где в SELECT будет прописано id=*** id_parent=***??


Часовой пояс GMT +3, время: 12:58.