Hej folkens
Jeg sidder her og prøver at få det her til at virke men fejler gang på gang.
Jeg vil gerne havde den til at kunne vælge mellem at vise categori'er som har en parent_id på 1 og 0.
lige nu kan den godt vise parent_id=0 så virker det fint men den kan slet ikke når jeg rettet den til 1
nogen der kan give mig en hånd, ville jeg meget gerne havde den.
categori-functions.php<?php
require_once 'config.php';
function formatCategories($categories, $parentId)
{
// $navCat gemmer alle children categorier
// of $parentId
$navCat = array();
// udvid kun categorier med det samme parent id
// Alle andre er kompakt
$ids = array();
foreach ($categories as $category) {
if ($category['cat_parent_id'] == $parentId) {
$navCat[] = $category;
}
// Gem ids til brug senere
$ids[$category['cat_id']] = $category;
}
$tempParentId = $parentId;
// loop til alle parent categrier id er kun = 0
while ($tempParentId != 0) {
$parent = array($ids[$tempParentId]);
$currentId = $parent[0]['cat_id'];
// tag alle categorier på samme level som parent
$tempParentId = $ids[$tempParentId]['cat_parent_id'];
foreach ($categories as $category) {
// hvis 1 categori på samme level som parent
// indsæt i $parent hvis den allerede er i den
if ($category['cat_parent_id'] == $tempParentId && !in_array($category, $parent)) {
$parent[] = $category;
}
}
// category sorter a-z
array_multisort($parent);
// sammensæt parent og child
$n = count($parent);
$navCat2 = array();
for ($i = 0; $i < $n; $i++) {
$navCat2[] = $parent[$i];
if ($parent[$i]['cat_id'] == $currentId) {
$navCat2 = array_merge($navCat2, $navCat);
}
}
$navCat = $navCat2;
}
return $navCat;
}
/*
hent alle top level categorier
*/
function getCategoryList()
{
$sql = "SELECT cat_id, cat_name, cat_image
FROM site_category
WHERE cat_parent_id = 0
ORDER BY cat_name";
$result = dbQuery($sql);
$cat = array();
while ($row = dbFetchAssoc($result)) {
extract($row);
if ($cat_image) {
$cat_image = WEB_ROOT . 'images/category/' . $cat_image;
} else {
$cat_image = WEB_ROOT . 'images/no-image-small.png';
}
$cat[] = array('url' => $_SERVER['PHP_SELF'] . '?c=' . $cat_id,
'image' => $cat_image,
'name' => $cat_name);
}
return $cat;
}
/*
Hent alle children categorier af $id.
Brugt til at vise alle categorier
*/
function getChildCategories($categories, $id, $recursive = true)
{
if ($categories == NULL) {
$categories = fetchCategories();
}
$n = count($categories);
$child = array();
for ($i = 0; $i < $n; $i++) {
$catId = $categories[$i]['cat_id'];
$parentId = $categories[$i]['cat_parent_id'];
if ($parentId == $id) {
$child[] = $catId;
if ($recursive) {
$child = array_merge($child, getChildCategories($categories, $catId));
}
}
}
return $child;
}
function fetchCategories()
{
$sql = "SELECT cat_id, cat_parent_id, cat_name, cat_image, cat_description
FROM site_category
ORDER BY cat_id, cat_parent_id ";
$result = dbQuery($sql);
$cat = array();
while ($row = dbFetchAssoc($result)) {
$cat[] = $row;
}
return $cat;
}
?>
Menu.php<?php
if (!defined('WEB_ROOT')) {
exit;
}
// hent alle categorier
$categories = fetchCategories();
// formater categorierne til visning
$categories = formatCategories($categories, $catId);
?>
<ul>
<?php
foreach ($categories as $category) {
extract($category);
// nu har vi $cat_id, $cat_parent_id, $cat_name
$level = ($cat_parent_id >= 1) ? 2 : 3;
$url = $_SERVER['PHP_SELF'] . "?c=$cat_id";
// til level 2 categorier (undermenu)
if ($level == 3) {
$cat_name = ' » ' . $cat_name;
}
// assign id="current" til den valgte categori
// highlight categoriens navn
$listId = '';
if ($cat_id == $catId) {
$listId = ' id="current"';
}
?>
<li<?php echo $listId; ?>><a href="<?php echo $url; ?>"><?php echo $cat_name; ?></a></li>
<?php
}
?>
</ul>