suntrop
Erfahrenes Mitglied
Hallo
Ich probiere schon seit fast 7 Stunden ein Formular-Select aufzubauen. Die Daten kommen aus einer Datenbank:
Also jeder Eintrag hat eine Zuordnung zu einer Eltern-ID (Feld "parent"). Daraus will ich jetzt für ein Formular ein <select> aufbauen. Resultat soll so aussehen:
Also eine Verschachtelung über mehrere Ebenen hinweg, wobei jede Kind-Ebene etwas eingerückt werden soll (damit die Hierarchie sichtbar ist).
Leider bekomme ich es einfach nicht hin. In meiner Funktion – in der ich die gesamte Datenbank-Tabelle als einfaches Array habe – versuche ich es gerade so:
Aber das passt mal total nicht. Ich weiß auch gar nicht, wie ich die Reihenfolge einhalten soll. Wenn ich in einer ersten foreach-Schleife ein neues Array aufbaue, dann geht mir die Zuordnung verloren, also die Rheinfolge stimmt nicht mehr. Aber ich weiß nicht, wie ich jetzt vorgehen muss.
Kann mir jemand weiterhelfen? Bin ziemlich ratlos.
Danke und Grüße
- suntrop -
Ich probiere schon seit fast 7 Stunden ein Formular-Select aufzubauen. Die Daten kommen aus einer Datenbank:
Code:
id parent name
0 0 Eins
1 0 Zwei
2 1 Zwei-Eins
3 2 Zwei-Eins-Eins
4 2 Zwei-Eins-Zwei
5 0 Drei
6 5 Drei-Eins
7 5 Drei-Zwei
8 7 Drei-Zwei-Eins
Also jeder Eintrag hat eine Zuordnung zu einer Eltern-ID (Feld "parent"). Daraus will ich jetzt für ein Formular ein <select> aufbauen. Resultat soll so aussehen:
HTML:
<select>
<option vlaue="0">Eins</option>
<option vlaue="1">Zwei</option>
<option vlaue="2">|-- Zwei-Eins</option>
<option vlaue="3">|-- --Zwei-Eins-Eins</option>
<option vlaue="4">|-- --Zwei-Eins-Zwei</option>
<option vlaue="5">Drei</option>
<option vlaue="6">|-- Drei-Eins</option>
<option vlaue="7">|-- Drei-Zwei</option>
<option vlaue="8">|-- --Drei-Zwei-Eins</option>
Leider bekomme ich es einfach nicht hin. In meiner Funktion – in der ich die gesamte Datenbank-Tabelle als einfaches Array habe – versuche ich es gerade so:
PHP:
foreach ($arr as $row) {
//$cat[$row['id']][$row['name']] = $row['name'];
if ($row['parent'] == 0) {
$cat[$row['id']][] = $row['name'];
} else {
$cat[$row['parent']][$row['id']] = '--' . $row['name'];
}
}
Aber das passt mal total nicht. Ich weiß auch gar nicht, wie ich die Reihenfolge einhalten soll. Wenn ich in einer ersten foreach-Schleife ein neues Array aufbaue, dann geht mir die Zuordnung verloren, also die Rheinfolge stimmt nicht mehr. Aber ich weiß nicht, wie ich jetzt vorgehen muss.
Kann mir jemand weiterhelfen? Bin ziemlich ratlos.
Danke und Grüße
- suntrop -