Avatar billede stkol Nybegynder
19. maj 2003 - 09:06 Der er 10 kommentarer og
1 løsning

Hjælp med Loop i loop

Hej!

Jeg har et stort problem med et loop som skal indeholde et andet loop.

Jeg har følgende selects :

'####### mainMenu  ############
'## Create db objects and SQL
set mainmenuConn = Server.CreateObject("ADODB.Connection")
mainmenuConn.Open Application("ConnectString")
set rsmainmenu = Server.CreateObject("ADODB.Recordset")   
   
mainmenuSql = "SELECT * FROM mainmenu ORDER BY mainmenu.recordid;"
set rsmainmenu = mainmenuConn.Execute(mainmenuSql)   
   
'####### Menu  ############
'## Create db objects and SQL
set menuConn = Server.CreateObject("ADODB.Connection")
menuConn.Open Application("ConnectString")
set rsmenu = Server.CreateObject("ADODB.Recordset")   

menuSql = "SELECT DISTINCT mainmenu.mainmenu AS mainmenu, mainmenu.recordid AS recordid, link.link AS link FROM mainmenu INNER JOIN link ON mainmenu.recordid = link.menuid GROUP BY mainmenu.mainmenu, mainmenu.recordid, link.link ORDER BY mainmenu.recordid;"
   
set rsmenu = menuConn.Execute(menuSql)



og den løkke jeg ikke kan få til at virke skal være noget ala dette :

<tr>
  <td width="100"><font size="1"><b>&nbsp;</b></font></td>
  <td width="200">
  <% While (not rsmainmenu.EOF)%>
  <span id="sub<%=trim(rsmainmenu("recordid"))%>">
  <select name="sub<%=rsmainmenu("mainmenu")%>" onchange="closeselect(this,'sub<%=trim(rsmainmenu("recordid"))%>')">
    <option selected value="">Vælg...</option>
  <% While (not rsmenu.EOF)%>
  <option value="<%=rsmenu("linkname")%>"><%=rsmenu("linkname")%></option>
<% rsmenu.movenext
  wend
%>
</select>
</span>
<% rsmainmenu.movenext
  wend
%>
  </td>
</tr>


Resultatet af dette bliver

<tr>
  <td width="100"><font size="1"><b>&nbsp;</b></font></td>
<td width="200"></td>
</tr>

Altså tomt!! Hmm og det skulle have set ud noget ala dette :

<span id="sub1">
  <select name="subannounce" onchange="closeselect(this,'sub1')">
    <option selected value="">- subcategory -
    <option value="cars">cars
    <option value="houses">houses
    <option value="guitars">guitars
  </select>
</span>
<span id="sub2">
  <select name="subarts" onchange="closeselect(this,'sub2')">
    <option selected value="">- subcategory -
    <option value="music">music
    <option value="lyrics">lyrics
    <option value="painting">painting
  </select>
</span>
<span id="sub3">
  <select name="subsoftware" onchange="closeselect(this,'sub3')">
    <option selected value="">- subcategory -
    <option value="php">php
    <option value="java">java
    <option value="asp">asp
    <option value="mysql">mysql
  </select>
</span>


Er der nogen der kan hjælpe mig med dette????

På for hånd tak *S

/Stig :-)
Avatar billede eagleeye Praktikant
19. maj 2003 - 10:02 #1
Så vidt jeg kan forstå det, så du nød til at lave nummer 2 SQL så den har en WHERE del så du får hendtet de rigtige punkter ud for hver select.



'####### mainMenu  ############
'## Create db objects and SQL
set mainmenuConn = Server.CreateObject("ADODB.Connection")
mainmenuConn.Open Application("ConnectString")
set rsmainmenu = Server.CreateObject("ADODB.Recordset")   
   
mainmenuSql = "SELECT * FROM mainmenu ORDER BY mainmenu.recordid;"
set rsmainmenu = mainmenuConn.Execute(mainmenuSql)   
   
