0

わかりました、これが理にかなっていることを願っています。だから私はお店を作っています。お店全体で一定の要素はお店側のナビゲーションです。これは、メイン カテゴリをヘッダーとして表示する水平メニューです。

ショップのメイン ページに移動すると、カテゴリを選択するよう求められます。このページでは、次のようにメイン カテゴリ ヘッダーのみが表示されます。

カテゴリ1 カテゴリ2 カテゴリ3 カテゴリ4 カテゴリ5

ただし、カテゴリを選択すると、そのカテゴリ ページにリダイレクトされ、サイド ナビゲーション メニューが若干変更されます。そして、そのカテゴリのサブメニューとそのカテゴリのみを表示します。たとえば、Cat1 をクリックすると、次のようになります。

カテゴリ 1 サブカテゴリ 1 サブカテゴリ 2 サブカテゴリ 3 カテゴリ 2 カテゴリ 3 カテゴリ 4 カテゴリ 5

基本的な例で申し訳ありません。私の問題は、1 つのカテゴリに対してそのサブメニュー ループのみを作成できないように見えることです。それらのいずれも表示されないか、同じサブメニューがすべてのカテゴリに対してループされます。

これはサイドナビゲーションコードです:

<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にかなり慣れていません。誰かが私が言っていることを理解し、正しい方向に向けることができますか? 前もって感謝します。

4

2 に答える 2

2

以下に示すように、特定の ID の条件を追加する必要があります。

if (isset($_GET['id']) && ($_GET['id'] > 0) && ($_GET['id']==$navHead['CatID'])) {
于 2012-11-20T12:52:09.953 に答える
1

たったひとつの変化

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

1 つのカテゴリをフェッチして内側のループに移動するたびに、特定のメイン カテゴリのマスター ID が必要になるため、サブカテゴリには必須です。その ID を内部ループ クエリに渡すことができます。

于 2012-11-20T12:53:11.890 に答える