tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
260
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Arndtinho Arndtinho ist offline Mitglied Platin
    Registriert seit
    Oct 2003
    Beiträge
    564
    Hallo,

    ich habe es nun endlich geschafft SqlBäume mit Nested Sets zu erstellen. Doch jetzt scheitert es an der Darstellung mehrer Rootpostings.
    Hier ist die DB-Struktur:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    +---------+---------+---------+------+-----+
    | node_id | root_id | payload | lft  | rgt |
    +---------+---------+---------+------+-----+
    |       1 |   1     |    A    |  1   |   6 |
    |       2 |   1     |    B    |  2   |   5 |
    |       3 |   1     |    C    |  3   |   4 |
    |       4 |   2     |    D    |  1   |   4 |
    |       5 |   2     |    E    |  2   |   3 |
    +---------+---------+---------+------+-----+
    Die Funktion, welche die Threads darstellen soll, sieht so aus:
    PHP-Code:
    $roots selRoots();

       foreach( 
    $roots as $root_id ) {

          
    $sql  "SELECT node1.payload, COUNT(*) AS level, node1.node_id AS id ";
          
    $sql .= "FROM node AS node1, node AS node2 ";
          
    $sql .= "WHERE node1.root_id = ".$root_id." AND node2.root_id = ".$root_id." AND node1.lft BETWEEN node2.lft AND node2.rgt ";
          
    $sql .= "GROUP BY node1.lft";

          
    $res mysql_query$sql );
          
    $i 0;

          
    // Anzeige der Threads
          ///////////////////////
          
    while( $row mysql_fetch_array$res ) ) {
             if( 
    $row'level' ] > $i ) {
                echo 
    "<ul>";
             }

             echo 
    "<li><a href=\"test2.php?id=".$row'id' ]."\">".$row'payload' ]."</a></li>";

             if( 
    $row'level' ] < $i ) {
                echo 
    "</ul>";
             }

             
    $i $row'level' ];
          }
       } 
    Als Ergebnis erhalte ich dies:
    Code :
    1
    2
    3
    4
    5
    6
    
    A
    |- B
      |- C
      |- D
         |-E
           |-F
    Aber sollte nicht eigentlich dies dabei heraus kommen?
    Code :
    1
    2
    3
    4
    5
    6
    
    A
    |- B
      |- C
      |- D
    E
    |-F
    Wo liegt mein Fehler und wie kann ich den bereinigen?

    Gruß,
    Arndtinho
     

  2. #2
    Registriert seit
    Jan 2004
    Beiträge
    1.072
    Die Anzahl der <ul> bzw. </ul> hängt von dem Unterschied der Levels von zwei aufeinanderfolgenden Datensätzen ab.
    Sprich wenn ein Datensatz in Level 3 ist, und der nächste in Level 1, brauchst du 2 mal </ul>. Es kommt also auf die Differenz
    PHP-Code:
    $row'level' ] - $i 
    an.
     

  3. #3
    Arndtinho Arndtinho ist offline Mitglied Platin
    Registriert seit
    Oct 2003
    Beiträge
    564
    Moin,

    ich stelle gerade fest, das mein offenes <ul> gar nicht geschlossen wird.

    Gruß,
    Arndtinho
     

  4. #4
    Avatar von TomDelonge
    TomDelonge TomDelonge ist offline Mitglied
    Registriert seit
    Nov 2004
    Ort
    Bielefeld
    Beiträge
    12
    Hallöchen!

    hm ? aber du hattest dein <ul> doch geschlossen

    hier.....
    PHP-Code:
    if( $row'level' ] < $i ) { 
                echo 
    "</ul>"
    Liebe Grüße,

    Benni
     

  5. #5
    Arndtinho Arndtinho ist offline Mitglied Platin
    Registriert seit
    Oct 2003
    Beiträge
    564
    Aber das wird nicht ausgeführt. Die If-Anweisung wird gar nicht aufgerufen.

    Gruß,
    Arndtinho
     

  6. #6
    Avatar von TomDelonge
    TomDelonge TomDelonge ist offline Mitglied
    Registriert seit
    Nov 2004
    Ort
    Bielefeld
    Beiträge
    12
    Hi nochmal !

    Es kann ja auch nur ein Fall auftreten so wie ich das sehe!
    Entweder
    PHP-Code:
    if( $row'level' ] > $i ){
    echo 
    "<ul>";
    oder
    if( $row'level' ] < $i ){
    echo 
    "</ul>"
    und es trifft nur der erste Fall zu also das mit dem > $i und somit wird <ul> nicht geschlossen.

    Liebe Grüße Benni
    Geändert von TomDelonge (18.11.04 um 14:15 Uhr)
     
    ALL THE SMALL THINGS

  7. #7
    Arndtinho Arndtinho ist offline Mitglied Platin
    Registriert seit
    Oct 2003
    Beiträge
    564
    das nur der erste Fall eintritt, habe ich ja festgestellt. Ich versuche gearde ne Lösung zu finden, das am Ende des Baumes der zweite Fall eintritt und somit die geöffneten <ul> geschlossen werden, damit die Threads ordentlich dargestellt werden.
     

Ähnliche Themen

  1. Darstellungsproblem IE
    Von scandic im Forum CSS
    Antworten: 18
    Letzter Beitrag: 04.07.08, 16:59
  2. Darstellungsproblem
    Von McNiko im Forum HTML & XHTML
    Antworten: 9
    Letzter Beitrag: 01.07.08, 13:16
  3. Darstellungsproblem mit IE 7
    Von Wunder_von_Bern im Forum CSS
    Antworten: 6
    Letzter Beitrag: 28.06.08, 16:15
  4. Darstellungsproblem IE
    Von PasiXXL im Forum CSS
    Antworten: 2
    Letzter Beitrag: 20.07.07, 12:39
  5. FF vs. IE: Darstellungsproblem
    Von tadpole im Forum HTML & XHTML
    Antworten: 4
    Letzter Beitrag: 03.10.05, 17:38