Einen wunderschönen guten Abend, liebe Community,
ich tüftle seit Stunden an einem, denke ich, ziemlich einfachen Problem, aber ich komme einfach nicht auf die Lösung.![Frown](https://www.php-resource.de/forum/core/images/smilies/frown.gif)
Ich habe eine Tabelle mit beliebig vielen Kategorien und Unterkategorien, wobei die Verschachtelung auch beliebig tief sein soll.
Es gibt das Feld `id`, das Feld `oid` und das Feld `bezeichnung`.
Feld `oid` ist = `id`, wenn der Datensatz eine Unterkategorie von `id` ist. Das sollte ja eigentlich noch alles standard sein und mir beliebige viele Kategorien ermöglichen können.
Nun muss ich aber diese gesamte Tabelle, sozusagen rekursiv anzeigen lassen. Es soll eine Baumstruktur entstehen, bei der die Kategorien jeweils nach `bezeichnung` sortiert sind.
Folgendes habe ich mir schon zusammengeschustert.
Ich habe hier auch mal alle sonstigen Infos mit reingeschrieben, die mir zur Verfügung stehen.
Ich danke für jeden Hinweis und oder Tipp!
ich tüftle seit Stunden an einem, denke ich, ziemlich einfachen Problem, aber ich komme einfach nicht auf die Lösung.
![Frown](https://www.php-resource.de/forum/core/images/smilies/frown.gif)
Ich habe eine Tabelle mit beliebig vielen Kategorien und Unterkategorien, wobei die Verschachtelung auch beliebig tief sein soll.
Es gibt das Feld `id`, das Feld `oid` und das Feld `bezeichnung`.
Feld `oid` ist = `id`, wenn der Datensatz eine Unterkategorie von `id` ist. Das sollte ja eigentlich noch alles standard sein und mir beliebige viele Kategorien ermöglichen können.
Nun muss ich aber diese gesamte Tabelle, sozusagen rekursiv anzeigen lassen. Es soll eine Baumstruktur entstehen, bei der die Kategorien jeweils nach `bezeichnung` sortiert sind.
Folgendes habe ich mir schon zusammengeschustert.
Ich habe hier auch mal alle sonstigen Infos mit reingeschrieben, die mir zur Verfügung stehen.
PHP Code:
/*
DROP TABLE IF EXISTS `table_kats`;
CREATE TABLE `table_kats` (
`id` int(11) NOT NULL auto_increment,
`oid` int(11) NOT NULL default '0',
`bezeichnung` varchar(100) NOT NULL default '',
PRIMARY KEY (`id`),
KEY `oid` (`oid`)
)
INSERT INTO `table_kats` (`id`, `oid`, `bezeichnung`) VALUES
(1, 0, 'Baumaschinen'),
(2, 1, 'Kräne'),
(3, 1, 'Bagger'),
(4, 1, 'Laster'),
(5, 1, 'Bulldozer'),
(6, 0, 'Landwirtschaftsmaschinen'),
(7, 5, 'Test-Unterkategorie')
Gewünschte Ausgabe:
################################
Baumaschinen
+-- Bagger
+-- Bulldozer
+-- Test-Unterkategorie
+-- Kräne
+-- Laster
Landwirtschaftsmaschinen
################################
*/
$query = "SELECT a.id AS okat_id,
a.oid AS okat_oid,
a.bezeichnung AS okat_bezeichnung,
b.id AS kat_id,
b.oid AS kat_oid,
b.bezeichnung AS kat_bezeichnung
FROM `table_kats` AS b
INNER JOIN `table_kats` AS a
ON b.oid = a.id
ORDER BY a.bezeichnung";
$temp = '';
$result = mysql_query($query);
while($this = mysql_fetch_array($result, MYSQL_ASSOC))
{
if ($this['okat_bezeichnung'] != $temp)
{
echo $this['okat_bezeichnung'].'<br />';
$temp = $this['okat_bezeichnung'];
}
echo ' +-- '.$this['kat_bezeichnung'],'<br />';
}
/*
Tatsächliche Ausgabe:
################################
Baumaschinen
+-- Kräne
+-- Bagger
+-- Laster
+-- Bulldozer
Bulldozer
+-- Test-Unterkategorie
################################
*/
Comment