IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   DHTMLMenu 6 and JavaScript+ php, динамическое меню (https://www.imho.ws/showthread.php?t=109853)

S&S 17.10.2006 21:13

DHTMLMenu 6 and JavaScript+ php, динамическое меню
 
Вложений: 1
Проблема в следующем с помощью программы DHTMLMenu 6 создаю JavaScript динамическое меню т.е все его поля загружаются из базы данных с помощью языка php и если JavaScript меню разместить в отдельном js файле и подключить к html документу то меню не появляется ,а если его скрипт непосредственно встроить в html документ то все работает нормально
Пример скрипта встроенного в html документ
PHP код:

<?php  $connect=mysql_connect("localhost","root","") or die("Could not connect: " mysql_error());  mysql_select_db("allpricelistbox",$connect) or die ('Can\'t use dhtmlmenu : ' mysql_error());  $category=mysql_query("SELECT * FROM Show_poll");  ?>  <HTML>  <BODY>  <TITLE> New Document </TITLE>  <META NAME="Generator" CONTENT="EditPlus">  <META NAME="Author" CONTENT="">  <META NAME="Keywords" CONTENT="">  <META NAME="Description" CONTENT="">  <script type="text/javascript" language="JavaScript1.2" src="file:///C|/WebServers/home/menu.ru/www/stmenu.js"></script>  </HEAD>  <BODY>  <script type="text/javascript" language="JavaScript1.2">  <!--  stm_bm(["menu75de",600,"file:///C|/WebServers/home/menu.ru/www","blank.gif",0,"","",0,0,250,0,1000,1,0,0,"","",0,0,1,2,"default","hand","file:///C|/WebServers/home/menu.ru/www/"],this);  stm_bp("p0",[1,4,0,0,2,3,0,0,100,"",-2,"",-2,50,0,0,"#999999","#FFFFF7","",3,1,1,"#000000"]);    <?php  while($r_category=mysql_fetch_array($category))    $Name $r_category["name_poll"];  ?>  stm_ai("p0i0",[1,"<?= $Name ?>","","",-1,-1,0,"","_self","","","","",0,0,0,"","",0,0,0,0,1,"#FFFFF7",0,"#B5BED6",0,"","",3,3,1,1,"#FFFFF7","#000000","#000000","#000000","8pt Verdana","8pt Verdana",0,0]);  <?php  }  ?>  stm_ep();  stm_em();  //-->  </script>    </BODY>  </HTML>  <?php  mysql_close($connect)  ?>

Пример скрипта в отдельном файле js
Файл menu_tr.js
Код:

stm_bm(["menu75de",600,"","blank.gif",0,"","",0,0,250,0,1000,1,0,0,"","",0,0,1,2,"default","hand",""],this);  stm_bp("p0",[1,4,0,0,2,3,0,0,100,"",-2,"",-2,50,0,0,"#999999","#FFFFF7","",3,1,1,"#000000"]);    <?php  while($r_category=mysql_fetch_array($category))  {  $Name = $r_category["name_poll"];  ?>    stm_ai("p0i0",[1,"<?= $Name ?>","","",-1,-1,0,"","_self","","","","",0,0,0,"","",0,0,0,0,1,"#FFFFF7",0,"#B5BED6",0,"","",3,3,1,1,"#FFFFF7","#000000","#000000","#000000","8pt Verdana","8pt Verdana",0,0]);    <?php  }  ?>    stm_ep();  stm_em();
Подключение файла menu_tr.js в html
Код HTML:

<?php  $connect=mysql_connect("localhost","root","") or die("Could not connect: " . mysql_error());  mysql_select_db("allpricelistbox",$connect) or die ('Can\'t use dhtmlmenu : ' . mysql_error());  $category=mysql_query("SELECT * FROM Show_poll");  ?>  <HTML>  <BODY>  <TITLE> New Document </TITLE>  <META NAME="Generator" CONTENT="EditPlus">  <META NAME="Author" CONTENT="">  <META NAME="Keywords" CONTENT="">  <META NAME="Description" CONTENT="">  <script type="text/javascript" language="JavaScript1.2" src="file:///C|/WebServers/home/menu.ru/www/stmenu.js"></script>  </HEAD>    <BODY>  <script type="text/javascript" language="JavaScript1.2" src="file:///C|/WebServers/home/menu.ru/www/menu_tr.js"></script>  </BODY>  </HTML>  <?php  mysql_close($connect)  ?>
ГДЕ Глюк :confused:
в архиве скрипт

EvroStandart 18.10.2006 14:08

У тебя в js файле php код. Наверно сервер его не обрабатывает.

<Descriptor> 18.10.2006 20:14

Наверное надо файл menu_tr.js переименовать в menu_tr.php
А в HTML-файле, соответственно, написать <script type="text/javascript" language="JavaScript1.2" src="file:///C|/WebServers/home/menu.ru/www/menu_tr.php">
А ещё лучше: <script type="text/javascript" language="JavaScript1.2" src="menu_tr.php">

S&S 18.10.2006 21:20

Цитата:

Сообщение от EvroStandart
У тебя в js файле php код. Наверно сервер его не обрабатывает.

