0

ここで人々の意見と、おそらく何かを実装するための最良の方法についてのガイダンスについて疑問に思っています。

私が持っているのは、非常に基本的なイントラネットで、会社全体のドキュメントとファイルを提供するように設計されています。ページの上部に基本的なメニュー バーがあり、トップ レベルの項目とサブ メニュー/項目があります。明らかに、メニューは多くのレベルにカスケードできます。これは動的ドライブから取得した単純な JavaScript であり、html < li > 構造をメニューに変換します。

基本的な考え方は次のとおりです。

<li><a href='#'>Top Level 1</a>
    <ul>
        <li><a href='#'>Item 1</a></li>
        <li><a href='#'>Item 2</a></li>
        <li><a href='#'>Sub menu 1</a>
            <ul>
                <li><a href='#'>Sub Item 1</a></li>
            </ul>
        </li>
    </ul>
</li>

これは、メニューを作成するために使用されます。新しい < ul > 要素を開始するたびに、サブ メニューが作成されます。

これは問題なく動作しますが、サイトのドキュメントが変更されるたびに手動で新しいリンクを作成したり、古いリンクを削除したりする必要があるため、少し面倒です。

私が探しているのは、この構造をデータベースに移動して、必要に応じて基本的な html フォームと PHP スクリプトを使用してリンクを挿入、更新、削除できるようにすることです。

また、マネージャーが不在の場合に新しいファイルをアップロードすることもできます。

私はこれを簡単に試してみて、そのようなオプションを見つけましたが、少しぎこちなく、今後維持するのが面倒になる可能性があります。

基本的に、以下にリストされている列を含むテーブルがあります。

  • ドキュメント ID
  • ファイル名
  • ファイルパス
  • メニュー
  • サブ1
  • サブ 2
  • サブ3
  • ラベル
  • 開く
  • 私ができることは、参照用に一意の ID を取得し、href リンクでファイルの場所を指すために一緒に使用できるファイル名とファイル パスを入力することです。次に、メニューと 3 つのサブメニュー フィールドを使用して、その項目をメニュー構造のどこに配置するかを指示します。ラベルはリンクに名前を付けるだけで、open in はドキュメントを開く場所 (_new、frame、ifram など) をページに伝えます。

    次に、PHP は mysql クエリを使用してメニュー内のすべての項目を検索し、それらをエコー出力できます。問題は、メニューとサブメニューごとに個別の MySQL クエリが必要になることです。つまり、メニュー全体が MySQL クエリでいっぱいになる可能性があります。

    これに対するより良い解決策についてアドバイスしたり、PHP を可能な限りシンプルかつ柔軟にするのに役立つ人はいますか?

    どうもありがとう

    エズ

    編集:

    必要に応じて PHP の例をいくつか提供できますが、それらは非常に大きいです。

    4

    2 に答える 2

    2

    私が知っているように、これのベストプラクティスはネストされたツリー構造であり、そのロジックは2つの言葉で表されます:

    テーブルの必須フィールド: id、parent_id、left、right

    次に、最初の行を追加すると、この値が得られます

    1, 0, 1, 2
    

    次に、次のような左右のフィールドを改善します。

    2, 0, 3, 4
    3, 0, 5, 6
    

    最初のアイテムのサブディレクトリを作成する必要がある場合、完全な構造は次のようになります。

    1, 0, 1, 4
    2, 0, 5, 6
    3, 0, 7, 8
    4, 1, 2, 3
    

    そのため、左から順に並べられたすべてのツリーを簡単に取得し、親が存在する場合はすべての行の親レベル値をチェックして、独自のレベルを計算できます。

    于 2012-04-24T15:05:39.730 に答える