ユーザーがカテゴリを選択すると、選択したカテゴリのサブカテゴリのみがナビゲーションに表示されるナビゲーションを構築しようとしています。
親IDとして渡す変数をURLから取得しています。次のようになります。
locolhost/store.php?c=2
私が探しているナビゲーションは次のようになります。
Parent
child
child
Parent
Parent
Parent
しかし、現在私のコードは以下を生成します:
Parent
child
child
Parent
child
child
Parent
child
child
Parent
child
child
これが私の現在のコードです:
shop.php
$parent_id = $_GET['p'];
include('navigation.php');
$navigation = new navigation;
print($navigation->main($parent_id));
ナビゲーション.php
public function main($parent)
{
/* PDO */
$array = $categoryVIEW->fetchAll(PDO::FETCH_ASSOC);
return $this->buildNav($array,$parent);
}
private function buildNav($array,$parent)
{
$html = '';
foreach($array as $item)
{
if($item['parent'] === NULL)
{
$html .= "\n<div class=\"parent\"><a href=\"?p=".$item['category_id']."\">".$item['category_name']."</a></div>\n";
$html .= "<div class=\"child\">\n";
$html .= $this->getChildren($array,$parent);
$html .= "</div>\n";
}
}
return $html;
}
private function getChildren($array,$parent)
{
$html = '';
foreach($array as $item)
{
if($item['parent']===$parent)
{
$html .= "\t<a href=\"?p=".$item['category_id']."\">".$item['category_name']."</a>\n";
}
}
return $html;
}
選択したカテゴリのすべての子を取得するgetChildren()
fromを呼び出すだけです。buildNav()
親が子であることを示したい場合にのみ呼び出される条件が必要だと思いgetChildren()
ます...それが理にかなっている場合は?
ここに私のデータベースがあります: