Avatar billede pelskee Nybegynder
06. januar 2005 - 10:25 Der er 12 kommentarer og
1 løsning

Repeat inden i anden repeat

jeg har givet mig i kast med at lave en dynamisk menu der først viser en produktgruppe og derunder viser de tilhørende producenter, men det virker ikke ordentligt. Den viser ikke for eksempel ikke producenten EA Games under produktgruppen Games.
Og jeg ville gerne have vist producenterne i alfabetisk rækkefølge.

Link: http://www.because.dk/webshop/foldudmenu.asp

Kode:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="Connections/webshop.asp" -->
<%
Dim rsTopLevel
Dim rsTopLevel_numRows

Set rsTopLevel = Server.CreateObject("ADODB.Recordset")
rsTopLevel.ActiveConnection = MM_webshop_STRING
rsTopLevel.Source = "SELECT DISTINCT Produktgruppe  FROM produkt  WHERE Aktiv = 'Y'"
rsTopLevel.CursorType = 0
rsTopLevel.CursorLocation = 2
rsTopLevel.LockType = 1
rsTopLevel.Open()

rsTopLevel_numRows = 0
%>
<%
Dim rsSecondLevel
Dim rsSecondLevel_numRows

Set rsSecondLevel = Server.CreateObject("ADODB.Recordset")
rsSecondLevel.ActiveConnection = MM_webshop_STRING
rsSecondLevel.Source = "SELECT DISTINCT Producent, Produktgruppe  FROM produkt  WHERE Aktiv = 'Y'"
rsSecondLevel.CursorType = 0
rsSecondLevel.CursorLocation = 2
rsSecondLevel.LockType = 1
rsSecondLevel.Open()

rsSecondLevel_numRows = 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index

Repeat1__numRows = -1
Repeat1__index = 0
rsTopLevel_numRows = rsTopLevel_numRows + Repeat1__numRows
%>
<%
Dim Repeat2__numRows
Dim Repeat2__index

Repeat2__numRows = -1
Repeat2__index = 0
rsSecondLevel_numRows = rsSecondLevel_numRows + Repeat2__numRows
%>
<html>
<link href="admin/include/stylesheet.css" rel="stylesheet" type="text/css">
<body leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0">
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
<%
While ((Repeat1__numRows <> 0) AND (NOT rsTopLevel.EOF))
%>
  <tr>
    <td height="25" class="MediumBlackBold"><%=(rsTopLevel.Fields.Item("Produktgruppe").Value)%></td>
  </tr>
<%
While ((Repeat2__numRows <> 0) AND ((rsSecondLevel.Fields.Item("Produktgruppe").Value)=(rsTopLevel.Fields.Item("Produktgruppe").Value)) AND (NOT rsSecondLevel.EOF))
%>
<tr>
    <td style="padding-left:10px" height="18" class="SmallBlackNormal"><%=(rsSecondLevel.Fields.Item("Producent").Value)%></td>
</tr>
<%
  Repeat2__index=Repeat2__index+1
  Repeat2__numRows=Repeat2__numRows-1
  rsSecondLevel.MoveNext()
Wend
%> 
<%
  Repeat1__index=Repeat1__index+1
  Repeat1__numRows=Repeat1__numRows-1
  rsTopLevel.MoveNext()
Wend
%>
</table>
</body>
</html>
<%
rsTopLevel.Close()
Set rsTopLevel = Nothing
%>
<%
rsSecondLevel.Close()
Set rsSecondLevel = Nothing
%>
Avatar billede fennec Nybegynder
06. januar 2005 - 10:37 #1
Jeg kan ikke helt gennemskue hvordan din kode fungere, men måske kan dette hjælpe dig lidt på vej:

