2012-11-20 55 views
0

好的,我希望這是有道理的。所以我正在建一個店鋪,整個店鋪不變的元素就是店面導航。這是一個水平菜單,將主要類別顯示爲標題。PHP只顯示第一個子菜單,如果變量設置爲每個菜單都不是一個

當您登陸主商店頁面時,它會提示您選擇一個類別。在這個頁面上只顯示主要類別頭,就像這樣:

CAT1 CAT2 的Cat3 3,4,5 五類

然而,當你選擇一個類別,它會重定向到該類別頁,並在側邊導航菜單會稍微改變。並顯示該類別只有該類別中的子菜單,因此,例如,如果你點擊CAT1它應該是這樣的:

CAT1 subCat1 subCat2 subCat3 CAT2 的Cat3 3,4,5 五類

對不起,基本的例子。我的問題是,我似乎無法爲一個類別創建子菜單循環,無論是否顯示子菜單,還是針對所有類別都使用相同的子菜單循環。

這是側邊導航代碼:

<div id="shopcontentl"> 
    <div id="shopnavigation"> 
    <?php 
    $navGet = mssql_query("SELECT * FROM Categories"); 
    while ($navHead = mssql_fetch_array($navGet)) { 
    ?> 
     <a href="category.php?id=<?php echo $navHead['CatID']; ?>"><?php echo $navHead['CatName']; ?></a> 
    <?php 
    if (isset($_GET['id']) && ($_GET['id'] > 0)) { 
    ?> 
    <div class="subnav"> 
    <?php 
    $subnavGet = mssql_query("SELECT SubCatName FROM SubCategories WHERE CatID = ".$_GET['id'].""); 
    while ($subnavHead = mssql_fetch_array($subnavGet)) { 
    ?> 
     <a href="category.php"><?php echo $subnavHead['SubCatName']; ?></a> 
    <?php 
    } 
    ?> 
    </div> 
    <?php 
    } 
    } 
    ?> 
    </div> 
</div> 

我敢肯定,我現在用的是循環錯了,但我是相當新的PHP,任何人都可以明白我在說什麼,並指出我在正確的方向?提前致謝。

回答

2

您需要爲perticular id添加條件,如下所示。

if (isset($_GET['id']) && ($_GET['id'] > 0) && ($_GET['id']==$navHead['CatID'])) { 
+0

完美地工作,謝謝。 +1,並且會盡我所能接受。不知道是誰投了票,但我想知道一個解釋。 – Bohdi

+0

只有當循環中的當前類別與當前類別頁面的ID相同時,才需要顯示子菜單。 Daxen的解決方案也是對的。 – VibhaJ

1

只改變一個

<?php 
$subnavGet = mssql_query("SELECT SubCatName FROM SubCategories WHERE CatID = ".$navHead['CatID'].""); 
while ($subnavHead = mssql_fetch_array($subnavGet)) { 
?> 

它必須爲子類別,因爲每當獲取一個類別,不是去內環它都需要主ID爲特定的主類別。所以我們可以把這個id給內部循環查詢。

相關問題