mit if selektieren für tabellen spalte?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mit if selektieren für tabellen spalte?

    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.

    PHP-Code:
        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.
    mfg
    marc75

    <Platz für anderes>

  • #2
    - 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:

    PHP-Code:
    // 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 ...
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar

    Lädt...
    X