webForumDet fria alternativet

visa underkategorier dynamisk asp-meny

ASP

20 svar · 1 101 visningar · startad av Sanji

Medlem sedan juli 2009355 inlägg
Frågan#1

nu kan jag börja ägna mig åt presentationen av menyn :) koden för sidan som bygger upp menyn finns i kodavsnittet nedan, och det den gör är att gå igenom alla Huvudkategorier, och för varje kategori så kollar den om det finns några underkategorier med samma parentID som huvudkategorins id. Gör det det, så skriver den först ut huvudmenyn, och sedan undermenyerna fast med ett + famför dessa(+ Finns endast för testsyfte så att jag ser att det är en underkategori).

Nu ska menyn snyggas till, t.ex. så att man måste klicka på ett + vid huvudmenyn för att undermenyalternativen för den kategorin ska visas. Jag tänkte, går det inte att göra ett + som en länk, och lägga på typ ?catsubmenu=catid

alltså, id't för huvudkategorin, och om det finns request.querystring("catid") så visas underalternativen för huvudkategorin för just det ID't.

Jag börjar testa mig fram, kom gärna med synpunkter ^^

här kommer 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'">&middot; <a href="grenstall.asp" target="_self">Grenst&auml;ll (offert)</a></td>
	  </tr>
	  <%
    END IF
  
  
	IF nTYP = 0 or nTYP = 2 Then 'Nummer1
		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;">
      <%
	  RecSet2.Open Sel2, Connect 
	  IF NOT RecSet2.EOF THEN
	  Response.Write("<a target='_self' href='main.asp?catid='"& RecSet("KategoriID") &"'>+</a> <a href='products.asp?cat=" & RecSet("KategoriID") & "' target='_self'>" & RecSet("KategoriNamn") & "</a>") & vbcrlf
ELSE
				Response.Write("&middot; <a href='products.asp?cat=" & RecSet("KategoriID") & "' target='_self'>" & RecSet("KategoriNamn") & "</a>") & vbcrlf
END IF
%>
    </td>
  </tr>
<%

  if not RecSet2.Eof and Request.QueryString("catid") = RecSet("KategoriID") 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; padding-left: 6px;">
      <% 
	  

			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

	IF Session("VisaPris") = False Then
%>
	<tr>
		
    <td><font size="1"><br>
      Hej <%= Session("AnvNamn") %>, du &auml;r inloggad som g&auml;st och inga priser kommer att 
      visas p&aring; sidan.</font></td>
	</tr>
<% End IF %>
</table>

slängde ihop den här länken, får se hur det går!: <a target='_self' href='main.asp?catid='"& RecSet("KategoriID") &"'>+</a>

Medlem sedan juli 2009355 inlägg
#2

<a target='mainFrame' href='menu.asp?catid="& RecSet("KategoriID") &"'>+</a> när jag kör denna så får jag upp:

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/menu.asp, line 20

line 20 är: RecSet.Open Sel, Connect

Jag fick felet först när jag tryckte på länken... Vad är det som förstör för objektet som jag har skrivit?

Medlem sedan juli 2009355 inlägg
#3

pekar jag på fel sida? eller hur ska jag skicka med querystringen till filen som menyn skrivs ut från? annars kan väl inte värdet användas där? Blir bara så förvirrad av det där felet som blir med recordsetet bara för att jag klickar på en länk som skickar med en sträng...

Medlem sedan juli 2009355 inlägg
#4

kan det vara så att när jag pekar på menysidan så vill bara den köras i mainFrame, och då följer inga includes med, t.ex. connectfilen? då måste jag peka på något annat med andra ord

Medlem sedan juli 2009355 inlägg
#5

så där, nu pekar den rätt och det fungerar hyfsat bra ^^ nu håller jag på med ännu en admin-sida där man kan tilldela artiklar till kategorierna. Här har vi koden:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="checkuser.asp"-->
<!--#include file="opcon.asp"-->
<%
	Response.buffer=true
		  nKatID = Request.QueryString("kat")
		  nUnderKatID = Request.QueryString("underkat")
		  IF nKatID = "" Or IsNumeric(nKatID) = False Then nKatID = 0 END IF
%>

<html>
<head>
<title>Fellingsbro Stålteknik AB</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="stalteknik.css" rel="stylesheet" type="text/css">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}

//-->
</script>
</head>

