Avatar billede bobbedude Nybegynder
08. april 2002 - 09:42 Der er 4 kommentarer og
1 løsning

Rekursive funktion i ASP

hvordan laver jeg en Rekursive funktion så jeg kan have kategorier med uendelige underkategorier i ?

Jeg lavede dette script men det kan kun klarer en under kategori.

<%
response.buffer = true
set connect = server.createobject("ADODB.Connection")
Connect.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("links.mdb")
Set rs = Connect.Execute("SELECT * FROM kategorier where parent =0")

if not rs.EOF then
do until rs.EOF

response.write "<a href='produkter.asp?linkid=" & rs("id") & "'>" & "Dir - " & rs("kategori") & "</a> - <a href=produkter.asp?mode=nyundermappe&katid=" & rs("id") & ">Ny undermappe</a><br>"

if Cint(Request.QueryString("linkid")) = rs("id") then

Set rs2 = Connect.Execute("SELECT * FROM kategorier WHERE parent = " & request("linkid") & "")


if not rs2.EOF then
do until rs2.EOF
response.write "<a href='produkter.asp?linkid=" & rs2("id") & "'>" & "Dir - " & rs2("kategori") & "</a> - <a href=produkter.asp?mode=nyundermappe&katid=" & rs2("id") & ">Ny undermappe</a><br>"
rs2.MoveNext
Loop
end if

Set rs3 = Connect.Execute("SELECT * FROM links WHERE kategori = '" & request("linkid") & "'")


if not rs3.EOF then
do until rs3.EOF
Response.Write " - <a href=""" & rs3("url") & """>" & rs3("navn") & "</a><br>"
rs3.MoveNext
Loop
else
Response.Write "Ingen Links i denne kategori!"
  end if

end if
rs.movenext
Loop
else
response.write "Ingen felter"
en
Avatar billede keysersoze Ekspert
08. april 2002 - 09:53 #1
Avatar billede bobbedude Nybegynder
08. april 2002 - 09:58 #2
amh det ser jo ret sejt og enkelt ud jeg prøver lige keysersoze
Avatar billede zeptic Nybegynder
08. april 2002 - 10:04 #3
Det er måske en fordel at benytte sig af databasens rekursion (såfremt den har det defineret). Det vil ihvertfald være betydelig hurtigere, og kan formentlig gøres ret pænt.

Et fint eksempel på brugen af rekursion (til DB2) kan findes på: http://www7b.boulder.ibm.com/dmdd/library/techarticle/0203venigalla/0203venigalla.html
Følgende eksempel beskriver ligeledes brugen af rekusrion i DB2: http://nscpcw.physics.upenn.edu/db2_docs/db2s0/db2s0446.htm#HDRBOMAPP

Det kræver lidt tilvænning at bruge rekursion i SQL, men gøres det rigtigt er det et utroligt godt stykke værktøj, der kan forenkle visse problemstillinger markant.
Avatar billede bobbedude Nybegynder
08. april 2002 - 10:13 #4
hmm jeg er vist lidt dum, jegkan godt se det smarte med rekursion men jeg kan ikke få det til at virke. Jeg prøvede eksemplet  keysersoze skrev men jeg kan ikke få det til at virke med under kategorier.
Avatar billede bobbedude Nybegynder
08. april 2002 - 14:53 #5
Ok jeg har selv lavet det

her er siden der viser de øverste kategorier

<table width="230" border="0" cellspacing="0" cellpadding="0">
<%
response.buffer = true
set connect = server.createobject("ADODB.Connection")
Connect.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("../links.mdb")
Set rs = Connect.Execute("SELECT * FROM kategorier")

if not rs.EOF then
do until rs.EOF

if rs("parent") = 0 then
%>
<tr>
<td align="left" width="15"><img src="pic-admmodul/folder.gif"></td>
<td align="left" width="115" class="folder"><a href="indtastprodukter2.asp?linkid=<%=rs("id")%>"><%=rs("kategori")%></a></td>
<td align="right" width="100"><img src="pic-admmodul/edit.gif"></td>
</tr> 
<%
end if
rs.movenext
Loop
else
response.write "Ingen felter"
end if
rs.close
set rs = nothing
%>
</table>


Og her er siden der viser under kategorier og links, den kan også vise kategorier i kategorier.


<table width="230" border="0" cellspacing="0" cellpadding="0">
<%
set connect = server.createobject("ADODB.Connection")
Connect.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("../links.mdb")
Set rs = Connect.Execute("SELECT * FROM links where kategori =" & request("linkid") & "")

if not rs.EOF then
do until rs.EOF
%>
<tr>
<td align="left" width="15"><img src="pic-admmodul/produkt.gif"></td>
<td align="left" width="115"  class="produkt"><%=rs("navn")%></td>
<td align="right" width="100"><img src="pic-admmodul/edit.gif"></td>
</tr> 
<%
rs.movenext
Loop
end if
rs.close
set rs = nothing
%>

<%
Set rs = Connect.Execute("SELECT * FROM kategorier where parent =" & request("linkid") & "")

if not rs.EOF then
do until rs.EOF

%>
<tr>
<td align="left" width="15"><img src="pic-admmodul/folder.gif"></td>
<td align="left" width="115" class="folder"><a href="indtastprodukter2.asp?linkid=<%=rs("id")%>"><%=rs("kategori")%></a></td>
<td align="right" width="100"><img src="pic-admmodul/edit.gif"></td>
</tr> 
<%
rs.movenext
Loop
end if
rs.close
set rs = nothing
%>
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