Was heisst das,jetzt schon wieder:

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

  • #16
    Vor allem solltest du mysql_num_rows benutzen, um l.gif an die richtige Stelle setzen zu können (vor der Schleife $n=mysql_num_rows, wenn $i==$n-1 dann l.gif statt t.gif)

    Dann sollte noch mit einem statischen Array gespeichert werden, in welchem $level gerade keine Linie sondern ein blank hingehört.
    (d.h. welche Schleife gerade im letzten Durchlauf mit $i==$n-1 ist)
    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


    • #17
      Ich habe den kompletten Functionsteil gepostet. Da ist nicht mehr.
      Aber ich kann dir ja mal die Datei anhängen die zum ersten Bild forum-soll gehört. Mit der komme ich aber nicht klar. Ich blicke dort überhaut nicht durch, wie die was machen. *saufz* Wenn ich das rauskriegen könnte. *seufz ende* Dann wäre ich ein ganze Stück weiter.
      *winks*
      Gilbert
      ------------------------------------------------
      Hilfe für eine Vielzahl von Problemen!!!
      http://www.1st-rootserver.de/

      Kommentar


      • #18
        Original geschrieben von Titus
        Vor allem solltest du mysql_num_rows benutzen, um l.gif an die richtige Stelle setzen zu können (vor der Schleife $n=mysql_num_rows, wenn $i==$n-1 dann l.gif statt t.gif)

        Dann sollte noch mit einem statischen Array gespeichert werden, in welchem $level gerade keine Linie sondern ein blank hingehört.
        (d.h. welche Schleife gerade im letzten Durchlauf mit $i==$n-1 ist)
        ich dumm. Wie mach ich das?
        *winks*
        Gilbert
        ------------------------------------------------
        Hilfe für eine Vielzahl von Problemen!!!
        http://www.1st-rootserver.de/

        Kommentar


        • #19
          @tj99de

          ich habe die Datei vergessen, hier ist sie.
          Angehängte Dateien
          *winks*
          Gilbert
          ------------------------------------------------
          Hilfe für eine Vielzahl von Problemen!!!
          http://www.1st-rootserver.de/

          Kommentar


          • #20
            Original geschrieben von Wotan

            ich dumm. Wie mach ich das?
            du nicht dumm, du faul.

            am Anfang der Funktion: static $letztes = array();
            vor die Schleife: $n = mysql_num_rows($sql_id);
            Schleifenkopf: for ($k=0; $msg = mysql_fetch_assoc($sql_id); $k++)
            am Anfang der Schleife: $letztes[$level] = ($k==$n-1);

            und so werden die gifs ausgegeben:
            for ($m=0; $m<$level-1; $m++) echo ($letztes[$m] ? 'S':'I');
            if ($m<$level) echo ($letztes[$m] ? 'L':'T');
            statt der img-Tags hab ich nur die Buchstaben genommen; S steht für $space_gif

            allerdings fehlt noch das letzte gif: M wenn Antworten existieren, N wenn nicht
            Am einfachsten geht das über eine Erweiterung der Query:
            $sql_id = mysql_query("select a.*, count(b.id) as hatantwort from $table a
            left join $table b on b.post_parent=a.id group by a.id");
            und den echos noch dieses hinzufügen:
            echo ($msg['hatantwort'] ? 'M'$level || $k ? 'C' : 'N'));

            PS: Ich hoffe, ich habe die Buchstaben richtig gedeutet.
            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


            • #21
              @titus
              ich nicht faul. Stimmt nicht.

              Das Problem ist nur das ich keinen Dunst habe, wo ich deine Sache einsetzen muss.

              Kannst du dein Posting noch mal bearbeiten und die Smilies ausschalten?

              Das was du schreibst habe ich verstanden, wie gesagt weiß ich nur nicht wo ich damit hin soll.
              *winks*
              Gilbert
              ------------------------------------------------
              Hilfe für eine Vielzahl von Problemen!!!
              http://www.1st-rootserver.de/

              Kommentar


              • #22
                ist klar => am Anfang der Funktion: static $letztes = array();
                vor welche Schleife => vor die Schleife: $n = mysql_num_rows($sql_id);
                => Schleifenkopf: for ($k=0; $msg = mysql_fetch_assoc($sql_id); $k++)
                => am Anfang der Schleife: $letztes[$level] = ($k==$n-1);

                das dort hin wo die m,n,c gif´s stehen ? => und so werden die gifs ausgegeben:
                for ($m=0; $m<$level-1; $m++) echo ($letztes[$m] ? 'S':'I');
                if ($m<$level) echo ($letztes[$m] ? 'L':'T');
                statt der img-Tags hab ich nur die Buchstaben genommen; S steht für $space_gif
                *winks*
                Gilbert
                ------------------------------------------------
                Hilfe für eine Vielzahl von Problemen!!!
                http://www.1st-rootserver.de/

                Kommentar


                • #23
                  Original geschrieben von Wotan
                  vor welche Schleife => vor die Schleife: $n = mysql_num_rows($sql_id);
                  vor die erste natürlich ... direkt hinter $sql_id = ...
                  das dort hin wo die m,n,c gif´s stehen ? =>
                  soll heißen ich hab zur besseren Lesbarkeit des Postings nur Buchstaben geechoed. Ersetze T durch $t_gif etc., dann sieht es vermutlich so aus, wie es soll.
                  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


                  • #24
                    @Titus
                    Hab ich das jetzt richtig eingesetzt?
                    PHP-Code:
                    <?php
                    function output_threaded ($pid$parent$level)
                        {
                        global 
                    $table$font;
                        global 
                    $t_gif,$l_gif,$p_gif,$m_gif,$c_gif,$i_gif,$n_gif,$space_gif,$trans_gif;
                        
                        static 
                    $letztes = array();
                        
                        
                    $sql_id mysql_query ("SELECT * FROM $table WHERE post_thread='$pid' AND post_parent='$parent' ORDER BY post_date asc")or die(mysql_error());
                        
                        
                    $n mysql_num_rows($sql_id);
                        for (
                    $k=0$msg mysql_fetch_assoc($sql_id); $k++)
                            {
                            
                    $letztes[$level] = ($k==$n-1);
                            echo 
                    "<tr>
                                    <td width=\"1%\" bgcolor=\"#dfdfdf\">
                    $font";
                            for (
                    $i=1$i<$level$i++)
                                {
                                echo 
                    "$trans_gif";
                                }
                            if (
                    $parent != "0")
                                {
                                
                    $count++;
                                
                    $sql_a "select a.*, count(b.id) as hatantwort from $table a
                    left join 
                    $table b on b.post_parent=a.id group by a.id";
                                
                    $sql_id_a mysql_query($sql_a);
                                
                    $ein mysql_fetch_row($sql_id_a);
                                if (
                    $ein[0] == $count)
                                    {
                                    echo 
                    "$l_gif";
                                    }
                                else
                                    {
                                    echo 
                    "$t_gif";
                                    }
                                }
                            else
                                {
                                
                    $count=0;
                                }

                            
                    $sql_a "SELECT id FROM $table WHERE post_parent='$msg[id]'";
                            
                    $sql_id_a mysql_query($sql_a);
                            
                    $under mysql_fetch_row($sql_id_a);
                            for (
                    $m=0$m<$level-1$m++)
                                {
                                echo (
                    $letztes[$m] ? 'S':'I');
                                }
                            if (
                    $m<$level)
                                {
                                echo (
                    $letztes[$m] ? 'L':'T');
                                }
                            echo (
                    $msg['hatantwort'] ? 'M':($level || $k 'C' 'N'));
                    //        if ($under[0])
                    //            {
                    //            echo "$m_gif";
                    //            }
                    //        elseif (!$under[0] && $parent==0)
                    //            {
                    //            echo "$n_gif";
                    //            }
                    //        else
                    //            {
                    //            echo "$c_gif";
                    //            }

                            
                    echo "</td>
                                    <td width=\"70%\" bgcolor=\"#dfdfdf\">
                    $font <a href=\"show.php?id=$msg[id]\">$msg[post_subject]</a></td>
                                    <td width=\"10%\" bgcolor=\"#dfdfdf\">
                    $font"$msg[post_userid] ."</td>
                                    <td width=\"19%\" bgcolor=\"#dfdfdf\">
                    $font"$msg[post_date] ."</td>
                                </tr>"
                    ;
                            
                    output_threaded ($pid,$msg[id], $level+1);
                            }
                        }
                    output_threaded($post_id00);
                    ?>
                    Jetzt sieh es aber komisch aus:
                    Zuletzt geändert von Wotan; 07.08.2002, 10:53.
                    *winks*
                    Gilbert
                    ------------------------------------------------
                    Hilfe für eine Vielzahl von Problemen!!!
                    http://www.1st-rootserver.de/

                    Kommentar


                    • #25
                      Bei meiner jetzigen Posting Struktur müsste eigentlich folgendes raus kommen.

                      hier mal die Posting Struktur
                      id ==> post_thread ==> post_parent
                      1 ==> 1 ==> 0
                      7 ==> 1 ==> 1
                      10 ==> 1 ==> 1
                      18 ==> 1 ==> 7
                      19 ==> 1 ==> 1
                      26 ==> 1 ==> 19

                      M id1
                      TM id7
                      IL id18
                      TC id10
                      LM id19
                      SL id26
                      *winks*
                      Gilbert
                      ------------------------------------------------
                      Hilfe für eine Vielzahl von Problemen!!!
                      http://www.1st-rootserver.de/

                      Kommentar


                      • #26
                        Original geschrieben von Wotan
                        @Titus
                        Hab ich das jetzt richtig eingesetzt?
                        nein, das sollte eher so aussehen:
                        PHP-Code:
                        function output_threaded ($pid$parent$level)
                        {
                          global 
                        $table$font;
                          global 
                        $t_gif,$l_gif,$p_gif,$m_gif,$c_gif,$i_gif,$n_gif,
                            
                        $space_gif,$trans_gif;
                          static 
                        $_font
                            
                        preg_replace('/<([\\S]+)(.*?)>/''</\\1>'$font);
                          static 
                        $letztes = array();


                          
                        $sql_id mysql_query ("SELECT a.*, count(b.id) AS hatantwort
                            FROM 
                        $table AS a
                            LEFT JOIN 
                        $table AS b ON b.post_parent=a.id
                            WHERE post_thread='
                        $pid' AND post_parent='$parent'
                            GROUP BY a.id ORDER BY a.post_date"
                        )
                          or die(
                        mysql_error());

                          
                        $n mysql_num_rows($sql_id);
                          for (
                        $count=0$msg mysql_fetch_assoc($sql_id); $count++)
                          {
                            
                        $letztes[$level] = ($count==$n-1);
                            echo 
                        '<tr bgcolor="#dfdfdf">
                              <td width="71%">'
                        $font;

                            for (
                        $m=0$m<$level-1$m++)
                              echo (
                        $letztes[$m] ? $space_gif:$i_gif);
                            if (
                        $m<$level) echo ($letztes[$m] ? $l_gif:$t_gif);
                            echo (
                        $msg['hatantwort']
                              ? 
                        $m_gif
                              
                        : ($level || $count $c_gif $n_gif)
                            );

                            echo 
                        '<a href="show.php?id='$msg[id], '">',
                                
                        $msg['post_subject'], $_font'</a></td>
                              <td width="10%">'
                        $font$msg['post_userid'], $_font'</td>
                              <td width="19%">'
                        $font$msg['post_date'], $_font'</td>
                            </tr>'
                        ;
                            
                        output_threaded ($pid$msg[id], $level+1);
                          }
                        }
                        output_threaded($post_id00); 
                        Die neue Variable $_font sorgt dafür, dass die font-Tags auch geschlossen werden.

                        Übrigens: wenn du die Query noch ein wenig erweiterst, kannst du statt der User-ID den Namen angeben: ein zusätzliches join:
                        LEFT JOIN user AS u ON u.userid=a.post_userid
                        und ein zusätzliches Feld in der Select-Liste: u.username
                        --> $msg['username'] enthält den Namen des Users
                        (vorausgesetzt, ich liege mit den Namen der Tabelle und der Felder richtig)

                        und noch was: schau dir mal die mySQL-Funktion date_format an.
                        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


                        • #27
                          Danke erstmal für die Zusatzinfos.

                          Aber es bringt mir Parse Errors:

                          PHP-Code:
                          <?php
                          function output_threaded ($pid$parent$level)
                              {
                              global 
                          $table$font;
                              global 
                          $t_gif,$l_gif,$p_gif,$m_gif,$c_gif,$i_gif,$n_gif,$space_gif,$trans_gif;
                              static 
                          $_font preg_replace('/<([S]+)(.*?)>/''</1>'$font); // Zeile 47
                              
                          static $letztes = array();

                              
                          $sql_id mysql_query ("SELECT a.*, count(b.id) AS hatantwort FROM $table AS a LEFT JOIN $table AS b ON b.post_parent=a.id WHERE post_thread='$pid' AND post_parent='$parent' GROUP BY a.id ORDER BY a.post_date");
                              
                          $n mysql_num_rows($sql_id); // Zeile 51
                              
                          for ($count=0$msg mysql_fetch_assoc($sql_id); $count++) // Zeile 52
                                  
                          {
                                  
                          $letztes[$level] = ($count==$n-1);
                                  echo 
                          '<tr bgcolor="#dfdfdf">
                                      <td width="71%">'
                          $font;
                                  
                                  for (
                          $m=0$m<$level-1$m++)
                                  echo (
                          $letztes[$m] ? $space_gif:$i_gif);
                                  if (
                          $m<$level) echo ($letztes[$m] ? $l_gif:$t_gif);
                                  echo (
                          $msg['hatantwort'] ? $m_gif : ($level || $count $c_gif $n_gif));
                                  
                                  echo 
                          '<a href="show.php?id='$msg[id], '">'$msg['post_subject'], $_font'</a></td>
                                          <td width="10%">'
                          $font$msg['post_userid'], $_font'</td>
                                          <td width="19%">'
                          $font$msg['post_date'], $_font'</td>
                                      </tr>'
                          ;
                                  
                          output_threaded ($pid$msg[id], $level+1);
                                  }
                              }
                          output_threaded($post_id00);
                          ?>
                          Erster Parse Error in Zeile 47
                          Parse error: parse error, unexpected '(', expecting ',' or ';' in C:\wampp2036\htdocs\forum0.1\forum\thread-see.php on line 47
                          Kommentiere ich diese aus, kommt:
                          Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\wampp2036\htdocs\forum0.1\forum\thread-see.php on line 51

                          Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\wampp2036\htdocs\forum0.1\forum\thread-see.php on line 52
                          *winks*
                          Gilbert
                          ------------------------------------------------
                          Hilfe für eine Vielzahl von Problemen!!!
                          http://www.1st-rootserver.de/

                          Kommentar


                          • #28
                            Original geschrieben von Titus
                            Übrigens: wenn du die Query noch ein wenig erweiterst, kannst du statt der User-ID den Namen angeben: ein zusätzliches join:
                            LEFT JOIN user AS u ON u.userid=a.post_userid
                            und ein zusätzliches Feld in der Select-Liste: u.username
                            --> $msg['username'] enthält den Namen des Users
                            (vorausgesetzt, ich liege mit den Namen der Tabelle und der Felder richtig)
                            Tabelle user heist forum_user
                            Aus der Tabelle post_userid kommt die id aus der Forum_user [id]
                            *winks*
                            Gilbert
                            ------------------------------------------------
                            Hilfe für eine Vielzahl von Problemen!!!
                            http://www.1st-rootserver.de/

                            Kommentar


                            • #29
                              Parse Error:
                              1. das Forum hatte meine Backslashes verschluckt
                              2. mein Fehler, natürlich darf in die Deklaration kein Funktionsaufruf rein.
                              so sollte es glatt laufen:
                              PHP-Code:
                              static $_font false;
                              if (!
                              $font)
                                
                              $fonr preg_replace('/<([\\S]+)(.*?)>/''</\\1>'$font); 
                              Linien
                              Ich hab nochmal rüber geschaut, ersetze Zeile 58-61 mal hierdurch:
                              PHP-Code:
                              $leztes[0] = $letztes[1];
                              if (!
                              $level)
                                echo (
                              $msg['hatantwort'] ? 'M':'N');
                              else
                              {
                                for (
                              $m=1$m<$level-1$m++)
                                  echo (
                              $letztes[$m] ? 'S':'I');
                                echo (
                              $letztes[$m] ? 'L':'T');
                                echo (
                              $msg['hatantwort'] ? 'M':'C');

                              dann sollte es so aussehen:
                              Code:
                              id  parent  level letztes hatantwort  count string
                              1   0       0     true    true        0     M
                              7   1       1     false   true        0     TM
                              18  7       2     true    false       0     ILC
                              10  1       1     false   false       1     TC
                              19  1       1     true    true        2     LM
                              26  19      2     true    false       0     SLC
                              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


                              • #30
                                In der sql_id stimmt iregend etwas nicht.
                                Ich hab mal ein mysql_error() dahinter gemacht.
                                Sorry das ist immer das erste was ich entferne.
                                Und das ist die Fehlermeldung:
                                Column: 'post_thread' in where clause is ambiguous
                                Zuletzt geändert von Wotan; 07.08.2002, 12:53.
                                *winks*
                                Gilbert
                                ------------------------------------------------
                                Hilfe für eine Vielzahl von Problemen!!!
                                http://www.1st-rootserver.de/

                                Kommentar

                                Lädt...
                                X