<body text="#000000" link="#000000" vlink="#000000" alink="#000000" leftmargin="10" topmargin="10" marginwidth="10" marginheight="10">
<table width="600" border="0" align="center" cellpadding="5" cellspacing="0" class="OutlineBlack">
  <tr> 
    <td height="85" align="left" valign="top" background="../stpics/topbar.gif"> 
      <!--#include file="head.asp"--> </td>
  </tr>
  <tr> 
    <td align="left" valign="top" bgcolor="#FFFFFF" class="StdText"> <br> <table width="100%" border="0" cellpadding="5" cellspacing="0">
        <tr> 
          <td align="left" valign="middle" background="../stpics/bkg_square2.gif" class="StdText"><font color="#FFFFFF"><strong>Aktiviteter</strong></font></td>
        </tr>
        <tr> 
          <td align="left" valign="top" class="StdText"><br> <input name="bNew" type="button" Class="Button3" id="bNew" onClick="MM_goToURL('self','artadd.asp?katid=<%= nKatID %>&underkat=<%= nUnderKatID%>');return document.MM_returnValue" value="Ny Artikel i vald kategori" <% IF nKatID < 1 AND nUnderKatID < 1 Then 
		  Response.Write("Disabled")
		  END IF %>> 
            <input name="bClose" type="button" class="Button2" id="bClose" onClick="MM_goToURL('self','main.asp');return document.MM_returnValue" value="St&auml;ng"></td>
        </tr>
      </table>
      <br> <table width="100%" border="0" cellpadding="5" cellspacing="0">
        <tr> 
          <td align="left" valign="middle" background="../stpics/bkg_square2.gif" class="StdText"><font color="#FFFFFF"><strong>Existerande 
            artiklar</strong></font></td>
        </tr>
        <tr> 
          <td align="left" valign="middle" class="StdText"> <% 
		  	RecSet.Open "Select * From Kategorier ORDER BY pos_cat", Connect
		    RecSet2.Open "SELECT * FROM Underkategorier ORDER BY namn", Connect
		  %> <form name="form1">
              <select name="katmeny" onChange="MM_jumpMenu('self',this,0)" class="UploadBox">
                <option value="articles.asp">Välj kategori här</option>
                <% Do Until RecSet.EOF 
                
				%>
                <option value="articles.asp?kat=<%= RecSet("KategoriID") %>" <% IF Int(nKatID) = Int(RecSet("KategoriID")) Then Response.Write("selected")%>><%= RecSet("KategoriNamn") %></option>
                <%
				Do Until RecSet2.EOF
				%>
				<option value="articles.asp?underkat=<%= RecSet2("ID") %>" <% IF Int(nUnderKatID) = Int(RecSet2("ID")) Then Response.Write("selected")%>> - <%= RecSet2("namn") %></option>
                <%
                RecSet2.MoveNext
				Loop
                
				 RecSet.MoveNext : Loop%>
              </select>
            </form>
            <%
		  	RecSet.Close
		  %> </td>
        </tr>
      </table>
      <table width="100%" border="0" cellspacing="0" cellpadding="5">
        <% 
		  IF Request.QueryString("underkat") <> "" THEN
		  RecSet.Open "SELECT * From Artiklar WHERE UnderkategoriID=" & nUnderKatID & " ORDER BY Namn"  , Connect
		  Do Until RecSet.EOF %>
        <tr align="left" valign="top"> 
          <td valign="middle" class="SidText"> <%
				Response.Write("<b>" & RecSet("Namn") & "</b>")
				Response.Write("<br>" & Left(RecSet("Beskrivning"),100))
				Response.Write "<BR>Grupp: " & RecSet("Group")
			  %> </td>
          <td width="200" align="right" valign="middle"> <input name="edit" type="submit" class="Button2" onClick="MM_goToURL('self','artedit.asp?id=<%= RecSet("ID") %>&amp;underkat=<%= nUnderKatID %>');return document.MM_returnValue" value="Redigera"> 
            <input name="delete" type="submit" class="Button2" onClick="MM_goToURL('self','artedit.asp?id=<%= RecSet("ID") %>&amp;del=1&amp;underkat=<%= nUnderKatID %>');return document.MM_returnValue" value="Ta bort"> 
          </td>
        </tr>
        <% RecSet.MoveNext
		  	 Loop 
		  	 RecSet.Close
		  
		  
		  ELSE IF Request.QueryString("kat") <> "" THEN
		  RecSet.Open "SELECT * From Artiklar WHERE KategoriID=" & nKatID & " ORDER BY Namn"  , Connect
		  Do Until RecSet.EOF %>
        <tr align="left" valign="top"> 
          <td valign="middle" class="SidText"> <%
				IF RecSet("Kampanj") = True Then bKamp = 1 Else bKamp = 0
				IF bKamp = 1 Then Response.Write("<font color='#aa0000'>")
			  	Response.Write("<b>" & RecSet("Namn") & "</b>")
				IF bKamp = 1 Then Response.Write("</font>")
				Response.Write("<br>" & Left(RecSet("Beskrivning"),100))
				Response.Write "<BR>Grupp: " & RecSet("Group")
			  %> </td>
          <td width="200" align="right" valign="middle"> <input name="edit" type="submit" class="Button2" onClick="MM_goToURL('self','artedit.asp?id=<%= RecSet("ID") %>&amp;kat=<%= nKatID %>');return document.MM_returnValue" value="Redigera"> 
            <input name="delete" type="submit" class="Button2" onClick="MM_goToURL('self','artedit.asp?id=<%= RecSet("ID") %>&amp;del=1&amp;kat=<%= nKatID %>');return document.MM_returnValue" value="Ta bort"> 
          </td>
        </tr>
        <% RecSet.MoveNext
		  	 Loop 
		  	 RecSet.Close
			 END IF %> 
      </table>
      <font color="#000000" size="1" face="Verdana, Arial, Helvetica, sans-serif"><br>
      </font> </td>
  </tr>
  <tr> 
    <td height="45" align="right" valign="bottom" background="../stpics/bottombar.gif">
      <!--#include file="foot.asp"-->
    </td>
  </tr>
