Hallo liebe PHP-Programmierer,
Ich habe auf rekursivem Wege ein Menü mit unbestimmter Tiefe erstellt.
Problem: Durch Anklicken des Icons oder Links einer Hauptkategorie M sollen alle untergeordneten Kategorien S derselben Hierarchieebene ein- und ausgeblendet werden können. Bei der übergeordnetem Kategorie muß das Icon gewechselt werden. (von closedFolder in openFolder und umgekehrt).
Ich habe verschiedene Javascript-Lösungsansätze durchprobiert, komme jedoch nicht weiter. Ich hoffe, dass mir jemand von Euch mit einem gezielten Lösungsvorschlag weiterhelfen kann. Kategorien ohne Kinder sind Unterkategorien und werden mit S wie („Sub“) gekennzeichnet.
Legend: mgr = Menügruppe, pid=parentid, child=Anzahl der Kinder, M=Hauptkategorie, S=Unterkategorie, lev=level, id=Kategorien-Id.
Die Icon_Urls Die Icons werden per Formular in die Datenbank eingetragen.
Kategorien(Anzahl Kinder)
Kategorien mgr haupt hier lev id pid child
+cms(3) 1 M 1 1 1 0 3
-cms_1 1 S 2 1 2 1 0
-cms_2 1 S 2 2 3 1 0
-cms_3 1 S 2 3 4 1 0
+webshops(3) 2 M 1 2 5 0 3
+websho_1(1) 2 M 2 1 6 5 1
-websh_1_1 2 S 3 1 8 6 0
-websh_2 2 S 2 2 7 5 0
Ich habe auf rekursivem Wege ein Menü mit unbestimmter Tiefe erstellt.
Problem: Durch Anklicken des Icons oder Links einer Hauptkategorie M sollen alle untergeordneten Kategorien S derselben Hierarchieebene ein- und ausgeblendet werden können. Bei der übergeordnetem Kategorie muß das Icon gewechselt werden. (von closedFolder in openFolder und umgekehrt).
Ich habe verschiedene Javascript-Lösungsansätze durchprobiert, komme jedoch nicht weiter. Ich hoffe, dass mir jemand von Euch mit einem gezielten Lösungsvorschlag weiterhelfen kann. Kategorien ohne Kinder sind Unterkategorien und werden mit S wie („Sub“) gekennzeichnet.
Legend: mgr = Menügruppe, pid=parentid, child=Anzahl der Kinder, M=Hauptkategorie, S=Unterkategorie, lev=level, id=Kategorien-Id.
Die Icon_Urls Die Icons werden per Formular in die Datenbank eingetragen.
Kategorien(Anzahl Kinder)
Kategorien mgr haupt hier lev id pid child
+cms(3) 1 M 1 1 1 0 3
-cms_1 1 S 2 1 2 1 0
-cms_2 1 S 2 2 3 1 0
-cms_3 1 S 2 3 4 1 0
+webshops(3) 2 M 1 2 5 0 3
+websho_1(1) 2 M 2 1 6 5 1
-websh_1_1 2 S 3 1 8 6 0
-websh_2 2 S 2 2 7 5 0
HTML:
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Control-Panel: Customize multilevel categories and subcategories!</title>
<style type="text/css">
table {width: 400px;}
</style>
<script language="javascript">
function toggle(obj)
{
if (obj.nextSibling)
{
obj.firstChild.src = (obj.nextSibling.style.display == 'none') ? 'images/collapse.gif' : 'images/expand.gif';
obj.firstChild.alt = (obj.nextSibling.style.display == 'none') ? 'Minimieren' : 'Maximieren';
obj.nextSibling.style.display = (obj.nextSibling.style.display == 'none') ? 'block' : 'none';
}
}
</script>
</head>
<body>
<?php
include("./connect.php");
function drawMenu($id=0, $space="", $level=1)
{
$query = "SELECT * FROM menu WHERE parent=$id ORDER BY ID ASC";
$result = mysql_query($query);
if($id <1)
{
$menu = ("<table class='controlpanel' border='1'>");
$menu .= ("<tr><td class='titel'><a href='pfad_1.php?action=Kategorien'>Kategorien</a></td>");
$menu .= ("<td class='titel'>mgr</td>");
$menu .= ("<td class='titel'>haupt</td>");
$menu .= ("<td class='titel'>hier</td>");
$menu .= ("<td class='titel'>lev</td>");
$menu .= ("<td class='titel'>id</td>");
$menu .= ("<td class='titel'>pid</td>");
$menu .= ("<td class='titel'>child</td></tr>");
}
while($row = @mysql_fetch_array($result))
{
/*
Liste in Kammern hinter allen Kategorien die bereinigte Anzahl der Kinder auf,
die Unterkategorien haben oder die ParentID null besitzen und freigegeben sind.
*/
if($row['children']>0 or $row['parent']<=0)
{
$menu .= ("<tr><td class='rubrik' width='220px'>");
$menu .= ($space." <img id='1' src='$row[icon_name]' onClick=\"toggle($row[ID])\" border='0' ");
$menu .= ("hspace='1' vspace='0' align='middle'>");
$menu .= ("<a href='pfad_1.php'> $row[name] ($row[children])</a></td>");
}
elseif($row['haupt']='S')
{
$menu .= ("<tr id=$row[ID]><td class='rubrik' width='220px'>");
//Name und Pfad des Icons
$menu .= ($space." <img id='2' src='$row[icon_name]' border='0' ");
$menu .= ("hspace='1' vspace='0' align='middle'> ");
$menu .= ("$row[name]</td>"); //Name der (Unter-)Kategorie
}
else
{}
$menu .= ("<td class='parameter'>$row[mgr]</td>"); //Menügruppe
$menu .= ("<td class='parameter'>$row[haupt]</td>"); //Haupt- oder Unterkategorie
$menu .= ("<td class='parameter'>$row[hier]</td>"); //Hierarchiestufe
$menu .= ("<td class='parameter'>".$level++."</td>"); //Level
$menu .= ("<td class='parameter'>$row[ID]</td>"); //Kategorien_ID
$menu .= ("<td class='parameter'>$row[parent]</td>"); //Parentid
$menu .= ("<td class='parameter'>$row[children]</td>"); //Anzahl der Kinder der (Unter-)Kategorie
$menu .= drawMenu($row['ID'], ($space)." ");
}
return $menu;
}
echo drawMenu();
$menu .= ("</table>");
?>
</body>
</html>