Ankündigung

Einklappen
Keine Ankündigung bisher.

Tree zu Liste

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Tree zu Liste

    Hallo, ich habe ein Problem.
    Ich habe in einer Datenbank einen kategorie-Baum.
    Ich möchte in einer zusätzlichen Tabelle festhalten welche Kategorie welche parents hat, dies aber durchgehend, sprich: habe ich eine Kategorie auf Level 5, dann hat diese 4 parents(parent auf level 4, level 3, level 2 und level 1)

    Der Sinn und Zweck ist dafür: Wenn ich wissen möchte welche Kinder eine Kategorie hat, möchte ich dies mit einem Select machen ohne die Hierarchie durchgehen zu müssen.

    Ich hole also zuerst eine Liste aller kategorien, mit einem left join auf die gleiche Tabelle um den parent zu holen.
    Als ergebnis habe ich eine Liste:
    KategorieId, KategorieLevel, ParentId, ParentLevel

    Daraus mache ich zuerst einen Tree um eine genaue übersicht zu bekommen wer zu wem gehört.
    Code:
    array(
    	1 => array (
    		'id'		=> 1,
    		'level		=> 1,
    		'children'	=> array(
    			11 => array(
    				'id'		=> 11,
    				'level'		=> 2,
    				'children'	=> array()
    			),
    			12 => array(
    				'id'		=> 12,
    				'level'		=> 2,
    				'children'	=> array(
    					121 => array(
    						'id'		=> 121,
    						'level'		=> 3,
    						'children'	=> array()
    					)
    				)
    			)
    		)	
    	),
    	2 => array (
    		'id'		=> 2,
    		'level		=> 1,
    		'children'	=> array(
    			21 => array(
    				'id'		=> 21,
    				'level'		=> 2,
    				'children'	=> array()
    			)
    		)	
    	)
    )
    Und mein Problem ist: Wie könnte ich aus dem dem Baum wieder eine Liste machen, in der Form:
    Code:
    array(
    	array(
    		'id'		=> 121,
    		'level'		=> 3,
    		'parentId'	=> 12,
    		'parentLevel'	=> 2
    	),
    	array(
    		'id'		=> 121,
    		'level'		=> 3,
    		'parentId'	=> 1,
    		'parentLevel'	=> 1
    	),
    	array(
    		'id'		=> 12,
    		'level'		=> 2,
    		'parentId'	=> 1,
    		'parentLevel'	=> 1
    	),
    	array(
    		'id'		=> 11,
    		'level'		=> 2,
    		'parentId'	=> 1,
    		'parentLevel'	=> 1
    	),
    	array(
    		'id'		=> 21,
    		'level'		=> 2,
    		'parentId'	=> 2,
    		'parentLevel'	=> 1
    	)
    )

  • #2

    Kommentar


    • #3
      http://de.wikipedia.org/wiki/Adjazenzliste
      [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

      Kommentar

      Lädt...
      X