</table>
</body>
</html>
<!--#include file="ccon.asp"-->

För närvarande så klagar sidan på att det fattas en "END" i connect.close-filen, men det är inte det som är felet. Jag gissar på att jag har glömt att stänga connection, eller att jag har glömt en END IF eller liknande i koden.

Ursäkta mig om jag avskräcker er med hyfsat stora och dåligt skrivna bitar med kod, Jag själv har lite problem med vissa kodfiler som ligger uppe, dels för att det är rörigt skrivet, och dels för att jag inte gjort dessa från början.

Mvh Sanji

Medlem sedan juni 200032 967 inlägg
#6

Jag gissar på att det är samma "else if"-problem som jag skrev om i en av dina andra trådar.

mvh

Medlem sedan juli 2009355 inlägg
#7

ja det fanns ett sådant "else if", men det ändrade jag till "elseif" för en stund sen, jag upptäckte ett annat problem och det var att jag hade stavat fel på kolumnnamnet i tabellen artiklar... laddar upp databasen igen nu så får vi se om det blir bättre :)

Medlem sedan juli 2009355 inlägg
#8

Jag har nu fått i ordning på det mesta, det blev hyfsat bra när databasen stämde och jag fick pilla med de olika kodfilerna lite ^^ Det mesta som krånglade var missar från min sida, så som "else if" istället för "elseif", felstavning i databasen och ett par glömda "THEN" till if-satserna.

Mvh Sanji

Medlem sedan juli 2009355 inlägg
#9

upptäckte nyss ett konstigt fel, när jag trycker på "+" framför en kategori för att visa underkategorierna, så visas alla underkategorier under alla kategorier som finns... vad fasen kan det vara? :O

Slänger upp koden om någon orkar titta igenom den... det lär ju vara den delen som skriver ut själva menyn som krånglar ^^

<%categoryid = Request.QueryString("catid")
response.Write(categoryid)

%>

<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'">&middot; <a href="grenstall.asp" target="_self">Grenst&auml;ll (offert)</a></td>
	  </tr>
	  <%
    END IF
  
  
	IF nTYP = 0 or nTYP = 2 Then 'Nummer1
		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;">
      <%
	  RecSet2.Open Sel2, Connect 
	  IF NOT RecSet2.EOF THEN
	  Response.Write("<a target='mainFrame' href='main.asp?catid="& RecSet("KategoriID") &"'>+</a> <a href='products.asp?cat=" & RecSet("KategoriID") & "' target='_self'>" & RecSet("KategoriNamn") & "</a>") & vbcrlf
ELSE
				Response.Write("&middot; <a href='products.asp?cat=" & RecSet("KategoriID") & "' target='_self'>" & RecSet("KategoriNamn") & "</a>") & vbcrlf
