Динамические пункты меню из базы данных - PullRequest
3 голосов
/ 21 июня 2011

Можно ли загрузить URL-адреса и атрибуты меню из базы данных?

Я создаю сайт, который будет содержать динамические новостные разделы, и было бы замечательно включить в меню новые элементы новостей без необходимости повторного ввода.-редактировать меню.

Я использую Access и ASP.

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

Да, это так.

Вы можете написать страницу ASP, которая генерирует файл определения меню (файл JS, в котором есть все строки "addmenu"). Или, точнее, этот файл ASP генерирует текст, который будет помещен в этот файл, но вы включите этот ASP в свой основной файл ASP.

Однако, если эти данные не меняются слишком часто, все же может быть лучше, чтобы фоновая программа генерировала файл JS, который затем включался бы в вашу главную страницу, поскольку это уменьшило бы нагрузку на серверы приложений. ).

1 голос
/ 21 июня 2011

В настоящее время я закончил работу с ASP - SQL2000.Я запускаю его из одной таблицы и одного запроса.

Для таблицы потребуется как минимум: -

ID (INT)

label (char or varchar - the text that appears on the page)
sub (BIT or Boolean - if true then it has submenus)
level (the parent link - for submenus only)
link (char or varchar - what happens when you click!)
seq (INT - to order the menus and submenus)

SQL или запрос для элементов корневого меню: -

SELECT [id],label,[level],sub,link FROM TOC where level=0 order by seq

Тогда: -

SELECT [id],label,[level],sub, [link] FROM TOC WHERE [level]<>0 order by [level],seq

Для подменю ..

Наконец, ASP (oMenuRoot - это набор записей для меню ROOT, oMenuSub - это набор записей для меню SUB: -

<%do until oMenuRoot.eof%>
,"<%=oMenuRoot("label")%>","<%
if oMenuRoot("sub") then
response.write "show-menu=" & oMenuRoot("id")
else
response.write Application("homePage") & "?" & oMenuRoot("link")
end if
%>",,"",1<%=vbcrlf%>
<%intRoots=intRoots+1
oMenuRoot.movenext
loop

do until oMenuSub.eof
if intOldTree<>oMenuSub("level") then
blnNewTree=true
response.write "])" & vbcrlf
else
blnNewTree=false
end if
if blnNewTree then
response.write "addmenu(menu=["""
response.write oMenuSub("level")
response.write """," & vbcrlf
response.write ",,120,1,"""",style1,,""left"",effect,,,,,,,,,,,," & vbcrlf
end if
response.write ",""" & oMenuSub("label") & ""","""
if oMenuSub("sub") then
response.write "show-menu=" & oMenuSub("id")
else
response.write Application("homePage") & "?" & oMenuSub("link")
end if
response.write """,,,1" & vbcrlf
intOldTree=oMenuSub("level")
oMenuSub.movenext
loop
response.write "])" & vbcrlf
%>

Это предварительная рабочая модель, но она работает без проблем, вы можете улучшить ее, используя один SQL-запрос и записывая весь вывод в разметку ASP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...