LTB
Hey ich habe eine Funktion geschrieben mit deren Hilfe ich eine Sitemap einer Website ausgeben lassen kann.
Ansich funktioniert sie einwandfrei, allerdings gibt es doch einen kleinen, aber gravierenden Fehler, der eigentlich nur auffällt, wenn man den Links einen Hover-Befehl gibt, damit sich die Farb der Links ändert.
Ich sage mal ich habe folgende Menüpunkte, in Klammern stehen die Unterpunkte des jeweiligen Hauptpunktes:
Startseite, Team (Inhaber, Angestellte), Leistungen (Kochen, Putzen) etc.
Der Link der Startseite soll nicht angezeigt werden (siehe Code), deswegen stehen dann hinterher Team (Inhaber, Angstellte) und Leistungen (Kochen, Putzen) jeweils in einem DIV, die dann per Float nebeneinander angezeigt werden.
Die Darstellung ist auch super, die Links funktionieren alle wie ich möchte.
Wenn ich bei dem Team-DIV über die Links fahre werden sie auch per Hover anders eingefärbt, ALLERDINGS:
Wenn ich in dem zweiten DIV (Leistungen) ober- und unterhalb des Links "Leistungen" mit der Maus herfahre, also somit noch keinen Link des Leistungen-DIVs berührt habe, wird der letzte Link aus dem vorherigen TEAM-DIV grün markiert (hover), als ob er mehrfach wiederholt sich in das nächste DIV dazwischen gequetscht hätte. Und wenn ich darauf klicke wird der Link auch ausgeführt.
Das heißt dass ein DIV den letzten Link seines Vorgängers irgendwie erstellt, ohne dass man diesen sehen, aber dafür anklicken kann.
Die Breite der DIVs hatte ich auch probeweise sehr hoch eingestellt, damit die DIVs nicht nebeneinander liegen, allerdings tritt dieser Effekt weiterhin auf. Also muss ansich irgendetwas mit meinen IF-Anweisungen nicht stimmen, dass die Links, wo die ID mit der Parent-ID nicht übereinstimmen, in dem nächsten Schleifengang der foreach-Schleife trotzdem verarbeitet werden. oO
Hatte wer schonmal so ein ähnliches Problem?
Ansich funktioniert sie einwandfrei, allerdings gibt es doch einen kleinen, aber gravierenden Fehler, der eigentlich nur auffällt, wenn man den Links einen Hover-Befehl gibt, damit sich die Farb der Links ändert.
PHP:
$sql = "SELECT id, pid, text FROM menu";
$query = mysql_query($sql);
$i=0;
while($re = mysql_fetch_array($query))
{
// Hauptmenü - IDs
if($re[1] == 0)
{
$mainmenu[$i] = $re[0];
}
$ids[$i] = $re[0];
// Unterkategorien - IDs mit zugehörigen PIDs
if($re[1] >0)
{
$submenu[$re[0]] = $re[1]; // $submenu[id] = pid
}
$linktext[$re[0]] = $re[2];
$i++;
}
// Links genererieren
foreach($ids as $id)
{
if($id <= count($mainmenu))
{
$site = '?site='.$id;
$atag[$id] = '<a href="'.$PHP_SELF.$site.'">';
}
else
{
$site = '?site='.$submenu[$id];
$sub = '&sub='.$id;
$atag[$id] = '<a href="'.$PHP_SELF.$site.$sub.'">';
}
}
// Struktur anlegen
foreach($mainmenu as $mainval) // Hauptmenü as ID
{
if($mainval > 1) // Startseite wird nicht angezeigt, da ID = 0
{
echo '<div class="sitemapblock">';
echo '<b><h5>'.$atag[$mainval].$linktext[$mainval].'</a></h5></b><br />';
foreach($submenu as $subkey => $subval) // Untermenü as ID => PID
{
if($subval == $mainval) // PID == ID
{
echo $atag[$subkey].$linktext[$subkey].'<br />';
}
}
echo '</div>';
}
}
Ich sage mal ich habe folgende Menüpunkte, in Klammern stehen die Unterpunkte des jeweiligen Hauptpunktes:
Startseite, Team (Inhaber, Angestellte), Leistungen (Kochen, Putzen) etc.
Der Link der Startseite soll nicht angezeigt werden (siehe Code), deswegen stehen dann hinterher Team (Inhaber, Angstellte) und Leistungen (Kochen, Putzen) jeweils in einem DIV, die dann per Float nebeneinander angezeigt werden.
Die Darstellung ist auch super, die Links funktionieren alle wie ich möchte.
Wenn ich bei dem Team-DIV über die Links fahre werden sie auch per Hover anders eingefärbt, ALLERDINGS:
Wenn ich in dem zweiten DIV (Leistungen) ober- und unterhalb des Links "Leistungen" mit der Maus herfahre, also somit noch keinen Link des Leistungen-DIVs berührt habe, wird der letzte Link aus dem vorherigen TEAM-DIV grün markiert (hover), als ob er mehrfach wiederholt sich in das nächste DIV dazwischen gequetscht hätte. Und wenn ich darauf klicke wird der Link auch ausgeführt.
Das heißt dass ein DIV den letzten Link seines Vorgängers irgendwie erstellt, ohne dass man diesen sehen, aber dafür anklicken kann.
Die Breite der DIVs hatte ich auch probeweise sehr hoch eingestellt, damit die DIVs nicht nebeneinander liegen, allerdings tritt dieser Effekt weiterhin auf. Also muss ansich irgendetwas mit meinen IF-Anweisungen nicht stimmen, dass die Links, wo die ID mit der Parent-ID nicht übereinstimmen, in dem nächsten Schleifengang der foreach-Schleife trotzdem verarbeitet werden. oO
Hatte wer schonmal so ein ähnliches Problem?