0

このメニューを正しく機能させるのに苦労しています。

function writeMenu(){ echo "<div id=\"menu\">" <ul id=\"top-link\">"; m("top", "n"); echo "</ul></div>";(申し訳ありませんが、正しくフォーマットされません)

    function m($parent,$issub){
      $parentQ = "select * from cdi_menu";//gets menu items from menu table
      $parentResult = mysql_query($parentQ); //runs menu item query and obtains result
      while ($link = mysql_fetch_assoc($parentResult)) {//for each line in the result do the folowing:
        if($parent==$link['PARENT']){//if the next link belongs to this menu item
          echo "\n    <li><a href=\"".$link['LINK']."\">".$link['DISPLAY']."</a></li>";
          if($issub=="n" && $link['HASCHILD']=="y"){//if this menu item is a top menu item
            echo "\n  <li id=\"sub-link\"><ul>";
            m($link['ID'], $links, "y");
            echo "\n  </ul></li>";
          }
        }
      }
    }

    echo writeMenu();

私がやろうとしているのは、「サブリンク」IDを非表示にできる場所にすることです(クラスを使用しますが、javascriptはクラススタイルを編集するのではなく、IDのみを編集するようです)。サブリンク アイテムは、親アイテムの上に表示されます。

top最上位の要素をID参照し、データベース内の一意の ID を参照します。

ありがとう、紛らわしくてすみません。

4

1 に答える 1

1

関数には2つのパラメーターしかありませんが、内部で3つ呼び出します

m($link['ID'], $links, "y");

$links は不要です。

クエリを次のように変更すると良いでしょう

$parentQ = "select * from cdi_menu WHERE parent='$parent'";

そのため、最初の if ステートメントは必要ありません。各メニュー/サブメニューに対してすべての行を複数回フェッチすることはありません。

于 2013-02-08T22:27:45.607 に答える