'####### Menu  ############
'## Create db objects and SQL
set menuConn = Server.CreateObject("ADODB.Connection")
menuConn.Open Application("ConnectString")
set rsmenu = Server.CreateObject("ADODB.Recordset")



<tr>
  <td width="100"><font size="1"><b>&nbsp;</b></font></td>
  <td width="200">
  <% While (not rsmainmenu.EOF)%>
  <span id="sub<%=trim(rsmainmenu("recordid"))%>">
  <select name="sub<%=rsmainmenu("mainmenu")%>" onchange="closeselect(this,'sub<%=trim(rsmainmenu("recordid"))%>')">
    <option selected value="">Vælg...</option>
  <%
menuSql = "SELECT * FROM link WHERE link.menuid = " & rsmainmenu("recordid") & ";"
   
set rsmenu = menuConn.Execute(menuSql)

    While (not rsmenu.EOF)%>
  <option value="<%=rsmenu("linkname")%>"><%=rsmenu("linkname")%></option>
<% rsmenu.movenext
  wend
%>
</select>
</span>
<% rsmainmenu.movenext
  wend
%>
  </td>
</tr>
Avatar billede stkol Nybegynder
19. maj 2003 - 10:18 #2
Hej Eagleeye

Desværer får jeg samme resultat som før, der kommer ingen data i koden!?!

Hvad kan det skyldes????
Avatar billede eagleeye Praktikant
19. maj 2003 - 10:22 #3
Hvis du ikke får nogle <options> frem så skyldes det at rsmenu.EOF er true fra starten af og det betyder der ikke er nogle records i recordsetet.
Så tjek at der virkelig er nogle post i link tabellen og tjek at linkID i link tabellen passer med det rigtigt recordID i den anden tabel som er den menu den høre til.
Avatar billede eagleeye Praktikant
19. maj 2003 - 10:23 #4
Du kan også prøve at udksrive menuSQL og se hvilket linkID den forsøger at finde:

menuSql = "SELECT * FROM link WHERE link.menuid = " & rsmainmenu("recordid") & ";"
response.write menuSql
Avatar billede eagleeye Praktikant
19. maj 2003 - 10:24 #5
Hov der skal være kolonnen menuID og ikke linkID som jeg skrev i 19/05-2003 10:22:21
Avatar billede stkol Nybegynder
19. maj 2003 - 10:33 #6
Nu er jeg lost!! Jeg har lige smidt response.write menuSql, og den skriver ikke noget ud!!?!?!?

Mine tabeller har følgende indhold!

LINK :

recordid    link    menuid
-------------------------------
1            asp    1
2            kurt    2
3            bølle    3
5            asp2    1
6            asp3    1
       
MAINMENU :

recordid    mainmenu
-------------------------
1            Projekter
2            Baggrund
3            Presse
Avatar billede eagleeye Praktikant
19. maj 2003 - 10:42 #7
Ja du får slet ikke skrevet noget ud??

Prøv i IE at vælge Vis Kode og se om det skulle være det afligevel. Er det hele din kode for filen, for hvis man mangler <table> og </table> tags er det ikke sikker det inde i <tr> vises rigtigt.
Avatar billede stkol Nybegynder
19. maj 2003 - 15:10 #8
Det eneste den skriver i sourcen er :

<tr>
  <td width="100"><font size="1"><b>&nbsp;</b></font></td>
  <td width="200">
 
  </td>
</tr>

ASP koden kører kun inde i <td> !
Avatar billede stkol Nybegynder
19. maj 2003 - 15:20 #9
Nej det er ikke hele koden! Siden fylder 1574 linier kode!! Hvis du vil have det vil jeg meget gerne maile dig hele ASP dokumentet!!!
Avatar billede stkol Nybegynder
19. maj 2003 - 17:08 #10
Hej
Avatar billede stkol Nybegynder
19. maj 2003 - 17:09 #11
Jeg har nu løst problemet, og fundet ud af at problemet lå i at jeg lavede 2 loops med den samme result set, så nu har jeg lavet den ud til 2 stk, og så virker det :-)

Du skal have mange tak for hjælpen :-)
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