phpbar.de logo

Mailinglisten-Archive

[php] Brotkrumen-Navigation

[php] Brotkrumen-Navigation

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Fre Nov 12 12:41:30 CET 2004


Hi Thomas,

Thomas Gigold schrieb:
> Ich habe eine kleines Problem: Ich muss eine rückwärtige Navigation
> aufbauen - eine Brotkrumen-Navigation.
> Das ganze soll so aussehen:
> Startseite -> Unterseite A -> Unterseite B -> Produkt
>
> Ich habe immer die letzte ID (also hier Produkt) und eine DB-Tabelle mit
> ID und ParentID (allerdings kein Level). Ich muss mich also von Produkt
> über die ParentID auf die Seite B, von dort auf Seite A und von dort zur
> Startseite hangeln. Da es zig Unterebenen geben kann, muss ich also
> immer prüfen ob die ParentID als ID vorkommt.
>
> Das _Be_schreiben meines Problems geht gut, allerdings stehe ich jetzt
> total auf dem Schlauch, wie ich das Ganze schlau in PHP bekomme?

Ungetestet und etwas theoretisch folgendes Beispiel zur Veranschaulichung:

// ID der Produktgruppe, wo das Produkt eingehängt ist
$produktProduktgruppe = zahlX;

// Variable, die die IDs Deiner Brotkrumen-Navigation aufnehmen wird
$produktgruppenPfad   = array();

// Rekursive Funktion
function holeUebergeordneteEbene($produktgruppenID, &$produktgruppenPfad) {

  /* Vorhandene Produktgruppen-ID vorne an den Array anfügen,
   * weil Du die IDs von hinten nach vorne ermittelst. */
  array_unshift($produktgruppenPfad, $produktgruppenID);

  // ID der uebergeordneten Produktgruppe holen
  $sqlAnfrage = 'select ParentID from produktgruppen where ID =
'.$produktgruppenID;
  ...
  $parentID   = $sqlErgebnis[0][0];

  /* Wenn uebergeordnete Ebene vorhanden
   * (Annahme: Wenn keine vorhanden, ParentID in DB = 0) */
  if ($parentID != 0) {
    holeUebergeordneteEbene($parentID, &$produktgruppenPfad);
  }
}

// Aufruf der Funktion mit den Startparametern
holeUebergeordneteEbene(produktProduktgruppe, &$produktgruppenPfad);

// Ausgabe der Brotkrumen-Navigation in Form der Produktgruppen-IDs
print_r($produktgruppenPfad);


Also so in etwas müßte es aussehen. Da ich es gerade nicht testen kann,
könnte sich hier und da ein kleiner logischer Fehler eingeschlichen haben,
aber zur Veranschaulichung der Idee und als Anstoß sollte es reichen. :-)


> Vielleicht kann mir ja jemand helfen und legt mir einen kleinen
> Code-Schnipsel auf meinen Geburtstagskuchen? Ihr bekommt auch was ab
> (vom Kuchen) ;-)

Ok, meine E-Mail-Adresse kennst Du ja. :-D


Viele Grüße

Lutz


php::bar PHP Wiki   -   Listenarchive