rsTopLevel.Source = "SELECT DISTINCT Produktgruppe  FROM produkt  WHERE Aktiv = 'Y'"
...
while not rsTopLevel.eof
  response.write rsTopLevel("Produktgruppe")
  rsSecondLevel.Source = "SELECT DISTINCT Producent, Produktgruppe  FROM produkt  WHERE Aktiv = 'Y' and Produktgruppe='"& rsTopLevel("Produktgruppe") &"'"
  ...
  while not rsSecondLevel.eof
    response.write rsSecondLevel("Producent")
    rsSecondLevel.MoveNext
  wend
  rsTopLevel.MoveNext
wend
Avatar billede pelskee Nybegynder
06. januar 2005 - 10:45 #2
skal det så være noget ala... (det virker dog ikke :)

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="Connections/webshop.asp" -->
<%
Set rsTopLevel = Server.CreateObject("ADODB.Recordset")
rsTopLevel.ActiveConnection = MM_webshop_STRING

Set rsSecondLevel = Server.CreateObject("ADODB.Recordset")
rsSecondLevel.ActiveConnection = MM_webshop_STRING
%>
<html>
<link href="admin/include/stylesheet.css" rel="stylesheet" type="text/css">
<body leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0">
<%
rsTopLevel.Source = "SELECT DISTINCT Produktgruppe  FROM produkt  WHERE Aktiv = 'Y'"
while not rsTopLevel.eof
  response.write rsTopLevel("Produktgruppe")
  rsSecondLevel.Source = "SELECT DISTINCT Producent, Produktgruppe  FROM produkt  WHERE Aktiv = 'Y' and Produktgruppe='"& rsTopLevel("Produktgruppe") &"'"
%>
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><%=(rsTopLevel.Fields.Item("Produktgruppe").Value)%></td>
  </tr>
<tr>
    <td><%=(rsSecondLevel.Fields.Item("Producent").Value)%></td>
</tr>
</table>
<%
  while not rsSecondLevel.eof
    response.write rsSecondLevel("Producent")
    rsSecondLevel.MoveNext
  wend
  rsTopLevel.MoveNext
wend
%>
</body>
</html>
<%
rsTopLevel.Close()
Set rsTopLevel = Nothing
%>
<%
rsSecondLevel.Close()
Set rsSecondLevel = Nothing
%>
Avatar billede fennec Nybegynder
06. januar 2005 - 10:56 #3
Jeps, du skal bare have hele "database" koden med:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="Connections/webshop.asp" -->
<html>
<link href="admin/include/stylesheet.css" rel="stylesheet" type="text/css">
<body leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0">
<%
Set rsTopLevel = Server.CreateObject("ADODB.Recordset")
rsTopLevel.ActiveConnection = MM_webshop_STRING
rsTopLevel.Source = "SELECT DISTINCT Produktgruppe  FROM produkt  WHERE Aktiv = 'Y'"
rsTopLevel.CursorType = 0
rsTopLevel.CursorLocation = 2
rsTopLevel.LockType = 1
rsTopLevel.Open()

while not rsTopLevel.eof
  response.write rsTopLevel("Produktgruppe")
  Set rsSecondLevel = Server.CreateObject("ADODB.Recordset")
  rsSecondLevel.ActiveConnection = MM_webshop_STRING
  rsSecondLevel.Source = "SELECT DISTINCT Producent, Produktgruppe  FROM produkt  WHERE Aktiv = 'Y' and Produktgruppe='"& rsTopLevel("Produktgruppe") &"'"
  rsSecondLevel.CursorType = 0
  rsSecondLevel.CursorLocation = 2
  rsSecondLevel.LockType = 1
  rsSecondLevel.Open()
%>
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><%=(rsTopLevel.Fields.Item("Produktgruppe").Value)%></td>
  </tr>
<tr>
    <td><%=(rsSecondLevel.Fields.Item("Producent").Value)%></td>
</tr>
</table>
<%
  while not rsSecondLevel.eof
    response.write rsSecondLevel("Producent")
    rsSecondLevel.MoveNext
  wend
  rsTopLevel.MoveNext
