php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
mit if selektieren für tabellen spalte?


 
marc75
20-08-2003, 13:46 
 
Hallo Leute,

ich hab mir hier ein kleines Script gebastelt, wo mir noch was fehlt.

Folgendes: ich möchte gerne die Namen (Kategoerien) in zwei spalten anzeigen, alle Kategorien die im DB fehlt root eine 1 stehen haben sollen in der ersten spalte angezeigt werden (zweite Spalte soll dabei leer bleiben) und alle die 0 in der DB spalte root haben sollen in der zweiten Splate angezeigt werden.


if($row->root != "1")
{
$name = "$row->name";
}
else
{
$name2 = "$row->name";
}

echo "<tr>\n";
echo "<td " . $background . " valign=\"top\">" . $name . "</td>\n";
echo "<td " . $background . " valign=\"top\">" . $name2 . "</td>\n";




Es soll später mal so ca. aussehen:

Katergorie | Unterkategorie | etc.
-------------------------------------------
Kat A | leer |
leer | Unterkat A |
leer | Unterkat B |
Kat B | leer |
leer | Unterkat C |

usw.

 
Titus
21-08-2003, 12:43 
 
- Ich vermute, dass du die Unterkategorien mit einem Feld "parent" o.ä. den Oberkategorien zuordnest;.
- Gibt´s vielleicht noch ein Feld 'pos'?

auf jeden Fall solltest du zwei Queries absetzen:


// 1) alle mit root=0 (also die für die zweite Spalte) in ein Array lesen:
$sqlres = mysql_query("select * from tabelle where root=0");
while ($row = mysql_fetch_assoc($sqlres))
$noroot[$row['parent_id']] [] = $row

// 2) für alle mit root>0
$sqlres = mysql_query("select * from tabelle where root>0");
while ($row = mysql_fetch_assoc($sqlres))
{
// a) den eigentlichen Datensatz ausgeben
echo "<tr><td>$row[name]</td><td>leer</td></tr>";
// b) alle Datensätze, die diesen Datensatz als parent haben
foreach($noroot[$row['id'] as $subrow)
echo "<tr><td>leer</td><td>sub$row[name]</td></tr>";
}

Das belastet die DB weniger als in jedem Schleifendurchlauf eine neue Query abzusetzen.

Natürlich bist du mit so einer verschachtelten Schleife nicht flexibel genug für eine dritte Ebene; aber das weißt du sicher.
Es gibt übrigens eine Methode für belieblig viele Ebenen, die mit einer Query auskommt ...


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:59 Uhr.