salve a tutti.
ho provato a fare un menu a tendina gerarchico tramite asp ma non riesco a rigirarmici.

l'idea progettuale è questa.
nel database ho i seguenti campi
id, etichetta, ordine, subvoce, link, sottSioNo

a me serve anche sapere se una voce di menu è la prima o l'ultima e la stessa cosa con le voci dei sottomenu

ho messo la tabella in un array
quindi ho fatto un ciclo che mi trovi la prima voce che formatterò in modo speciale.
poi cerco una voce diversa da prima e ultima e cerco tutte le voci correlate mettendole in un array diverso.
dopodichè stampo la voce root e le relative (eventuali) voci di sottomenu.
poi stampo l'ultima voce

ovviamente si fa prima a dirsi che a farsi, infatti mi mette i dati in un ordine che non capisco proprio.
potreste darmi una mano?
grazie

PS per il momento fa solo un elenco ricavando i dati da database senza nessuna formattazione.

codice:
<%
'individuo la prima voce di menu
for i=0 to contovoci-1
		if arrvocy(i, 3)=0 then
		response.Write("<li class=""first"">"& arrvocy(i, 1) &"")
'		i=contovoci
		end if
next


'individuo voci di menu centrali
					dim vocisot()
for t=0 to contovoci-1
		'verifico che NON sia la prima o l'ultima voce di menu
		if arrvocy(t, 3)<>0 AND arrvocy(t, 3)<>999   then '999=ultima voce di menu. stabilito arbitrariamente
				
				'ricerco sottomenu per la voce t attuale
				dim sot
				sot=0
				for s=0 to  contovoci-1 'conto quante voci di sottomenu ci sono
				if s<>t AND arrvocy(s, 3)<>0 AND arrvocy(s, 6)<>0 AND arrvocy(s, 3)<>999 AND arrvocy(s, 4)=arrvocy(t, 0) then 
				sot=sot+1
				end if
				next
				
					redim vocisot(sot+1, 6)
					for y=0 to sot
							if y<>t AND arrvocy(y, 3)<>0 AND arrvocy(y, 6)<>0 AND arrvocy(y, 3)<>999 AND arrvocy(y, 4)=arrvocy(t, 0) then 
							vocisot (y, 0) = arrvocy(y, 0) 'id
							vocisot (y, 1) = arrvocy(y, 1)  'etichetta
							vocisot (y, 2) = arrvocy(y, 2)  'lingua
							vocisot (y, 3) = arrvocy(y, 3)  'ordine
							vocisot (y, 4) = arrvocy(y, 4)  'subvoce
							vocisot (y, 5) = arrvocy(y, 5)  'link
							vocisot (y, 6) = arrvocy(y, 6)  'sottomenuSioNo
							end if
					next
response.Write( arrvocy(t, 1) &"
" )
for q=0 to ubound(vocisot)-1
if vocisot(q, 1)<>"" then 
response.Write("
"&vocisot(q, 1)&"
" )
end if
next
					
		end if
next