Problem med Menu/Løkke
Jeg har et problem med min menu, som oprettes vha. en database.Menuen består i princippet af to menuer.
1. Hovedkategorier
2. Produktgrupper m. subs.
Lige når man går ind på siden kan man klikke på produktgrupper, hvor der så vises nogle undergrupper.
Problemet:
Hvis jeg så vælger en anden hovedkategori kan jeg ikke få vist mine undergrupper, når der klikkes på produktgrupper. - Den \"falder\" bare tilbage til min default produktgrupper.
- Hvordan undgår jeg det.
Menuen kan ses på følgende URL:
http://www.digitalweb.dk/shop/menu3.asp
Håber der er nogen der kan hjælpe med dette problem.
Kritik, forslag til scriptet er iøvrigt også velkommen.
For god ordens skyld, så er scriptet hér.
<% @LANGUAGE=\"VBSCRIPT\" %>
<%
Option Explicit
Response.Buffer = True
On Error Resume Next
\' Variabler erklæres (Explicit)
Dim oConn, oRS, strSQL, KategoriMenu, strVisKategori, strVisDefault, strRequest, strKategori, oRS2, strSQL2, Produktgrupper, Producenter
\' Brugerdefinerede Variabler
strVisKategori=Request.QueryString(\"Kategori\")
strRequest=Request.QueryString(\"Produktgruppe\")
%>
<HTML>
<BODY>
<!--#include virtual=\"/shop/includes/dbconnopen.asp\"-->
<%
\' Disse menupunkter bliver oprettet fra en tabel, når jeg når dertil
Response.Write \"<table>\" & chr(13) & \"<tr><td>\" & chr(13)
Response.Write \"<a href=menu3.asp?Kategori=Hardware>Hardware</a><br>\"
Response.Write \"<a href=menu3.asp?Kategori=Software>Software</a><br>\"
Response.Write \"<a href=menu3.asp?Kategori=Netværk>Netværk</a><br>\"
Response.Write \"<a href=menu3.asp?Kategori=Mobiltelefoner>Mobiltelefoner</a><br><br>\"
Response.Write \"</td></tr>\" & chr(13) & \"</table>\" & chr(13) & chr(13)
\' #########################################################################
\' HÈR KAN SCRIPTET IKKE HUSKE KATEGORIEN VALGT I OVENSTÅENDE MENUPUNKTER,
\' NÅR DER TRYKKES PÅ PRODUKTGRUPPER FRA FUNKTIONEN \"MAKEKATEGORI\" HERUNDER.
If strVisKategori=\"\" Then
strVisDefault=\"Hardware\"
Response.Write MakeKategori(strVisDefault)
Else
Response.Write MakeKategori(strVisKategori)
End If
\' #########################################################################
oConn.Close
Set oConn = Nothing
%>
<%
Function MakeKategori(KategoriID)
\'Recordsæt fra database oprettes
Set oRS = Server.CreateObject(\"ADODB.Recordset\")
strSQL = \"SELECT Kategorinavn, HKategorinavn From Kategorier WHERE HKategorinavn=\'\" & KategoriID & \"\'\"
\' Ovenstående valgte Recordset åbnes
oRS.Open strSQL, oConn
Produktgrupper=Produktgrupper & \"<!-- Produktgrupper -->\" & chr(13)
Produktgrupper=Produktgrupper & \"<table>\" & chr(13) & \"<tr><td>\" & chr(13)
Do While Not oRS.EOF
If strRequest=oRS(\"Kategorinavn\") Then
Produktgrupper=Produktgrupper & \"<a href=menu2.asp?Produktgruppe=\" & oRS(\"Kategorinavn\") & \">\" & oRS(\"Kategorinavn\") & \"</a><br>\" & chr(13)
strKategori=oRS(\"Kategorinavn\")
Produktgrupper=Produktgrupper & MakeProducent(strKategori)
Else
Produktgrupper=Produktgrupper & \"<a href=menu3.asp?Produktgruppe=\" & oRS(\"Kategorinavn\") & \">\" & oRS(\"Kategorinavn\") & \"</a><br>\" & chr(13)
End If
oRS.MoveNext
Loop
Produktgrupper=Produktgrupper & \"</td></tr>\" & chr(13) & \"</table>\" & chr(13) & chr(13)
oRS.Close
Set oRS = Nothing
\' oConn.Close
\' Set oConn = Nothing
MakeKategori=Produktgrupper
End Function
%>
<%
Function MakeProducent(ParentID)
\' Recordsæt fra database oprettes
Set oRS2 = Server.CreateObject(\"ADODB.Recordset\")
\' SQL forespørgsel laves
strSQL2 = \"SELECT DISTINCT Producent,Kategorinavn From Produkter WHERE Kategorinavn=\'\" & ParentID & \"\'\"
\' Recordset til SQL forespørgsel åbnes
oRS2.Open strSQL2, oConn
Producenter=Producenter & \"<!-- Producenter-Start -->\" & chr(13)
\' Response.Write \"<table>\" & chr(13) & \"<tr><td>\" & chr(13)
\' Løkke laves for gennemløb i Recordsæt
Do While Not oRS2.EOF
Producenter=Producenter & \" <a href=menu3.asp?Produktgruppe=\" & oRS(\"Kategorinavn\") & \"&Producent=\" & oRS2(\"Producent\") & \"><small>\" & oRS2(\"Producent\") & \"</small></a><br>\" & chr(13)
oRS2.MoveNext
Loop
Producenter=Producenter & \"<!-- Producenter-Slut -->\" & chr(13)
\' Response.Write \"</td></tr>\" & chr(13) & \"</table>\" & chr(13) & chr(13)
\' Recordsæt lukkes
oRS2.Close
Set oRS2 = Nothing
\' Menuen samles og defineres
MakeProducent=Producenter
End Function
%>
</BODY>
</HTML>
