webForumDet fria alternativet

Skriv ut under-menyer...

ASP

60 svar · 1 109 visningar · startad av voigtann1 · sida 2 av 4

Frågan, av voigtann1

<% SQL = "Select from menu where link=0" set recset = databas.execute(SQL) do until recset.eof response.write recset("namn")&"<br>" SQL = "SELECT from menu where link=" &recset("id") set recset2= databas.execute(SQL) do until recset2.eof response.write "--"&recset2("namn")&"<br>" recset2.movenext loop recset.movenext loop %> Detta är ju en snabb kod för att skriva ut 1 under rubrik..

Läs frågan i sin helhet →
Medlem sedan juni 20019 519 inlägg
#21

ah.. jag sitter fast i tänkandet... även om jag kör en kontroll med ID = link så kommer den aldrig att skriva ut under-under rubriken... *pust*

Medlem sedan apr. 2001425 inlägg
#22

Med min kod får du med alla under-under rubriker i en sql-fråga.
Jag föreslår att du kikar vidare på den trots allt...

genom att använda ett orderid-fält kan du ju dessutom ändra ordningen på länkarna i en under-undermeny osv.

Det blir dessutom lätt att administrera grupper och träd då du bara anger en förälder id på en länk och resterande underliggande träd hänger med i flytten.

Medlem sedan juni 20019 519 inlägg
#23

Dina koder är lite... "dåligt" förklarat tycker jag... jag vill ju visa alla rubriker i en select box... testade din då kan jag bara visa visa menyer per gång.. detta är nog rätt lätt att fixa.

red. Ska kolla igenom dina koder igen... förstår inte alla saker såsom arrey,unbound etc etc (aldrig lärt mig)

Medlem sedan apr. 2001425 inlägg
#24

jag kanske skulle kunna kommenterat mer, men hur ubound och array osv. fungerar måste du nog lära dig på annat sätt (läs: Wf)

Om du vill visa alla rubriker så kolla villkoret "IF intIndent=0 then " är den sann så visas en rubrik annars visas en underlänk.

ELLER

annars kan du ju ändra Sql-frågan så den bara hämtar de "föräldrar" du vill.

i exemplet så skriv så här:

GetRows("SELECT page_id,parent_page_id,linktext FROM tbl_links Where parent_page_id=1 ORDER BY orderid ")

då får du bara med de översta kategorierna...

Medlem sedan juni 20019 519 inlägg
#25

vad gör rs.getrows() det är ju inte din funktion :e

Medlem sedan juni 20019 519 inlägg
#26

Provade köra din kod med min databas.. då skrevs inte menyn ut i huvudtaget... vill helst ha något script som ingen har redan kodat(har svårt att tänka hur andra tänker). Jag tänkte prova med en arrey och databasen på något sätt bör ju detta fungera eller?

Medlem sedan apr. 2001425 inlägg
#27

vad gör rs.getrows() det är ju inte din funktion

fyller en array med data !

arrLinks = GetRows("SELECT.......")

fyller arrLinks med en matris motsvarande sql-satsen...

anledningen till att din meny inte syns kan vara att du inte satt "parent_page_id" till "1" på dina kategorier

det är den älsta "föräldern" och måste anges för att underliggande "barn" och "barnbarn" osv. ska synas

som du ser har jag angett min älsta överst i skriptet

intGrpId=1

mvh

Medlem sedan juni 20019 519 inlägg
#28

... känns som vi inte kommer någonvart jag kör denna kod på huvudsidan (gillar resultatet):

<a href=""><strong>Menu</strong></a><br>
<%
dim c, url, recset, namn, m_url, namn2, id, page
c = request.querystring("topic")
if c = "" then
  C = 0
end if

if c <> 0 then
  SQL = "SELECT namn,LINK,ID FROM MENU where ID = "&c &" order by namn"
  set recset = databas.execute(SQL)
  if recset.eof then
    namn = "error"
  else
    namn2 = recset("namn")
    link = recset("link")
    if link = 0 then
    namn = "<a href="""">Up one level</a><br>» "& namn2&""
    else
    namn = "<a href=""?topic="& link &""">Up one level</a><br>» "& namn2&""
    end if
    response.write "<b>"&namn&"</b><br>"
  end if
  recset.close : set recset = nothing
end if

SQL = "SELECT * FROM menu where link = "& c &" order by namn"
Set recset = Databas.Execute(SQL)

