Artikel von Subkategorien abfragen

Hallo,

wollte fragen ob du mir vielleicht helfen kannst, fast das selbe eigentlich nur umgekehrt umzusetzen.
Also ich bin bei einem Produkt und will eine BreadCrumb Navigation der Kategorien erzeugen, verstehst du was ich meine?
Danke

LG Alex
 
Das ist auch nicht so schwer, dann musst du einfach nach der parent_id suchen, also so:

Du musst gucken, od die ID zu der du das Menü erstellen willst eine oberkategorie hat,
wenn ja, dann nimmst du die Kategorie und guckst wieder ob sie eine Oberkategorie hat.

Hier musst du also nach parent_id suchen.

zum Beispiel so: (Pseudocode)
PHP:
function getNavigation($catid) {
 $sql = "SELECT name,parent_id from tabelle WHERE id = $catid";
 $result = mysql_query($sql);

 if (mysql_num_rows($result) > 0)
 {
  $category = mysql_fetch_object($result);
  $catarray = getNavigation($category->parent_id); 
  $catarray[] = $category->name;
 } else 
 {
  //Nichts mehr da
 }
 return $catarray;
}

Dann hast du das in einem Array, der wird nicht funktionieren, hoffe aber, er hilft dir.

€dit: Hat das andere denn geklappt?
 
Zuletzt bearbeitet:
Hallo,

danke erstmal für deine rasche Antwort.
Ich hab das jetzt ein wenig umgebaut, aber leider zeigt er mir im Array dann nur die oberste Kategorie an.
Hier mein Code.
PHP:
function getBreadCrumb($id) {
	
	global $config, $db;
	$sql = 'SELECT * FROM categories WHERE id = "'.(int)$id.'"';
	
	if ($db->query($sql) > 0) {
		$category = $db->get_row($sql);
		$catarray = getBreadCrumb($category->submenu); 
		$catarray[] = '<a href="'.$config->page_url.'browse/'.$category->id.'/'.$category->name.'.html">'.$category->name.'</a>';
	} else {
		//Nichts mehr da
	}
	
	return $catarray;
	
}
Kannst du mir bitte nochmal helfen?

Danke

LG Alex
 
Wie sieht es so aus?
PHP:
function getBreadCrumb($id) {
    
    global $config, $db;
    $sql = 'SELECT * FROM categories WHERE id = "'.(int)$id.'"';
    
    if ($db->query($sql) > 0) {
        $category = $db->get_row($sql);
        $catarray = getBreadCrumb($category->submenu); 
        $catarray[] = '<a href="'.$config->page_url.'browse/'.$category->id.'/'.$category->name.'.html">'.$category->name.'</a>';
    } else {
        //Nichts mehr da
        $catarray = array();
    }
    
    return $catarray;
    
}
 
Leider das selbe Ergebnis.

//edit: Sry hatte nen Fehler, nun funktioniert es.
Danke :thumbsup:
 
Zuletzt bearbeitet:
Ist $id, die ID der Kategorie, in der der Artikel gehört?
bzw, was ist $id?
bei dem Code ist es so, dass $id die ID der Kategorie sein muss, in der der Artikel liegt ;)
 
Zuletzt bearbeitet:
Habe mich nicht genau in den Thread hier eingelesen aber empfehle euch auf jeden Fall sich über Nested Set zu informieren. So bekommt man mit einer einzigen SQL-Anweisung alle Übergeordneten Knoten (ancestor-or-self) des Baumes und benötige keine rekursiven Funktionen mit jeweils eigener Abfrage.

Sehr performativ und durch einfache SQL-Anweisung verwaltbar.

Hier einige Links:
http://www.klempert.de/nested_sets/
http://www.traum-projekt.com/forum/73-workshops-und-tutorials/58359-workshop-nested-sets.html
 
Zurück