Forum
Arkadaşlar merhaba,
Uzun süredir üzerinde kafa yorduğum fakat bir türlü çözemediğim bir sorunum var.
Umarım anlatımım çok karışık gelmez. Fikir verebilirseniz çok mutlu olurum.
Derdim menüler tablosundan menüleri yazdırmak, yazdırırken ilgili menünün alt_menüsü var ise onuda yazdırmak. Alt_menünün yine alt_menüleri varsa onlarıda yazdırmak. fakat kaç tane alt_menü olduğu bilinmiyor.
Tablo yapısı şöyle MenuID Alt_MenuID Menu_Adi
Örnek
MenuID Alt_MenuID Menu_Adi
1 0 Anasayfa
2 0 Urunler
3 2 Bisiklet (Alt_MenuID=2 | MenuID=2 ye eşit. Yani bisiklet, Urunlerin altmenüsü)
4 3 Üç Tekerlekli bisiklet (Alt_MenuID=3 | MenuID=3 ye eşit. Yani Üç Tekerlekli bisiklet, Bisikletin altmenüsü)
5 0 İletişim
6 5 Harita (İletişimin Alt menüsü)
şu şekilde yazdırmak istiyorum
- Anasatfa
- Ürünler
- - Bisiklet
- - - Üç tekerlekli bisiklet
- İletişim
- - Harita
Bunun için şöyle bir fonksiyon yazmaya uğraştım durdum.
<%function MenuYazdir(MenuID,say)
Set Liste = Data.Execute("Select MenuID,Alt_MenuID,MenuAd From Menuler Where Alt_MenuID="& MenuID)
if Liste.Eof=False Then
Do Until.Liste.Eof
Response.write("-"& Liste("MenuAd") &"<br>")
call MenuYazdir(Liste("MenuID"),0)
Liste.MoveNext
Loop
End if
Set Liste = Nothing
End function%>
<% call MenuYazdir(0,0)%>
Arkadaşlar merhaba,
Uzun süredir üzerinde kafa yorduğum fakat bir türlü çözemediğim bir sorunum var.
Umarım anlatımım çok karışık gelmez. Fikir verebilirseniz çok mutlu olurum.Derdim menüler tablosundan menüleri yazdırmak, yazdırırken ilgili menünün alt_menüsü var ise onuda yazdırmak. Alt_menünün yine alt_menüleri varsa onlarıda yazdırmak. fakat kaç tane alt_menü olduğu bilinmiyor.
Tablo yapısı şöyle MenuID Alt_MenuID Menu_Adi
Örnek
MenuID Alt_MenuID Menu_Adi1 0 Anasayfa
2 0 Urunler
3 2 Bisiklet (Alt_MenuID=2 | MenuID=2 ye eşit. Yani bisiklet, Urunlerin altmenüsü)
4 3 Üç Tekerlekli bisiklet (Alt_MenuID=3 | MenuID=3 ye eşit. Yani Üç Tekerlekli bisiklet, Bisikletin altmenüsü)
5 0 İletişim
6 5 Harita (İletişimin Alt menüsü)
şu şekilde yazdırmak istiyorum
- Anasatfa
- Ürünler
- - Bisiklet
- - - Üç tekerlekli bisiklet
- İletişim
- - HaritaBunun için şöyle bir fonksiyon yazmaya uğraştım durdum.
<%function MenuYazdir(MenuID,say)
Set Liste = Data.Execute("Select MenuID,Alt_MenuID,MenuAd From Menuler Where Alt_MenuID="& MenuID)
if Liste.Eof=False Then
Do Until.Liste.Eof
Response.write("-"& Liste("MenuAd") &"<br>")
call MenuYazdir(Liste("MenuID"),0)
Liste.MoveNext
Loop
End if
Set Liste = NothingEnd function%>
<% call MenuYazdir(0,0)%>
Merhaba,
Kullandığınız fonksiyonu şunun gibi denermisiniz.
var rs = 'Select all root records sort by MenuID';
while (r = rs.NextRecord) {
GenerateMenuCode(r.MenuID);
GenerateSubMenuCode(r.MenuID);
// optionally add trailing code here for MenuID
}
function GenerateSubMenuCode(id) {
var rs = 'Select all records where id is the parent record sort by MenuID';
while (r = rs.NextRecord) {
GenerateMenuCode(r.MenuId);
GenerateSubMenuCode(r.MenuId);
// optionally add trailing code here for MenuID
}
}
Yani burada burada alt_menuID dediğinizi şeyi daha tanımlanabilir hale getirirseksek parent olarak tanımlayabiliriz.Burada sen çoğunlukla parent/child tablo yapısını kullanmak istiyorsun.Bunun için yukarıda verdiğim kodu deneyebilirsin.
2. olarak şuna benzer bir şey deneyebilirsin.
<%
Function MenuYazdir(MenuID,strOutput, intLevel)
Set Liste = Data.Execute("Select MenuID,Alt_MenuID,MenuAd From Menuler Where Alt_MenuID="& MenuID)
Do While NOT Liste.Eof
For i = 1 to intLevel
strOutput = stroutput & "- "
Next
strOutput = strOutput & Liste("MenuAd") &"<br>"
intLevel = intLevel + 1
strOutput = MenuYazdir(Liste("MenuID"), strOutput, intLevel)
intLevel = intLevel -1
Liste.MoveNext
Loop
Set Liste = Nothing
End Function
%>
<%= MenuYazdir(0,0) %>
Saygılar,
Sevgili dostum ilgin için teşekkürler, şehir dışındaydım.
Deneme fırsatım olmadı. biran önce deneyip, sonucu yazarım.
Hocam yazdığın ikinci fonksiyona benzer bir fonksiyonla işimi hallettim.
İlgin için teşekkür ederim