Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.05.2010, 23:35
Новичок на форуме
Отправить личное сообщение для Kukaramba Посмотреть профиль Найти все сообщения от Kukaramba
 
Регистрация: 05.05.2010
Сообщений: 8

Вывод менюшки из БД посредством 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>
Ответить с цитированием
  #2 (permalink)  
Старый 06.05.2010, 14:10
Ламер
Отправить личное сообщение для DooMer Посмотреть профиль Найти все сообщения от DooMer
 
Регистрация: 19.02.2010
Сообщений: 295

выгружай все меню и преобразуй его в древовидную структуру
З.Ы. Рекурсия зло
Ответить с цитированием
  #3 (permalink)  
Старый 06.05.2010, 14:32
Новичок на форуме
Отправить личное сообщение для Kukaramba Посмотреть профиль Найти все сообщения от Kukaramba
 
Регистрация: 05.05.2010
Сообщений: 8

Как я могу применить это на БД?? Я новичок в этом....
Ответить с цитированием
  #4 (permalink)  
Старый 06.05.2010, 14:37
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от DooMer
З.Ы. Рекурсия зло
Да ладно.
Ответить с цитированием
  #5 (permalink)  
Старый 06.05.2010, 14:39
Ламер
Отправить личное сообщение для DooMer Посмотреть профиль Найти все сообщения от DooMer
 
Регистрация: 19.02.2010
Сообщений: 295

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

далее приведенны по ссылке функции преобразуют меню в дерево
Ответить с цитированием
  #6 (permalink)  
Старый 06.05.2010, 14:42
Ламер
Отправить личное сообщение для DooMer Посмотреть профиль Найти все сообщения от DooMer
 
Регистрация: 19.02.2010
Сообщений: 295

Сообщение от Kolyaj Посмотреть сообщение
Да ладно.
ну скорость работы меньше в разы чем у цикла + есть шанс переполнения стека(не в этом случае) + дергать базу Н раз вместо всеголишь 1го...
Ответить с цитированием
  #7 (permalink)  
Старый 06.05.2010, 17:56
Новичок на форуме
Отправить личное сообщение для Kukaramba Посмотреть профиль Найти все сообщения от Kukaramba
 
Регистрация: 05.05.2010
Сообщений: 8

эмм... заменил свою строку этой, и опять - ничего....
Ответить с цитированием
  #8 (permalink)  
Старый 06.05.2010, 18:00
Новичок на форуме
Отправить личное сообщение для Kukaramba Посмотреть профиль Найти все сообщения от Kukaramba
 
Регистрация: 05.05.2010
Сообщений: 8

Блин, что ж сделать то, чтобы менюшка заработала??
Ответить с цитированием
  #9 (permalink)  
Старый 06.05.2010, 18:11
Новичок на форуме
Отправить личное сообщение для Kukaramba Посмотреть профиль Найти все сообщения от Kukaramba
 
Регистрация: 05.05.2010
Сообщений: 8

...это уже танцы с бубнами....
Ответить с цитированием
  #10 (permalink)  
Старый 07.05.2010, 10:29
Новичок на форуме
Отправить личное сообщение для Kukaramba Посмотреть профиль Найти все сообщения от Kukaramba
 
Регистрация: 05.05.2010
Сообщений: 8

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
javascript и php (Вопрос) Гауляйтер Общие вопросы Javascript 3 06.05.2009 09:23