Дело в том что сам редактор DHTMLMenu 6 вставляет php код в js файл и создает все файлы.
Цитата:

Сообщение от Descriptor
Наверное надо файл menu_tr.js переименовать в menu_tr.php А в HTML-файле, соответственно, написать <script type="text/javascript" language="JavaScript1.2" src="file:///C|/WebServers/home/menu.ru/www/menu_tr.php"> А ещё лучше: <script type="text/javascript" language="JavaScript1.2" src="menu_tr.php">

Переименовывал но результат тот же, мне кажется, что переменные php которые используются в js файле не проинициализированы иного объяснения тому, что при использовании внешнего js файла код не работает, а при вставки его в страницу все работает я не нахожу. Но почему они не проинициализированы ?? ведь весь код создает этот редактор я не догоняю. :idontnow:

<Descriptor> 19.10.2006 13:16

Цитата:

S&S:
Дело в том что сам редактор DHTMLMenu 6 вставляет php код в js файл и создает все файлы.
Но он при этом не может знать, как настроен твой сервер.

Цитата:

S&S:
использовании внешнего js файла код не работает
А путь до файла ты проверил? А то у тебя в твоём первоначлаьном примере был указан абсолютный путь в windows.

EvroStandart 19.10.2006 15:58

Цитата:

S&S:
мне кажется, что переменные php которые используются в js файле не проинициализированы
Они и не могут быть проинициализированы. Если броузер подгружает другой файл, код в том файле выполняется отдельно. Скорее всего на момент его запуска выполнение основного файла закончилось. А если не закончилось, они должны попасть в разные потоки (или как там это называется...).

В общем, бери первый пример, вырезай скрипт, а на его место пропиши include "js.php";
и будет тебе счастье.

<Descriptor> 19.10.2006 17:19

Цитата:

EvroStandart:
а на его место пропиши include "js.php";
Это не рационально :-) Просто надо сделать так, чтобы js.php работал. А уж потом подключать его как скрипт.
Если для работы этого файла нужны какие-то переменные по результатам работы основного скрипта, то нужно задумать о передаче этих переменных.
Или, если это возможно, вычислять все нужные переменные прямо в js.php.

EvroStandart 20.10.2006 10:47

Цитата:

<Descriptor>:
вычислять все нужные переменные прямо в js.php.
Так в чём проблема? Стираеш из первого примера весь хтмл и записываеш как js.php - тогда можно его подгружать как ты уже пробовал.

<Descriptor> 20.10.2006 13:33

Цитата:

EvroStandart:
Так в чём проблема? Стираеш из первого примера весь хтмл и записываеш как js.php - тогда можно его подгружать как ты уже пробовал.
Я. собственно, примерн то же самое и предлагаю.
Ну, конечно не так тупо и прямолинейно. Придётся убрать не только HTML, но и многое другое из php-кода, что для JavaScript-меню не нужно. Самое главное - лишние запросы в базу (если они там есть, конечно).

EvroStandart 20.10.2006 14:12

Цитата:

<Descriptor>:
Ну, конечно не так тупо и прямолинейно.
Если ты такой умный, может распишеш по пунктам что надо делать и на какие кнопки нажимать?

Цитата:

<Descriptor>:Придётся убрать не только HTML, но и многое другое из php-кода, что для JavaScript-меню не нужно.
Судя по этой надписи, ты сам код не смотрел и не представляеш что он делает. :ржать:
Объясняю для ленивых. В первом файле автоматически сгенерированный код для меню. В начале файла делается выборка категорий из базы. Внутри яваскрипта эти категории вставляются через пхп. Больше там ничего не происходит. Соответственно, если убрать весь хтмл там как раз останется только то что нужно.

S&S 20.10.2006 15:34

Цитата:

Сообщение от <Descriptor>
А путь до файла ты проверил? А то у тебя в твоём первоначлаьном примере был указан абсолютный путь в windows.

путь я потом указал как нужно но результат тот же :(
Может просто так организованные меню нельзя подгружать из внешнего js файла потому, что в примере который находиться по адресу http://www.sothink.com/product/treemenu/samples/php/phpdb.php :contract: для проги DHTMLMenu я не встречал такого, код там непосредственно вставлялся в страницу. :idontnow:

<Descriptor> 20.10.2006 16:46

Цитата:

S&S:
просто так организованные меню нельзя подгружать из внешнего js файла
Такого быть по определнию не может.
Давай для начала выясним: в файле js.php генерируется Javascript (уже на выходе, после работы сервера)? Он в точности соответствует тому, что получается при вставке в страницу?

Цитата:

EvroStandart:
Судя по этой надписи, ты сам код не смотрел и не представляеш что он делает.
Сам код я смотрел. Насколько это возможно при таком его представлении. Всё написано в 1 строку с длинной-длинной горизонтальной прокруткой.
Цитата:

EvroStandart:
В начале файла делается выборка категорий из базы. Внутри яваскрипта эти категории вставляются через пхп. Больше там ничего не происходит. Соответственно, если убрать весь хтмл там как раз останется только то что нужно.
Очень замечательно. О "лишнем" я написал на тот случай, если тут приведён не весь код.


Часовой пояс GMT +4, время: 23:33.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.