Forum

ASP Dinamik Men...
 
Bildirimler
Hepsini Temizle

ASP Dinamik Menü Oluşturmada Hata

2 Yazılar
2 Üyeler
0 Reactions
517 Görüntüleme
(@OzkanAR)
Gönderiler: 9
Active Member
Konu başlatıcı
 

Hayırlı Ramazanlar Arkadaşlar,

ben kontrol panelinden düzenlenebilir bir menü yaptım ama alt menülerde sorun var.

Örnek verirsek A-B-C diye 3 ana menü başlığım var. Bunlardan B ana menü başlığında 4 adet alt menü tanımlı ama nedense kodlarda bir sıkıntı var. Alt menüyü hep en sondaki tanımlamanın altına atıyor, yani C menü başlığına.

Menu.asp kodu, Vt görüntüsü ve son kullanıcı görüntüsü aşağıdadır;

[div id="nav" class="group">
<ul id="menu-main-nav" class="level-1">
<%
Set menuayrinti = Server.CreateObject("ADODB.Recordset")
Sorgu = "SELECT * FROM MENU WHERE CESIT=1 AND ALT=0 ORDER BY SIRA ASC"
menuayrinti.Open Sorgu, Baglanti, 1, 3
If menuayrinti.Recordcount = 0 Then
Response.Write "<font face='Verdana' size='2'>Menü Bulunamadı</font>"
Else
Do While Not menuayrinti.EOF


set toplammenu = Server.CreateObject("adodb.recordset")
Sorgu= "SELECT * FROM MENU WHERE CESIT=1 AND ALT=" & menuayrinti("ID") & " ORDER BY SIRA ASC"
toplammenu.open Sorgu, Baglanti, 1, 3
toplammenusayisi = toplammenu.RecordCount
toplammenu.Close
Set toplammenu=Nothing
%>
<li>
<a target="<%=menuayrinti("HEDEF")%>" href="<%=menuayrinti("URL")%>" title="<%=menuayrinti("TITLE")%>"<% if toplammenusayisi>0 then %> rel="dropmenu<%=menuayrinti("ID")%>"<% end if %>><%=menuayrinti("AD")%></a>
<%
menuayrinti.MoveNext
Loop
End If
menuayrinti.Close
Set menuayrinti=Nothing
%>


<%
Set anamenu = Server.CreateObject("ADODB.Recordset")
Sorgu = "SELECT * FROM MENU WHERE CESIT=1 AND ALT=0 ORDER BY SIRA ASC"
anamenu.Open Sorgu,Baglanti,1,3
While Not anamenu.EOF


set alttoplammenu = Server.CreateObject("adodb.recordset")
Sorgu= "SELECT * FROM MENU WHERE CESIT=1 AND ALT=" & anamenu("ID") & " ORDER BY SIRA ASC"
alttoplammenu.open Sorgu, Baglanti, 1, 3
alttoplammenusayisi = alttoplammenu.RecordCount
alttoplammenu.Close
Set alttoplammenu=Nothing


if alttoplammenusayisi>0 then
%>

<ul class="sub-menu">
<%
Set altmenuayrinti = Server.CreateObject("ADODB.Recordset")
Sorgu = "SELECT * FROM MENU WHERE CESIT=1 AND ALT=" & anamenu("ID") & " ORDER BY SIRA ASC"
altmenuayrinti.Open Sorgu, Baglanti, 1, 3
If altmenuayrinti.Recordcount = 0 Then
Response.Write "<font face='Verdana' size='2'>Menü Bulunamadı</font>"
Else
Do While Not altmenuayrinti.EOF
%>


<li>
<a target="<%=altmenuayrinti("HEDEF")%>" href="<%=altmenuayrinti("URL")%>" title="<%=altmenuayrinti("TITLE")%>"><%=altmenuayrinti("AD")%></a>
<!-- üstteki kodu olmassa alttaki li"nin altına koy-->
</li>
<%
altmenuayrinti.MoveNext
Loop
End If
altmenuayrinti.Close
Set altmenuayrinti=Nothing
%>
</ul>
</li>
</ul>
</div>
<%
end if
anamenu.MoveNext
Wend
anamenu.Close
Set anamenu=Nothing
%>



 
Gönderildi : 05/07/2014 23:01

(@eravse)
Gönderiler: 1753
Üye
 

Sanki mantıksal hatanız var gibi. Tabi bu sizin sizteminize göre değişir ama bu tip tablo yapılarında db planlaması şu şekilde olursa hem yönetmesi hemde kodlaması daha basit olur.

 

ID Root SubMenuID MenuName

1 0 0 Menu 1

2 0 0 Menu 2

3 1 0 Sub Menü 1.2

4 1 3 Sub > Sub Menü 1.2.3 

 

bu tabloya istinaden ilk yapmanız gereken Root 0 olanları bir sql ile almak . Daha sonra aldıklarınızın içinde Recursive olarak root u Item id ye esit olanları daha sonrada sub menü id si root a esit olanları cekerek donebilirsiniz.

*** Yukarıdaki senaryo örneklemedir. Kendi database yapınıza göre kodu treeview gibi haraket etmelisiniz. 

ASP olduğundan bu dönmelerde loop kısımlarına dikkat etmeniz gerekebilir.

 Şu adresteki  http://classicasp.aspfaq.com/general/how-do-i-generate-a-treeview-from-asp.html treeview kodunu incelerseniz size yardımcı olacaktır. 

Saygılarımla

 

 

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 24/11/2014 02:27

Paylaş: