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*
Skriv ut under-menyer...
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 →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.
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)
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...
vad gör rs.getrows() det är ju inte din funktion :e
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?
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
... 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 " » " &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..
ok, då har du alltså inga under-under rubriker ?
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
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
jo jag vet... det är det sista jag har stora problem med...
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 ?
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
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
%>
link 0 min lägsta meny jag kan ha.. då ska jag sätta intGrId = 0 eller hur? men det fungera inte.
"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
<!-- #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
intGrpId, ska vara din första kategori parent_page_id.
fungerar exemplet jag gav dig med min db ?