wend
%>
</body>
</html>
<%
rsTopLevel.Close()
Set rsTopLevel = Nothing
%>
<%
rsSecondLevel.Close()
Set rsSecondLevel = Nothing
%>
Avatar billede pelskee Nybegynder
06. januar 2005 - 10:58 #4
det virker, men den gentager flere af producenterne og produktgrupperne

http://www.because.dk/webshop/foldudmenu.asp
Avatar billede fennec Nybegynder
06. januar 2005 - 11:06 #5
Det er udskrivningen det er galt med:

<%
while not rsTopLevel.eof
  response.write rsTopLevel("Produktgruppe")
  Set rsSecondLevel = Server.CreateObject("ADODB.Recordset")
  rsSecondLevel.ActiveConnection = MM_webshop_STRING
  rsSecondLevel.Source = "SELECT DISTINCT Producent, Produktgruppe  FROM produkt  WHERE Aktiv = 'Y' and Produktgruppe='"& rsTopLevel("Produktgruppe") &"'"
  rsSecondLevel.CursorType = 0
  rsSecondLevel.CursorLocation = 2
  rsSecondLevel.LockType = 1
  rsSecondLevel.Open()
%>
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><%=(rsTopLevel.Fields.Item("Produktgruppe").Value)%></td>
  </tr>
<%
  while not rsSecondLevel.eof %>
<tr>
    <td><%=(rsSecondLevel.Fields.Item("Producent").Value)%></td>
</tr>
<%    rsSecondLevel.MoveNext
  wend %>
</table>
<%
  rsTopLevel.MoveNext
wend
%>
Avatar billede pelskee Nybegynder
06. januar 2005 - 11:15 #6
nice :) men nu gentages produktgruppen
Avatar billede fennec Nybegynder
06. januar 2005 - 11:19 #7
Jeg skal lige se hvad der er hvad:

<table width="100%"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>TOP: <%=(rsTopLevel.Fields.Item("Produktgruppe").Value)%></td>
  </tr>
<%
  while not rsSecondLevel.eof %>
<tr>
    <td>&nbsp;&nbsp;SUB:<%=(rsSecondLevel.Fields.Item("Producent").Value)%></td>
</tr>
<%    rsSecondLevel.MoveNext
  wend %>
</table>
Avatar billede pelskee Nybegynder
06. januar 2005 - 11:24 #8
done. uploaded
Avatar billede pelskee Nybegynder
06. januar 2005 - 11:24 #9
ahhh . det hjalp :)

det må være denne linie:  response.write rsTopLevel("Produktgruppe")
Avatar billede fennec Nybegynder
06. januar 2005 - 11:28 #10
og så skal der vel lige en "order by" på også.

rsTopLevel.Source = "SELECT DISTINCT Produktgruppe FROM produkt WHERE Aktiv = 'Y' ORDER BY Produktgruppe"
rsSecondLevel.Source = "SELECT DISTINCT Producent, Produktgruppe  FROM produkt  WHERE Aktiv = 'Y' and Produktgruppe='"& rsTopLevel("Produktgruppe") &"' ORDER BY Producent"
Avatar billede pelskee Nybegynder
06. januar 2005 - 11:30 #11
tusinde tak for hjælpen - du er meget vild til det med SQL
Avatar billede pelskee Nybegynder
06. januar 2005 - 11:32 #12
opretter et nyt spørgsmål med hvordan man får den til at folde sig sammen og folde sig ud når man klikker på den pågældende Produktgruppe. Det kunne være fedt :)
Avatar billede fennec Nybegynder
06. januar 2005 - 11:38 #13
Det er nu ikke så svært at få den til, men så skal du nok over at bruge <div> i stedet for en tabel. Ellers kan du jo hente et menu scripl ala coolmenu fra dhtmlcentralen, også knytte dine database resultater til den...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester