2011-07-13 9 views
0

私はasp.Myに関する問題を抱えています;そのようなテーブル構造。MenuIDAlt_MenuIDMenu_Adiと呼ばれています。最後に、メニュー表のmenu_adi欄にこれらの項目を表示したい。ASP内のテーブルにメニュー名を表示

例:

MenuID Alt_MenuID Menu_Adi 

1   0   Anasayfa 
2   0   Urunler 
3   2   Bisiklet (Alt_MenuID=2 is equal to MenuID=2,So the sub menu of urunler is bisiklet) 
4   3   Üç Tekerlekli Bisiklet (Alt_MenuID=3 is equal to MenuID=3.So,the sub menu of bisiklet is Üç Tekerlekli Bisiklet) 
5   0   İletişim 
6   5   Harita(sub menu of the iletişim) 

このように表示したいと思います。

- Anasayfa 
- Ürünler 
- - Bisiklet (sub menu) 
- - - Üç tekerlekli bisiklet (sub menu of the bisiklet) 
- İletişim 
- - Harita (sub menu) 

私は以下のような機能を使用しています。

<%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)%> 

答えて

0

あなたは再帰関数と「親」フィールドで正しい道にしている、しかし、あなたは本当に問題だけではない「従来の」道の、サブのような関数を使用しているようにしないように見えます物事をする。

アイテムの前に適切なダッシュの数を取得するには、level変数を渡して、再帰を呼び出す前にインクリメントします。

このような何か試してみてください:私は場合場合/終了の必要性を取り除き、あなたが出力をより行うことができます(ので、あなたがそれを渡すことができるように、適切な関数になってきました

<% 
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) %> 

を再帰に戻る)。

関連する問題