Ecco il menu che ti ho postato io.
fatto e funzionante.
copia il codice così com'è inserendo la tua connessione
codice:
<%@ Language=VBScript %>
<%
Response.Expires = -1500
Response.ExpiresAbsolute = now()-1500
Response.Addheader "pragma","no-cache"
Response.Addheader "cache-control","private"
Response.Cachecontrol="no-cache"
%>
<%
'Apertura connessione Database
call OpenConnection()
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it" dir="ltr" >
<head>
<title>Prova</title>
<style type="text/css">
/*Credits: Dynamic Drive CSS Library */
/*URL: http://www.dynamicdrive.com/style/ */
.suckertreemenu ul{
margin: 0;
padding: 0;
list-style-type: none;
}
/*Top level list items*/
.suckertreemenu ul li{
position: relative;
display: inline;
float: left;
background-color: #F3F3F3; /*overall menu background color*/
}
/*Top level menu link items style*/
.suckertreemenu ul li a{
display: block;
width: 90px; /*Width of top level menu link items*/
padding: 1px 8px;
border: 1px solid black;
border-left-width: 0;
text-decoration: none;
color: navy;
}
/*1st sub level menu*/
.suckertreemenu ul li ul{
left: 0;
position: absolute;
top: 1em; /* no need to change, as true value set by script */
display: block;
visibility: hidden;
}
/*Sub level menu list items (undo style from Top level List Items)*/
.suckertreemenu ul li ul li{
display: list-item;
float: none;
}
/*All subsequent sub menu levels offset after 1st level sub menu */
.suckertreemenu ul li ul li ul{
left: 159px; /* no need to change, as true value set by script */
top: 0;
}
/* Sub level menu links style */
.suckertreemenu ul li ul li a{
display: block;
width: 160px; /*width of sub menu levels*/
color: navy;
text-decoration: none;
padding: 1px 5px;
border: 1px solid #ccc;
}
.suckertreemenu ul li a:hover{
background-color: black;
color: white;
}
/*Background image for top level menu list links */
.suckertreemenu .mainfoldericon{
background: #F3F3F3 url(media/arrow-down.gif) no-repeat center right;
}
/*Background image for subsequent level menu list links */
.suckertreemenu .subfoldericon{
background: #F3F3F3 url(media/arrow-right.gif) no-repeat center right;
}
* html p#iepara{ /*For a paragraph (if any) that immediately follows suckertree menu, add 1em top spacing between the two in IE*/
padding-top: 1em;
}
/* Holly Hack for IE \*/
* html .suckertreemenu ul li { float: left; height: 1%; }
* html .suckertreemenu ul li a { height: 1%; }
/* End */
</style>
<script type="text/javascript">
//SuckerTree Horizontal Menu (Sept 14th, 06)
//By Dynamic Drive: http://www.dynamicdrive.com/style/
var menuids=["treemenu1"] //Enter id(s) of SuckerTree UL menus, separated by commas
function buildsubmenus_horizontal(){
for (var i=0; i<menuids.length; i++){
var ultags=document.getElementById(menuids[i]).getElementsByTagName("ul")
for (var t=0; t<ultags.length; t++){
if (ultags[t].parentNode.parentNode.id==menuids[i]){ //if this is a first level submenu
ultags[t].style.top=ultags[t].parentNode.offsetHeight+"px" //dynamically position first level submenus to be height of main menu item
ultags[t].parentNode.getElementsByTagName("a")[0].className="mainfoldericon"
}
else{ //else if this is a sub level menu (ul)
ultags[t].style.left=ultags[t-1].getElementsByTagName("a")[0].offsetWidth+"px" //position menu to the right of menu item that activated it
ultags[t].parentNode.getElementsByTagName("a")[0].className="subfoldericon"
}
ultags[t].parentNode.onmouseover=function(){
this.getElementsByTagName("ul")[0].style.visibility="visible"
}
ultags[t].parentNode.onmouseout=function(){
this.getElementsByTagName("ul")[0].style.visibility="hidden"
}
}
}
}
if (window.addEventListener)
window.addEventListener("load", buildsubmenus_horizontal, false)
else if (window.attachEvent)
window.attachEvent("onload", buildsubmenus_horizontal)
</script>
</head>
<%
function menuAlbero(idPadre,byref strMenu,indice)
dim RsFigli,Rs1
set Rs1=Server.CreateObject ("ADODB.recordset")
set RsFigli=Server.CreateObject ("ADODB.recordset")
spazio=""
'esecuzione della query
sSQL="select * from menu "
sSQL=sSQL & " where id_Padre=" & idPadre
sSQL=sSQL & " order by nome_menu"
'Response.Write sSQL
Rs1.Open sSQL,objConn,3,3
if not Rs1.EOF then
'ciclo sui risultati trovati
strMenu=strMenu & vbcrlf
do while not Rs1.EOF
idMenu=Rs1.Fields ("id")
descrizione=Rs1.Fields ("nome_menu")
link=Rs1.Fields ("http")
'Controllo se il menu ha dei figli
sSQL="select count(*) as NumFigli from menu where id_Padre=" & idMenu
RsFigli.Open sSQL,objConn,3,3
NumFigli=RsFigli.Fields ("NumFigli")
RsFigli.Close
spazio=""
for i=0 to indice
'spazio=spazio & ""
next
'Gestione del link
link=trim(link)
descrizione=trim(descrizione)
strMenu=strMenu & spazio & "[*]" & descrizione & "" & vbcrlf
if NumFigli>0 then
strMenu=strMenu & "<ul>" & vbcrlf
indice=indice+1
'Se esistono dei figli richiamo la funzione sul menu figlio
call menuAlbero(idMenu,strMenu,indice)
strMenu=strMenu & "[/list]" & vbcrlf
end if
strMenu=strMenu & "" & vbcrlf
Rs1.MoveNext
loop
end if
Rs1.Close
set Rs1=nothing
set RsFigli=nothing
end function
strMenu=""
call menuAlbero(999,strMenu,0)
strMenu="<div class=""suckertreemenu""><ul id=""treemenu1"">" & strMenu & "[/list]</div>"
Response.Write strMenu
%>
</body>
</html>
<%call CloseConnection()%>
Questo è il file della connessione
codice:
<%
dim objConn
dim strConn
set objConn=Server.CreateObject ("ADODB.Connection")
objConn.CursorLocation =3
function OpenConnection()
on error resume next
DataSource=Server.MapPath ("/database.mdb")
strConn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DataSource & ";Persist Security Info=False;"
objConn.Open strConn
if err.number <>0 then
Response.Write DataSource & "
"
Response.Write strConn & "
"
Response.Write "ERRORE:
" & err.number & "
" & err.Description
Response.End
end if
end function
function CloseConnection()
objConn.Close ()
set objConn=nothing
end function
%>
ciao