Baumstruktur - Elemente verschieben

südpol

Erfahrenes Mitglied
Hi,

ich habe eine kleine Anwendung mit der ich meinen Nutzern u. a. die Möglichkeit gebe eine Struktur mit zwei Ebenen aufzubauen (n Elemente auf Ebene 1 können n Elemente auf Ebene zwei haben). Ich habe das so gelößt, dass das Input Feld auf der ersten Ebene durch seine Reihenfolge den Namen der Elemente auf der zweiten Ebene vorgibt. Also:

- Element 1: input name: meintextfeld[]
-- Element 1.1: input name meintextfeld_sub_0[]
-- Element 1.2: input name meintextfeld_sub_0[]
- Element 2: input name: meintextfeld[]
-- Element 2.1: input name meintextfeld_sub_1[]
-- Element 2.2: input name meintextfeld_sub_1[]

... nicht schön - aber hat bis jetzt gut funktioniert. Leider wollend die Benutzer nun auch noch die Möglichkeit haben die Elemente neu zu sortieren. Für die zweite Ebene kein Problem - verschiebe ich diese via JS ändert sich der Index des arrays und ich kann es in der DB ändern. Bei den Elementen erster Ebene geht das aber nciht - verschiebe ich diese via JS, dann stimmen die Namen der untergeordneten Elemente nicht mehr :-(

Kann mir jemand sagen wie man sowas auf schöne Art und Weise lösen kann? Hänge nicht an meiner ursprünglichen Lösung...

Danke
 
Code:
tree[0]
tree[0][0] = "00"
tree[0][1] = "01"
tree[1]
tree[1][0] = "10"
tree[1][1] = "10"

So kann es funktionieren. Oder du erstellst Klassen-Objekte mit Blättern etc.
 
Kann es sein, das du im Unterforum "php" falsch bist ?!

Ich hoffe, dass ich das mit php lösen kann - daher nein.

Code:
tree[0]
tree[0][0] = "00"
tree[0][1] = "01"
tree[1]
tree[1][0] = "10"
tree[1][1] = "10"

So kann es funktionieren. Oder du erstellst Klassen-Objekte mit Blättern etc.

Hmm das sieht nach einem machbaren Weg aus - da hätte ich auch mal drauf kommen können. Danke.

Was meinst du mit "Klassen-Objekte mit Blättern etc." im php Backend basiert bereits alles auf Klassen und Objekten - wie könnte ich das in html abbilden?
 
Das ganze könnte dann so aussehen:

PHP:
class Tree{
	private $nodes = array();
	// getter und setter methoden
	// move, remove, insert und der ganze spaß
}
class Node{
	private $value;				// wert des blattes
	private $childs = array(); 	// alle untergeordneten blätter
	function __construct($val){
		$this->value = $val;
	}
	// auch hier die ganzen tree-typischen methoden
}

$tree		= new Tree();
$element1 	= new Node(1);
$element2 	= new Node(2);
$element3 	= new Node(3);

$element1->addChild($element2);
$element1->addChild($element3);
$tree->addChild($element1);

Ich weiß nicht ob PHP sowas bereits bietet oder ob du das alles selber implementieren musst.
http://de.wikipedia.org/wiki/Baumstruktur

Wenn du bisschen suchst, findest du alle nötigen Klasseninterfaces, musst quasi alles nur in PHP umschreiben.

Gruß
 

Neue Beiträge

Zurück