END IF
%>
    </td>
  </tr>
<%

  if not RecSet2.EOF and categoryid <> "" 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; margin-left: 6px; text-align:right;" >
      <% 
	  

			Response.Write("- <a href='uproducts.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

	IF Session("VisaPris") = False Then
%>
	<tr>
		
    <td><font size="1"><br>
      Hej <%= Session("AnvNamn") %>, du &auml;r inloggad som g&auml;st och inga priser kommer att 
      visas p&aring; sidan.</font></td>
	</tr>
<% End IF %>
</table>

som det ser ut nu så finns det bara en, eventuellt två saker till som jag måste lösa:
1. så att endast de underkategorier som man vill se visas.
2. Fixa så att underkategorierna fortsätter att visas när man har tryckt på en av dem(de försvinner igen när man tryckt på en)

När jag löst dessa två problem så kan jag släppa den här sidan och hitta på något roligare att göra ^^

Mvh Sanji

Medlem sedan juni 20019 519 inlägg
#10

Kan du rensar upp all kod? HTML koden känns så fruktansvärt dålig:

		<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>

Kan jag få ner till:

<td>
	<a href="main.asp" target="_self"> 
		Startsidan
	</a>
</td>

Och kör CSS på den:

	.menu a {
		font-weight: 600;
		display: block;
	}
	.menu a:hover {
		background: #fff;
	}

Annars tycker jag det är otroligt svårt att följa din kod, indenteringen är galen, vet inte ens var man skall börja kolla på din kod för att veta vad du vill göra.

Medlem sedan juli 2009355 inlägg
#11

Det är ju det som är lite jobbigt, jag har inte skrivit den från början, så det är huller om buller för mig med... men jag får väl ägna ett par timmar till att snygga till skiten så får vi se då ^^

Medlem sedan juni 20019 519 inlägg
#12

HTML koden är galen:

response.write("Grenställsoffert: " & Session("GrenstallOffert"))

skrivs mellan en tr, vilket inte kommer validera heller.

Medlem sedan juli 2009355 inlägg
#13

haha jag ska nog slänga iväg ett mail till killen som skrev det och retas lite ^^ först när jag satte mig med det här så trodde jag att jag skulle avlida... inte roligt skrivet det här

Medlem sedan juli 2009355 inlägg
#14

nu vet jag också vad som är felet, Request.querystring("catid") får tre st likadana värden på rad, typ 18 18 18, när den bara ska ha det första. värdet skrivs alltså in tre gånger efter varandra i länken, eller efter att man kommit dit man ska. jag har en test, att när man först trycker på +, så skrivs Request.querystring("catid") ut och visar 18, och precis innan underalternativet ska skrivas ut så skriver jag ut samma Request.querystring("catid") igen, och då får jag 18 18 18, det måste betyda att sidan refreshas två gånger på vägen dit, eller?

Medlem sedan juli 2009355 inlägg
#15

antalet dupplikationer är samma som antalet kategorier med underkategorier. med andra ord så är det något som händer med querystringen för varje gång man skriver ute kategori med underkategori. ska kolla nu om jag hittar felet.

Medlem sedan juli 2009355 inlägg
#16

det måste vara den här koden som krånglar:

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
			Response.Write(Request.querystring("catid"))' Här skrivs querystringen ut, och här stämmer den med ett värde.
			Do Until RecSet.Eof
  
  Sel2 = "Select ID, parentID, namn, beskrivning from Underkategorier Where parentID =" & RecSet("KategoriID")
   
  %>
  <tr>
    <td class="MenuItem" onClick="document.location='products.asp?cat=<%=  RecSet("KategoriID") %>'" >
      <%
	  
	  RecSet2.Open Sel2, Connect 
	  IF NOT RecSet2.EOF THEN
	  Response.Write("<a target='mainFrame' href='main.asp?catid="& RecSet("KategoriID") &"'><b>+</b></a> <a href='products.asp?cat=" & RecSet("KategoriID") & "' target='_self'>" & RecSet("KategoriNamn") & "</a>") & vbcrlf
ELSE
				Response.Write("&middot; <a href='products.asp?cat=" & RecSet("KategoriID") & "' target='_self'>" & RecSet("KategoriNamn") & "</a>") & vbcrlf
END IF
%>
    </td>
  </tr>
<%

  if not RecSet2.EOF and categoryid <> "" then 'Nummer3 
  	response.Write(Request.Querystring("catid"))' Här skrivs querystringen ut med duplicerade värden
	RecSet2.Movefirst

IF RecSet2("parentID") = RecSet("KategoriID") THEN'Nummer4      18
Do Until RecSet2.Eof

%>
 <tr>
<td class="MenuItem" onClick="document.location='products.asp?undercat=<%=  RecSet2("ID") %>'" >
      <% 
	  

			Response.Write("- <a href='uproducts.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

jag har skrivit i koden vart värdet stämmer, och vart ungefär det dupliceras. Jag fortsätter att felsöka så länge...

Mvh Sanji

Medlem sedan juli 2009355 inlägg
#17

NU har jag gått igenom den här koden ordentligt, och det finns inget vad jag kan se som orsakar en refresh/redirect eller någonting. Det enda jag vet är att "+" länken gör att det kommer flera värden i querystringen. finns det bara en kategori med underkategorier, med andra ord bara en "+" länk, så fungerar det bra, men så fort man lagt till en underkategori till en annan kategori så det finns två st "+" länkar, och då även två likadana värden efter varandra avskilda med ett mellanslag, i querystringen.

Hur kan en länk ändra på en querystring endast genom att skrivas ut? kan det vara målsidans fel då den inte är densamma som menykoden ligger på?

Mvh Sanji

Medlem sedan juli 2009355 inlägg
#18

Jag testade att lägga två länkar bredvid varandra, så de skrevs ut samtidigt, men det gjorde inte så att det blev dubbla värden. Jag testade igen med flera olika underrubriker, och varje värde för överkategorierna hamnar i querystringen. säg att överkategori 1 har id 18, och överkategori 2 har id 12, så får querystringen värdet: "18 12". Med andra ord, för varje överrubrik som skrivs ut med underrubriker gör att querystringen får det värdet. hur fasen? när man trycker på knappen, skickas alla id från alla länkar då eller, om man kör med page.asp?catid="&RecSet("KategoriID")&"?

Jätteförvirrad, jag förstår ingenting just nu :(

Medlem sedan juni 200032 967 inlägg
#19

Du får nog kolla hur den resulterande HTML-koden ser ut - för asp-koden hjälper ingen när den ser ut som den gör.

...fast jag hade kastat bort skiten och skrivit om den helt. :)

Medlem sedan juli 2009355 inlägg
#20

om jag ska göra om så blir det ett jäkla jobb, finns som sagt ca 40 kodfiler som alla är skrivna på samma dumma sätt. nu vet jag också en till grej, och det är att det blir inte dubbla värden på querystringen, den skriver den två gånger. jag har ingen aning om varför jag inte kan använda den för att visa rätt menyalternativ, för den har fortfarande rätt värde även när den laddas om.

koden nedan körs för "Do Until RecSet.EOF", vilken innehåller alla huvudkategorier. Med andra ord, denna kod körs en gång för varje kategori som finns sparad i databasen, och den kollar om det finns underkategorier till dessa. Gör det det, så blir if not RecSet2.EOF sant, och underalternativen läggs till då man trycker på "+".

koden för att lägga till "+"länken körs också efter if not RecSet2.EOF, med en selectsats som kollar om något parentID i tabellen för underkategorierna är samma som KategoriID i tabellen för Kategorier.

if not RecSet2.EOF and categoryid <> "" then 'Nummer3 
  	Response.Write("Detta är catid: " &Request.QueryString("catid")& "")'denna skrivs ut så många gånger som det finns kategorier med underkategorier
	
	
	
	'response.Write(RecSet("KategoriID"))
	RecSet2.Movefirst

IF RecSet2("parentID") = Categoryid THEN'Nummer4      18
Do Until RecSet2.Eof

%>
 <tr>
    <td class="MenuItem" onClick="document.location='products.asp?undercat=<%=  RecSet2("ID") %>'" >
      <% 
	  

			Response.Write("- <a href='uproducts.asp?undercat=" & RecSet2("ID") & "' target='_self'>" & RecSet2("namn") & "</a>") & vbcrlf
%>
 </td>
  </tr>
  
  
<%
RecSet2.Movenext
Loop
End IF'Nummer4

End IF'Nummer3 
RecSet2.Close

i koden ovan har jag kommenterat vart jag skriver ut querystringen.

283 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
153 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)