|
|
Source code |
1 2 3 4 5 6 |
<?php while($aus = mysql_fetch_array($sql)){
if ($aus['hauptkat'] == "0") { ?>
<li><a href="?go=kat&kat=<?php echo $aus['id'] ?>"> -> <?php echo $aus['name'] ?> </a></li>
<?php if ($aus['hauptkat'] > "0") { ?>
<li><a href="?go=kat&kat=<?php echo $aus['id'] ?>"> -> <?php echo $aus['name'] ?> </a></li>
<?php } } } // Ende der Schleife ?>
|
|
|
Source code |
1 2 3 4 5 6 7 8 |
<?php while($aus = mysql_fetch_array($sql)){ ?>
<li><a href="?go=kat&kat=<?php echo $aus['id'] ?>"> -> <?php echo $aus['name'] ?> </a></li>
<?php
$auswahl2 = "SELECT * FROM *** WHERE haupt*** = ".$****['id']." ORDER BY position ASC";
$sql2 = mysql_query($auswahl2);
while($aus2 = mysql_fetch_array($sql2)) { ?>
<li><a href="?go=kat&kat=<?php echo $aus2['id'] ?>"> ----> <?php echo $aus2['name'] ?> </a></li>
<?php } } // Ende der Schleife ?>
|

|
|
SQL Code |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
SELECT parent.ID AS p_ID , parent.Hauptkategorie AS p_Hauptkategorie , parent.Position AS p_Position , parent.Name AS p_Name , child.ID AS c_ID , child.Hauptkategorie AS c_Hauptkategorie , child.Position AS c_Position , child.Name AS c_Name FROM Kategorien AS parent LEFT JOIN Kategorien AS child ON child.Hauptkategorie=parent.ID WHERE ISNULL(parent.Hauptkategorie) ORDER BY parent.Position, child.Position; |
Die Lösung ist ganz einfach du brauchst weder eine noch eine 2 while scheife. Sowie auch ein Sql befehl der dich hier nicht viel weiter bringt.
Das was du benötigst dafür ist eine Rekusive Funktion. Aber vorsicht dabei das du keine Endlos Schleife damit erzeugst.
Mfg Splasch
@splasch: Datenbankabfragen sind teuer! Deshalb ist eine Lösung, die mit O(n) = 1 (z.B. mein Vorschlag oder eben Nested Sets) auskommt einer mit O(n) = n (geschachtelte Schleifen oder Rekursion) deutlich vorzuziehen.
Anmerkung für Informatiker: O(n) soll sich hier nur auf das Laufzeitverhalten bezüglich der Datenbankabfragen beziehen, nicht auf den restlichen Code. Nur am Rande, bevor ich mich hier in die Nesseln setze.![]()