Lowlevel

OffZone => Offtopic => Thema gestartet von: Damian am 13. July 2009, 15:06

Titel: PHP SQL Sortieren
Beitrag von: Damian am 13. July 2009, 15:06
Guten Mittag,
ich sitze gerade vor ein riesiges Problem. Es geht um folgendes, ich muss ein dropdown menu schreiben für den XTC. Also den XT:Commerce.
Die dropdown soll dynamisch aus den Kategorien erstellt werden.
Nun mein Problem, in den Kategorien gibt es denn wieder unterkategorien. Das habe ich noch hinbekommen, aber bei einer 3ter ebene an unterkategorien kriege ich probleme.

Die DB ist folgende maßen aufgebaut:
categories_id | parent_id

mein jetzige script, der nur eine unterebene hinbekommt sieht folgende maßen aus:

$result = "SELECT * FROM categories";
$result = xtDBquery($result);
while($row = xtc_db_fetch_array($result))
{
if(!$row['parent_id'])
{
echo $row['categories_id']."<br>";
}
$result2 = "SELECT * FROM categories WHERE parent_id='".$row['categories_id']."'";
echo "$result2<br>";
$result2 = xtDBquery($result2);
while($row2 = xtc_db_fetch_array($result2))
{
echo " - " . $row2['categories_id']."<br>";
}

}

Ich hoffe einer kann mich helfen.

LG Damian
Titel: Re: PHP SQL Sortieren
Beitrag von: kevin am 13. July 2009, 22:00
Rekursion direkt in SQL ist tricky, am besten gar nicht erst versuchen. ;)

Solange deine Datenbank nicht besonders groß ist, solltest du locker damit hinkommen, erstmal nur für die erste Ebene eine SQL-Abfrage zu machen und dann in PHP durchgehen, für jeden Datensatz in der ersten Ebene eine neue SQL-Abfrage machen, usw. Dafür brauchst du dann natürlich in PHP eine rekursive Funktion. Also ungefähr so:

function do_it($parent)
{
   $res = mysql_query(...);
  while ($res = ...) {
    do_it($res["id"]);
    ...
  }
}

do_it(0);