webForumDet fria alternativet

Sökväg ala forum

ASP

7 svar · 273 visningar · startad av per-v

Medlem sedan maj 200161 inlägg
Frågan#1

God kväll/morgon!

Ok, det här kanske är en jävligt kryptisk fråga, men nu är jag för trött för att tänka själv...

Jag skulle vilja ha en "sökvägs funktion" som brukar finnas på dom flesta forumen, typ:

webForum > Webbrelaterade forum > Webbutveckling > ASP, VBScript

Låt säga att min DB ser ut på följande sätt:

------------------------------------
| ID | subID | title     | txt     |
------------------------------------
| 1  | 0     | Startsida | Bla bla |
------------------------------------
| 2  | 1     | Om        | Bla bla |
------------------------------------
| 3  | 1     | Kontakt   | Bla bla |
------------------------------------
| 4  | 2     | Adresser  | Bla bla |
------------------------------------

Värdet i "subID" är vilken kategori den posten tillhör. Så i detta fall är alltså "Adresser" en undersida till "Om". Så sökvägen ska se ut som nedan:

Startsida > Om > Adresser

Kan man bygga en funktion som skriver ut en sökväg av ovanstående typ av denna DB struktur?

Tacksam för all hjälp!

Nej, nu är det fan läge för Mr. Blund att dyka upp!

God natt!

Medlem sedan sep. 2002366 inlägg
#2

Har INTE testat det här och den är nog ganska krävande, men kul rekursiv kodning :D

function kategori(ID)
subID = 0
SQL = "SELECT ID,subID FROM databas WHERE ID = " & ID
Set RS = Connect.Execute(SQL)
If Not RS.EOF Then
subID = RS("subID")
End If
Set RS = Nothing

If subID > 0 Then
kategori = " OR ID = " & ID" & kategori(subID)
Else
kategori = " OR ID = " & ID
End If
end function

WHR = kategori(4)

SQL = "SELECT ID,subID,title FROM databas WHERE ID = 0" & WHR & " ORDER BY subID"
Set RS = Connect.Execute(SQL)
Do Until RS.EOF
%> > <%=RS("title")%><%
RS.MoveNext
Loop
Set RS = Nothing

' Sätter ID = 0 i where endast för att WHR börjar med OR ;)

Meddela gärna om det funkade eller inte ;)

-Eitraz

Medlem sedan sep. 2002366 inlägg
#3

Hmm.. kanske var lite onödigt det där..
om du använder det där, lägg så den skriver ut direkt i funktionen istället så slipper man ju den sista SQL-grejen ;)

-Eitraz

Medlem sedan maj 200161 inlägg
#4

Tack!

Ska prova det under dagen och återkommer med resultatet...

Medlem sedan maj 200161 inlägg
#5

Fan vad bra det funkar!

Function catPath(id)
	Set Con = Server.CreateObject("ADODB.Connection")
	Set rs	= Server.CreateObject("ADODB.Recordset")
	Con.Open DBPATH

	pathSubID = 0
	SQL = "SELECT ID, subID FROM content WHERE ID = " & id
	rs.Open SQL, Con

		If NOT rs.EOF Then
			pathSubID = RS("subID")
		End If

	rs.Close

	If pathSubID > 0 Then
		catPath = " OR ID = " & id & "" & catPath(pathSubID)
	Else
		catPath = " OR ID = " & id
	End If

	SQL = "SELECT id, subID, title FROM content WHERE ID = 0 " & catPath & " ORDER BY subID"
	rs.Open SQL, Con

		Do While NOT rs.EOF

			rsID    = rs("id")
			rsTitle = rs("title")

			printContent = ""
			If rsID <> id Then
				printContent = printContent & "<b>&raquo;</b> " & rsTitle & " "
			Else
				printContent = printContent & "<b>&raquo;</b> <a href=""content.asp?subID=" & rsID & """>" & rsTitle & "</a> "
			End If

			rs.movenext
		Loop
		Response.Write printContent

	rs.Close
	Con.Close
	Set rs  = Nothing
	Set Con = Nothing
End Function

Jag bugar och bockar och säger tack så mycket för hjälpen!

Medlem sedan sep. 2002366 inlägg
#6

Kul det funkade :D

Men bör inte

End Function
ligga efter

*If pathSubID \> 0 Then
	catPath = " OR ID = " & id & "" & catPath(pathSubID)
Else
	catPath = " OR ID = " & id
End If*

? ;)

-Eitraz

Medlem sedan sep. 2002366 inlägg
#7

hmm.. föresten.. på sättet du använder funktionen kan det nog funka ändå ja ;)

-Eitraz

Medlem sedan maj 200161 inlägg
#8

Hehe... det kanske det borde, men nu funkar det som en klocka så jag vågar inte ändra nått (är inte allt för haj på ASP) ;)

266 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)