Nu när jag har löst sidan för att hantera menyalternativ, så är det dags att ge sig på själva presentationen av menyn. Originalkoden gjorde inget mer än att skriva ut menyn, men jag har lagt till en del kod här då jag ska göra om menyn till en dynamisk meny med underalternativ.
Här har vi den nuvarande koden:
<table width="120" border="0" align="left" cellpadding="3" cellspacing="2" class="menu">
<tr>
<td align="left" valign="middle" class="MenuItem" style="cursor: hand;" onmouseover="this.style.backgroundColor='#FFFFFF';" onmouseout="this.style.backgroundColor='';" onClick="document.location='main.asp'"><strong><a href="main.asp" target="_self">
Startsidan</a></strong></td>
</tr>
<% 'IF nTYP = 0 And Session("VisaPris") <> False Then %>
<% IF Session("VisaPris") <> False Then %>
<tr>
<td align="left" valign="middle" class="MenuItem" style="cursor: hand;" onmouseover="this.style.backgroundColor='#FFFFFF';" onmouseout="this.style.backgroundColor='';" onClick="document.location='forfragan.asp'"><strong><%= "<a href='forfragan.asp' target='_self'><font color='#999999'>e</font>Offert</a><br>" %></strong></td>
</tr>
<%
End IF
Sel = "Select * from Sidor Where Osynlig = False And Year(Datum) < 2100"
RecSet.Open Sel, Connect
if not recset.eof then
RecSet.Movefirst
Do Until RecSet.Eof
IF RecSet("StartSida") = False And UCASE(RecSet("Namn")) <> "GSTEXT" Then
%>
<tr>
<td align="left" valign="middle" class="MenuItem" style="cursor: hand;" onmouseover="this.style.backgroundColor='#FFFFFF';" onmouseout="this.style.backgroundColor='';" onClick="document.location='page.asp?s=<%= RecSet("ID") %>';"><strong>
<%
Response.Write("<a href='page.asp?s=" & RecSet("ID") & "' target='_self'>" & RecSet("Namn") & "</a><br>")
%>
</strong></td>
</tr>
<%
End IF
RecSet.MoveNext
Loop
end if
RecSet.Close
%>
<tr>
<td align="left" valign="middle" class="MenuItem" style="cursor: hand;" onmouseover="this.style.backgroundColor='#FFFFFF';" onmouseout="this.style.backgroundColor='';" onClick="document.location='stadmin/logout.asp';"><strong><a href="stadmin/logout.asp" target="_self" title="Logga alltid ut så att obehöriga inte kan visa sidan.">Logga
ut</a> </strong></td>
</tr>
<tr>
<td align="left" valign="middle"> <strong><br>
Kategorier</strong></td>
</tr>
<%
response.write("Grenställsoffert: " & Session("GrenstallOffert"))
' Kolla om användare har rättighet att se offert i menyn
IF Session("GrenstallOffert") = TRUE THEN
%>
<tr>
<td align="left" valign="middle" class="MenuItem" onmouseover="this.style.backgroundColor='#FFFFFF';" onmouseout="this.style.backgroundColor='';" style="cursor: hand;" onClick="document.location='grenstall.asp'">· <a href="grenstall.asp" target="_self">Grenställ (offert)</a></td>
</tr>
<%
END IF
IF nTYP = 0 or nTYP = 2 Then 'Nummer1 -- Här börjar delen där jag har gjort ändringar --
Sel = "Select * from Kategorier Where Osynlig = False Order By pos_cat"' hämtar Kategorier
RecSet.Open Sel, Connect
if not RecSet.Eof then 'Nummer2
RecSet.Movefirst
Do Until RecSet.Eof
Sel2 = "Select ID, parentID, namn, beskrivning from Underkategorier Where parentID =" & RecSet("KategoriID")
%>
<tr>
<td align="left" valign="middle" class="MenuItem" onmouseover="this.style.backgroundColor='#FFFFFF';" onmouseout="this.style.backgroundColor='';" onClick="document.location='products.asp?cat=<%= RecSet("KategoriID") %>'" style="cursor: hand;">
<%
Response.Write("· <a href='products.asp?cat=" & RecSet("KategoriID") & "' target='_self'>" & RecSet("KategoriNamn") & "</a>") & vbcrlf
%>
</td>
</tr>
<%
RecSet2.Open Sel2, Connect
if not RecSet2.Eof then 'Nummer3
RecSet2.Movefirst
IF RecSet2("parentID") = RecSet("KategoriID") THEN'Nummer4
Do Until RecSet2.Eof
%>
<tr>
<td align="left" valign="middle" class="MenuItem" onmouseover="this.style.backgroundColor='#FFFFFF';" onmouseout="this.style.backgroundColor='';" onClick="document.location='products.asp?undercat=<%= RecSet2("ID") %>'" style="cursor: hand;">
<%
Response.Write("+ <a href='products.asp?undercat=" & RecSet2("ID") & "' target='_self'>" & RecSet2("namn") & "</a>") & vbcrlf
%>
</td>
</tr>
<%
RecSet2.Movenext
Loop
End IF'Nummer4
End IF'Nummer3
RecSet2.Close
RecSet.MoveNext
Loop
end if'Nummer2
RecSet.Close
End IF 'Nummer1 Här slutar koden där jag gjort ändringar
IF Session("VisaPris") = False Then
%>
<tr>
<td><font size="1"><br>
Hej <%= Session("AnvNamn") %>, du är inloggad som gäst och inga priser kommer att
visas på sidan.</font></td>
</tr>
<% End IF %>
</table>
Tanken var att den ska gå igenom alla menyalternativ ett efter ett, och för varje steg så ska den kolla om det även finns underkategorier för det menyalternativet. Den letar då reda på alla underkategorier med samma parentID som det vanliga menyalternativets ID, och sedan läggs dessa till i menyn tillsammans med sin överkategori.
jag vet redan nu att jag inte har gjort rätt, och jag sitter och försöker skriva om koden så att den fungerar som jag vill.
Jag tänkte att man kan ju dölja underalternativen tills en användare klickar på + vid ett menyalternativ som har underalternativ, och då skickar man med id för vilken kategori man är på och gör underkategorierna synliga/skriver ut dessa. Jag tänkte att endast en undermeny kan vara framme åt gången.
så om någon har lust att slänga ett öga på koden under tiden jag försöker grejja detta så blir jag glad :)
Vad måste man göra för att lägga in request.querystringen i RecSet? parentID är int för övrigt... jag försökte göra en CInt() runt den men det gick inte heller :(
hur får jag apostroferna att fungera i sql-satsen då? är det i php man kör "/ "/?? det måste väl finnas något man kan göra fast det är klassisk asp också...
Kolla rad för rad:
NULL vill du ha i strängen, om det är en SQL null du vill mata in,
tname låter som en sträng och då skall det vara ' ' runt värdet, inte ett tal som du skriver just nu.
enda problemet är att när jag använder ' ' så kommenterar den bort resten av allt på raden... p_id är en sträng som ska in i en int-kolumn i databasen. tnamn är en sträng, likaså tbesk. jag testade att göra så här:
Server.HTMLEncode(Request.Form('tnamn')
men då kommenterades allt bakom första ' bort
null är för att det automatiskt ska köra autoincrement på id, ingen aning om jag ska köra med sql-null eller inte, vad blir det för skillnad?
jag ska nog sluta med programmering för ikväll, men jag loggar in och läser igenom dina inlägg igen imorgon ^^ jag känner att jag är för trött för att tänka just nu hehe, tack för hjälpen! skriver imorgon
hehe jag gjorde som du sade, jag skrev ut sql-frågan och såg att p_id inte får något värde... aha! tänkte jag, och började skriva ut värdet av p_id för varje steg det tog, först via querystring till den sidan där sql-satsen ligger, och där fanns värdet. nästa steg hade jag stoppat in request.querystring("p_id ") i action="cataddunder.asp?spara=1&p_id=<%request.querystring("id")%> för en form, och det var här som värdet försvann... och nu efter att ha gått steg för steg så upptäckte jag att jag aldrig kör response.write på den, så det var inte så konstigt att värdet aldrig skickades med till den slutgiltiga destinationen ^^
Snälla, varför väljer du att lära dig programmera i ASP av alla språk som finns att välja på? Senaste versionen av ASP kom ut för 10 år sedan, och det finns ingen vettig anledning att lära sig det om man ska välja ett språk att börja med.. Välj något vettigt, t.ex. ASP.net (med C# förslagsvis), Java, Python eller till och med PHP..
om du hade läst det jag skrev i den andra tråden som har med samma sak att göra så hade du sett att jag vanligtvis kör asp.net c#, och det jag gör här är enbart att uppdatera en gammal sida som inte jag har gjort, som skrevs i klassisk asp... och jag har inte tid att bygga om hela alltihopa från början då det skulle ta veckor att bygga om.
Varför lära sig klassisk asp? jag ser bara en anledning, och det är för att kunna underhålla t.ex. företagssidor som byggts i det, då många företag inte vill satsa på att bygga en helt ny sida i asp.net, php m.fl. bara för att de vill ha en liten extrafunktion.
Jag kan omöjligt hålla koll på vad som står i andra trådar, och uppfattningen att det var en nybörjare fick jag av att det kändes som att du begick de misstag som de flesta som börjar programmera begår..
Angående varför lära sig asp så ja, att lära sig obskyra språk för att kunna underhålla dem är legitimt, men inte som förstaspråk