Avatar billede copeland Nybegynder
14. august 2002 - 15:48 Der er 9 kommentarer og
1 løsning

Rekursiv funktion

Jeg har fundet, og bruger denne funktion til at udskrive rekursivt fra databasen, men den udskriver med <ul> og <li> tags.

Er der en der kan gennemskue at omskrive den så den bruger &nbsp; til at "skubbe" med?

Punkt1
  Punkt 2
      Punkt 3

o.s.v.


mvh
Anne
Avatar billede copeland Nybegynder
14. august 2002 - 15:49 #1
ups....

her er funktionen :-)

<%
Function ShowReplies(id, conn)
  SQL = "select * FROM Table1 where REPLYID=" & id & " order by ID"
    Set RS=Conn.Execute(sql)
    If not rs.eof then
    response.write "<ul>"
   
    do while not rs.eof
        response.write "<li>" & rs("subject")
        Call ShowReplies(rs("id"),conn)
        rs.movenext
    loop
   
    response.write "</ul>"
    End if
   
    rs.close
    set rs=nothing
   
End Function
%>

<%

  Set Conn=Server.CreateObject("ADODB.Connection")
  Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("database.mdb")
  SQL="select * from Table1 where replyid=0" & " ORDER BY ID"
  Set MainRS=Conn.Execute(SQL)

      do while not MainRs.Eof

        response.write MainRs("subject")
        Call ShowReplies(MainRS("id"),conn)

    MainRs.movenext
    Loop
   
    Mainrs.close
    conn.Close
    set mainrs=nothing
    set conn=nothing
%>
Avatar billede medions Nybegynder
14. august 2002 - 15:52 #2
strSpace = "&nbsp;"
  do while not rs.eof
    strSpace = strSpace & "&nbsp;"
        response.write strSpace & rs("subject")
        Call ShowReplies(rs("id"),conn)
        rs.movenext
    loop

//>Rune
Avatar billede eagleeye Praktikant
14. august 2002 - 15:59 #3
Jeg har lavet det hvor man overført level vidre og satte to mellemrum ind ved hvert level:



<%
Function ShowReplies(id, conn, level)
  SQL = "select * FROM Table1 where REPLYID=" & id & " order by ID"
    Set RS=Conn.Execute(sql)
    If not rs.eof then
    response.write "<ul>"
   
    do while not rs.eof
        for i = 0 to level
          Response.Write "&nbsp;&nbsp;"
        next
        response.write rs("subject")
        Call ShowReplies(rs("id"),conn,level+1)
        rs.movenext
    loop
   
    response.write "</ul>"
    End if
   
    rs.close
    set rs=nothing
   
End Function
%>


og første gang du kalder functioen rette fra:

Call ShowReplies(MainRS("id"),conn)

Til:

Call ShowReplies(MainRS("id"),conn,0)
Avatar billede copeland Nybegynder
14. august 2002 - 16:05 #4
Den gør det ikke rigtigt, punkterne "skydes" ikke som de skal i forhold til hinanden, der laves skydning men ikke rigtigt.


mvh
Anne
Avatar billede copeland Nybegynder
14. august 2002 - 16:07 #5
eagleeye >>

Kan man ikke lave det helt uden <ul> tags


mvh
Anne
Avatar billede eagleeye Praktikant
14. august 2002 - 16:07 #6
hvis kode bruger du??
Avatar billede eagleeye Praktikant
14. august 2002 - 16:08 #7
Jo det kan bare fjernes ...
Avatar billede eagleeye Praktikant
14. august 2002 - 16:09 #8
functionen bliver så, der skal nok også en <br> ind:

<%
Function ShowReplies(id, conn, level)
  SQL = "select * FROM Table1 where REPLYID=" & id & " order by ID"
    Set RS=Conn.Execute(sql)
    If not rs.eof then
 
    do while not rs.eof
        for i = 0 to level
          Response.Write "&nbsp;&nbsp;"
        next
        response.write rs("subject")
        response.write "<br>"
        Call ShowReplies(rs("id"),conn,level+1)
        rs.movenext
    loop
   
    End if
   
    rs.close
    set rs=nothing
   
End Function
%>
Avatar billede eagleeye Praktikant
14. august 2002 - 16:14 #9
hvordan skal de enkelte indryk være ??? det som jeg har vist indrykker med 2 mellemrum pr level.

Subject 1    <----- første level rykkes ikke ind level = 0 i functionen
  Subject 2    <------ indrykket 2 mellemrum, level = 1 i functionen
    Subject 3    <------ indrykket 4 mellemrum, level = 2 i functionen
Avatar billede copeland Nybegynder
14. august 2002 - 16:28 #10
eagleeye >>

Det var lige det....1000 tak

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