Toon posts:

[ASP] loop in loop voor submenu

Pagina: 1
Acties:

Verwijderd

Topicstarter
beste tweakers,
ik wil een menu maken met submenu
de hoofdcategorieen haalt hij uit de tabel 'types' en de subcategorieen haalt
hij uit de tabel content.

het lukt me niet om een while loop in een while loop
te zetten, zoals dit zeg maar:
<%while not objrs.eof %>
'haal de hoofdcategorieen uit de tabel types
<%while not RS.eof%>
'haal de subcategorieen uit de tabel content die voldoet aan de hoofdcategorie
<%RS.movenext%>
<%objrs.movenext%>

Ik heb nog een recordset aangemaakt voor voor die 2e loop, maar het lijkt ook alsof hij die 2e query niet goed pakt, hij pakt volgens mij alleen de 1e query

Hier is de code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<%
dim objrs, strsql, strsql2, strsql3, strsql4, RS, strtype
Set objRs = Server.CreateObject("ADODB.recordset")


strsql="SELECT types.type, content.name from types, content"
strsql4="SELECT type from types"
objRS.Open strsql, strConnect
%>
<body>

<%while not objrs.eof %>
<%strtype=objrs("type")%>
<b><%=strtype%></b><br>

<%
Set RS = Server.CreateObject("ADODB.recordset")
strsql2="SELECT * FROM content WHERE type = '"& strtype &"'"
RS.Open strsql2, strConnect%>
    
<%while not RS.eof%>
<%=objrs("name")%><br>
<%RS.movenext%>

<% 
wend
objrs.movenext 
wend    
    
objrs.Close
RS.Close
Set RS= Nothing
Set objrs = Nothing  
%>

en dit is dan het resultaat:
hoofdcategorie1
subcat1
subcat1
hoofdcategorie1
subcat2
subcat2
hoofdcategorie2
hoofdcategorie2
hoofdcategorie3
hoofdcategorie3

in dit geval zit de subcat1 en subcat 2 onder dezelfde hoofdcategorie wat hij
nog niet juist doet.

iemand enig idee wat ik fout doe, ben ook maar een asp newbie :)
heb helaas niks gevonden in oudere posts
grtz

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Dit kun je veel simpeler doen mbv een iets uitgebreidere SQL query. DB's zijn gemaakt om data met elkaar te verbinden. Probeer het dan ook niet in je programma zelf te doen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • whoami
  • Registratie: December 2000
  • Laatst online: 20:46
Eigenlijk kun je dat in 1 query doen. Daardoor gaat het veel sneller gaan ook.

Iets in de aard van:
code:
1
2
3
4
select menu.id, menu.titel, submenu.menu_id, submenu.titel
from submenu, menu
where ....
order by ...

En dan ga je met 'groepsverwerking' die query gaan overlopen:
code:
1
2
3
4
5
6
7
8
while not qryMenu.Eof
  OldSubMenuId = qryMenu.FieldSubMenu.id
  Display MenuName;
  while OldSubMenuId = qryMenu.FieldSubMenu.Id
     Display SubmenuName;
     qryMenu.MoveNext();
  end;
end;

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 20:46
Verwijderd schreef op 21 November 2002 @ 19:40:
iemand enig idee wat ik fout doe, ben ook maar een asp newbie :)
heb helaas niks gevonden in oudere posts
grtz


In dat geval heb je nog niet goed gekeken.
[rml][ ASP] sql / recordset vraag[/rml]
;)

(Trouwens, mijn opmerking in dat topic over dat datamodel, geld ook voor jou. :Y) )

https://fgheysels.github.io/


Verwijderd

Topicstarter
ik heb ook een keer geprobeerd om het gewoon met 1 query te doen, maar 't hielp op
de een of andere manier niet...kzal nog eens kijken
bedankt voor jullie respons
ohja, whoami, kzal er meteen eens naar kijken... ieg bedankt

Verwijderd

Topicstarter
kzag dat ik ook een dom foutje had staan in de code, het moest namelijk niet <%=objrs("name")%> zijn maar <%=RS("name")%> alleen hadik dan nog het probleem dat alles dubbel stond, dus elk menu/submenu stond er 2 keer, raarrrrrr
maargoed, heb dus nu een functie aangemaakt net zoals in een post ( die van robjanssen ) van die link van whoami en nu werkt ie perfect! thnx! ;)

  • whoami
  • Registratie: December 2000
  • Laatst online: 20:46
Nouja, die code in die post van robjanssens vind ik nog steeds niet goed....
Je werkt nog steeds met meerdere queries, terwijl het imho ook in 1 query kan.
En het datamodel is waarschijnlijk ook nog steeds niet goed. Wat ga je bv doen als je ipv 1 niveau diep plots 2 of 3 of 4 niveau's diep moet kunnen gaan?

https://fgheysels.github.io/


Verwijderd

Topicstarter
ja je hebt gelijk whoami, maar tis eigenlijk de bedoeling dat je maar een niveau diep kunt, maar kzal hem dan toch veranderen, kwil gewoon asp een beetje onder de knie krijgen :), dus jij zegt dat ik gewoon met een query moet werken?

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Nieuwe poging dan:

ASP.NET Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<%
Dim objRS, strSQL, strType
Set objRS = Server.CreateObject("ADODB.RecordSet")

strSQL = "SELECT T.type, C.name, " _
       & "FROM types T " _
       & "INNER JOIN content C ON T.type = C.type " _
       & "ORDER BY T.type"
objRS.Open strSQL, strConnect, 3, 1
Response.Write "<body>"
While Not objRS.EOF 
  If strType <> objRS("type") Then
        strType = objRS("type")
        Response.Write "<b>" & strType & "</b><br>"
    End If
  Response.Write objRS("name") & "<br>"

    objRS.MoveNext 
Wend    
Response.Write "</body>"
objRS.Close
Set objRS = Nothing  
%>

Verwijderd

Topicstarter
hey rob, deze werkt prima, en is lekker kort! moest eff kijken hoe je het had gedaan, maar na een tijdje viel het dubbeltje :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 20:46
Waarom gebruik je een if in die while, en gebruik je geen while en zet je je MoveNext niet binnen die binnenste while?

https://fgheysels.github.io/

Pagina: 1