if recset.EOF then
else
  Do Until recset.EOF
  m_url = recset("url")
  if m_url <> "" then
    page = "<a href='"& m_url &"' target='_blank'>"& recset("namn")&"</a>"
  else
    page = "<a href=""?topic="& recset("id")&""">"& recset("namn")&"</a>"
  end if
    response.write "      &nbsp; » " &page& "<br>"    
  recset.MoveNext
  Loop
end if
recset.Close : set recset = nothing
%>

men på admin sidan vill jag ha som en selectbox som visar alla underrubriker... jag kan inte se hur din meny kommer att hjälpa det jag söker..

Medlem sedan apr. 2001425 inlägg
#29

ok, då har du alltså inga under-under rubriker ?

Medlem sedan juni 20019 519 inlägg
#30

Jo... det kan jag ha... men man "ser" aldrig menyerna.. exempel:
meny1:

webforum
medlemmar
testar

vi trycker på webforum

meny2:

webForum
Up one level
>> Macce - Länk vidare
>> voigtann1 - Länk vidare

vi trycker på Macce:

meny3:

Macce
Up one level
>> Information
>> Kontakta

etc etc.. förstår du?
men på admin sidan vill jag lista alla rubriker, underrubriker, under-underrubriker osv i en select box så att allt syns hur menyn ser ut tex:

webforum
-- Macce
---- Information
---- Kontakta
-- Voigtann1
medlemmar
testar

Medlem sedan apr. 2001425 inlägg
#31

ok, då är jag med !

Men för att få det sista måste du nog köra rekursivt, annars har du en begränsning på antalet nivåer

Medlem sedan juni 20019 519 inlägg
#32

jo jag vet... det är det sista jag har stora problem med...

Medlem sedan apr. 2001425 inlägg
#33

Skriptet är enkelt att modifiera om du vill skriva ut alla nivåer på en gång, behöver/vill du ha hjälp med det ?

Medlem sedan juni 20019 519 inlägg
#34

All hjälp jag kan få vore jag tacksam... option värdet ska vara IDt på meyn.. databasen ser ut:

ID
namn
link - länk ID:t
url - Om detta värde är större än 0 så är det en länk och inte en meny till fler underrubriker

Medlem sedan apr. 2001425 inlägg
#35

hmm, studera detta exempel mot min databas

<%
arrLinks		=		GetRows("SELECT page_id,parent_page_id,linktext FROM tbl_links ORDER BY orderid ")
intGrpId		=		1 

  Response.Write "<select name='frmValue' >"&VbCrlf		
	Call LinkTree(intGrpId,0)
  Response.Write "</select>"

Sub LinkTree(intParent,intIndent) :	Dim X,Z
		For X = 0 To Ubound(arrLinks,2)		
			If arrLinks(1,X) = intParent Then
			strIndent=""
				For Z = 1 To intIndent : strIndent = strIndent & " -" : Next								
				Response.Write("<option value='"&arrLinks(0,X)&"'>"&strIndent&" "&arrLinks(2,X)&"</option>"&VbCrlf)					
				Call LinkTree(arrLinks(0,X),intIndent + 1)			
			End If
		Next 
End Sub

Function GetRows(ByVal SQL)
		Dim arrRecords, rs	
		Set Connection = Server.CreateObject("ADODB.Connection")
		Connection.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.Mappath("\linktree\links.mdb"))		
		Set rs = Connection.Execute(SQL)
		If Not rs.BOF Or Not rs.EOF Then
			arrRecords = rs.GetRows()
		ELSE
			arrRecords = ""
		End If		
		rs.Close
		Set rs = nothing
		Connection.Close
		Set Connection = nothing
		GetRows = arrRecords 
End Function
%>
Medlem sedan juni 20019 519 inlägg
#36

link 0 min lägsta meny jag kan ha.. då ska jag sätta intGrId = 0 eller hur? men det fungera inte.

Medlem sedan apr. 2001425 inlägg
#37

"parent_page_id" är noll då, men du får aldrig ha samma "page_id" som "parent_page_id" då blir det rungång.

Alltså låt "page_id" börja från tio eller nåt

Medlem sedan juni 20019 519 inlägg
#38
<!-- #include file="database.asp" -->
<%
arrLinks		=		GetRows("SELECT * FROM menu ORDER BY link")
intGrpId		=		10 

  Response.Write "<select name='frmValue' >"&VbCrlf		
	Call LinkTree(intGrpId,0)
  Response.Write "</select>"

Sub LinkTree(intParent,intIndent) :	Dim X,Z
		For X = 0 To Ubound(arrLinks,2)		
			If arrLinks(1,X) = intParent Then
			strIndent=""
				For Z = 1 To intIndent : strIndent = strIndent & " -" : Next								
				Response.Write("<option value='"&arrLinks(0,X)&"'>"&strIndent&" "&arrLinks(2,X)&"</option>"&VbCrlf)					
				Call LinkTree(arrLinks(0,X),intIndent + 1)			
			End If
		Next 
End Sub

Function GetRows(ByVal SQL)
		Dim arrRecords, rs	
		Set Connection = Server.CreateObject("ADODB.Connection")
		Connection.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.Mappath("\fr\db\hallon.mdb"))		
		Set rs = Connection.Execute(SQL)
		If Not rs.BOF Or Not rs.EOF Then
			arrRecords = rs.GetRows()
		ELSE
			arrRecords = ""
		End If		
		rs.Close
		Set rs = nothing
		Connection.Close
		Set Connection = nothing
		GetRows = arrRecords 
End Function
%>

den skriver inte ut något i selectboxen

Medlem sedan apr. 2001425 inlägg
#39

intGrpId, ska vara din första kategori parent_page_id.

fungerar exemplet jag gav dig med min db ?

Medlem sedan apr. 2001425 inlägg
#40

SELECT * FROM menu ORDER BY link

vilka fält hämtar du och i vilken ordning ?

260 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)