Avatar billede jens_k Nybegynder
28. juni 2002 - 11:41 Der er 9 kommentarer og
2 løsninger

Mapper og filer..

Hejsa..

Jeg sidder og leger med et lille script til at vise mapper med.

Mapperne ligger ikke på serverne, men i min database..

Jeg har en database med kolonnerne : ID, PID, Title

ID indeholder et autonummer, og PID indeholder ID´et på den mappe som mappen høre under. Hvis det er den mappe som er øverst, er PID = 0.

Hvordan laver jeg et "uendeligt" loop så den selv kan finde ud af hvornår der ikke er flere ? Jeg kan godt lave såen at den kan "gå" 5 led ud, men det ville være lidt fedt hvis scriptet var uendeligt, så den stoppede når der ikke var flere..

Det skal lige siges der godt kan være flere mapper under en mappe. Altså der kan f.eks være flere med PID : 5

Kan dette laves uendeligt ? Og hvordan ?

Jens K
Avatar billede tmceu Praktikant
28. juni 2002 - 11:46 #1
Du kan lave det man kalder rekursive funktioner, altså funktioner der kalder sig selv. Se dette simple eksempel:

Function Recursive(intNumber)

If intNumber > 0 Then
    Response.Write intNumber & "<BR>"
    Recursive(intNumber-1)
Else
    Response.Write "The End"
End If

End Function

Recursive(5)

Outputtet bliver:

5
4
3
2
1
The End
Avatar billede jens_k Nybegynder
28. juni 2002 - 11:53 #2
Du kan vel ikke komme med et bedre eksempel.. Jeg kan ikke helt regne ud hvad jeg kan bruge det der til..

Jens K
Avatar billede tmceu Praktikant
28. juni 2002 - 12:00 #3
Du kan bruge det til en "uendelig" loop, der selv stopper når der ikke er flere. I dette tilfælde stopper den, når den når ned på 0 - i dit tilfælde skal den stoppe når der ikke er flere foldere.

Jeg har lidt svært ved at vide hvordan det skal implementeres i din kode, da du ikke skriver meget om hvordan du håndterer din database ift. ASP.
Avatar billede jens_k Nybegynder
28. juni 2002 - 12:06 #4
Okay her er koden.. Ved ikke rigtig om du kan hitte rundt i det..

<div align="left">
<table border="0" cellspacing="0" width="182" id="AutoNumber1" height="48" cellpadding="0" style="border-collapse: collapse" bordercolor="#111111">
<tr>
<td width="39" height="45"><img border="0" src="../img/FileLogo.jpg"></td>
<td width="136" height="45"><b><font face="Verdana" size="1">Repliqa.com</font></b></td>
</tr>
</table>
<div align="center">
<center>
<table border="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="921" id="AutoNumber4" cellpadding="0">
<tr>
<td width="50">&nbsp;&nbsp;&nbsp; </td>
<td width="100%">
<%
SQL = "SELECT * From Documents where PID=0 ORDER BY Title"
Set RS = conn.execute( SQL )

Do While Not Rs.EOF

myID = RS("ID")
bCheck = False
       
For i = 0 To UBound(ArrJK)
If myID = int(ArrJK(i)) Then
bCheck = True
End If
Next

If bCheck = True Then %>
<table cellspacing="0" cellpadding="0" border="0" >
<tr>
<td><a href="folder_close.asp?id=<%= myID%>&open=<%= OpenFolders%>"><img border="0" src="../img/FileMenuMinus.jpg"><img border="0" src="../img/FileMenuMap2.jpg"></a></td>
<td><font face="Verdana" size="1" color="#7E9BB5">
<a style="text-decoration: none; color: #7E9BB5" href="folder_close.asp?id=<%= myID%>&open=<%= OpenFolders%>"><%= RS("Title")%></a></font></td>
</tr>
</table>
<%
SQL1 = "SELECT * From Documents where PID = " & MyID & " ORDER BY Title"
Set RS1 = conn.execute( SQL1 )
do while not rs1.eof
%>
<table cellspacing="0" cellpadding="0" border="0" >
<tr>
<td><img border="0" src="../img/FileMenuLine.jpg"><img border="0" src="../img/FileMenuPlus.jpg"><img border="0" src="../img/FileMenuMap1.jpg"></td>
<td><font face="Verdana" size="1" color="#7E9BB5"><%= RS1("Title")%></font></td>
</tr>
</table>
<%
rs1.movenext
loop
%>
<% Else %>
<table cellspacing="0" cellpadding="0" border="0" >
<tr>
<td><a href="folder_open.asp?id=<%= myID%>&open=<%= OpenFolders%>"><img border="0" src="../img/FileMenuPlus.jpg"><img border="0" src="../img/FileMenuMap1.jpg"></a></td>
<td><font face="Verdana" size="1" color="#7E9BB5"><a style="text-decoration: none; color: #7E9BB5" href="folder_open.asp?id=<%= myID%>&open=<%= OpenFolders%>"><%= RS("Title")%></a></font></td>
</tr>
</table>
<% End IF %>
<%
rs.movenext
loop
%>
</td>
</tr>
</table>
</center>
</div>
<br>
</div>


Jens K
Avatar billede jens_k Nybegynder
28. juni 2002 - 12:07 #5
Hvis du kan få det hen, og lige forklare hvad det er du har gjort, så afsætter jeg 200 point til dig..

Jens K
Avatar billede tmceu Praktikant
28. juni 2002 - 12:18 #6
Jeg må indrømme, at jeg ikke helt kan gennemskue din kode. Kan du markere/forklare den del der pt. håndterer dine foldere...
Avatar billede jens_k Nybegynder
28. juni 2002 - 12:23 #7
Okay..

Det er fordi man både kan åbne og lukke mapper...

Den måde den finder ud af om mappen er åbnet eller lukket er via Querystringen. Som du nok allerede kan se..


Du kan evt prøve og lave en database med de 3 felter i, og så køre scriptet, så kan du se hvordan det virker, og sikkert bedre forstå koden..

Det kan godt være det er lidt rodet, men jeg er ikke så god til ASP, men prøver på at blive det..

Jens K
Avatar billede sn0wflake Nybegynder
28. juni 2002 - 16:59 #8
Held og lykke Jens K.
Avatar billede kalkunen Nybegynder
28. juni 2002 - 17:10 #9
Du vil alså have en side der hiver alle de felter ud hvor pid er 0 og så skal linke til en side med pid med alle mapper med pid som er det samme som undermappens id?
Avatar billede jens_k Nybegynder
28. juni 2002 - 23:54 #10
Okay.. Har droppet det, det er pt for svært med de newbie skills jeg har lige nu. Vil prøve og lave et forum istedet..

Jens K
Avatar billede jens_k Nybegynder
28. juni 2002 - 23:55 #11
Kalkunen.. Ja. Men undermappen kan også have undermapper, som også kan have undermapper, osv..

Jens K
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