Autor Thema: PHP SQL Sortieren  (Gelesen 3257 mal)

Damian

  • Beiträge: 100
    • Profil anzeigen
    • http://www.cosysda.de
Gespeichert
« 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
Habe mein eigenen Code syntax ;)
Und rechtschreibfehlern dürft ihr behalten.
if (user =="user"){Rechtschreibfehler_behalten();}elseif (user >= "moderator"){Rechtschreibfehlern_korrigieren();}

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 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);
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

 

Einloggen