Mam taki mały problem...
mam funkcje rekurencyjna realizujaca forum...jednak ze nie dziala do konca tak jak bym chcial...poniewaz gdy usowam jakis post z bazy to wtedy robia sie taki przecinki zamiast postu..
MOze ktos ma pomysl jak zamienic ja na iteracyjna?albo cos innego?

a Oto kod:


Funkcja pokazujaca forum
Kod
<HTML>
  <HEAD>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">
    <TITLE>Forum dyskusyjne</TITLE>
  </HEAD>
  <BODY>
    <H2>Forum dyskusyjne</H2>
    <A HREF="6-18.php">Wszystkie posty</A>,
    <A HREF="6-18-add.php">Wyślij nowy post</A><HR>

    <? // Wyświetlanie forum dyskusyjnego. Jeżeli jest podany numer postu,
       // wyświetla się on i jego odpowiedzi. Jeżeli nie - całe forum.
  
        function wypiszforum ($nr) {
        // Funkcja rekurencyjnie wyświetla wszystkie rekordy, będące poniżej
        // w hierarchii postów (czyli odpowiedzi, odpowiedzi na odfpowiedzi,
        // itd...
          global $fref; global $fdata; global $fosoba; global $ftytul;
          print "<UL>";
          for ($i=count($fref); $i>=1; $i--) {
            if ($fref[$i] == $nr) {
              print "<LI><A HREF=\"6-18.php?nr=$i\">$ftytul[$i]</A>, ".
                    "<I>$fosoba[$i], $fdata[$i]</I>";
              wypiszforum ($i);
            }
          }
          print "</UL>";
        }

        mysql_connect ("xxxl", "xxx", "xxx") or
          die ("Nie można połączyć się z MySQL");
        mysql_select_db ("xxxx") or
          die ("Nie można połączyć się z bazą cwphp");

        $nr = $_GET['nr'];
        if ($nr>0) {                             // chcemy wyświetlić post
          $wynik = mysql_query ("SELECT osoba, tytul, tresc, data ".
                                "FROM forumdyskusyjne WHERE nr=$nr");
          if ($wynik && $rekord = mysql_fetch_array ($wynik)) {   // i ten post jest
            $tresc = $rekord[2]; $tytul = $rekord[1];      
            print "<H3>$rekord[1]</H3>";
            print "<P>wysłany przez <B>$rekord[0]</B>, <B>$rekord[3]</B>:";
            print "</P><P>$rekord[2]</P><HR>";
            print "<A HREF=\"6-18-add.php?ref=$nr\">Wylij odpowiedĽ</A><HR>";
          } else {
            $nr = 0;
          }
        } else { $nr = 0; }

        // odczyt danych, które będą wykorzystane w funkcji rekurencyjnej
        $wynik = mysql_query ("SELECT nr, osoba, tytul, data, ref ".
                               "FROM forumdyskusyjne");
        while ($wynik && $rekord = mysql_fetch_assoc ($wynik)) {    
          $fref[$rekord['nr']] = $rekord['ref'];
          $fdata[$rekord['nr']] = $rekord['data'];
          $ftytul[$rekord['nr']] = $rekord['tytul'];
          $fosoba[$rekord['nr']] = $rekord['osoba'];
        }
  
        // wypisanie postów potomnych - rekurencja
        wypiszforum ($nr);
    ?>  

  </BODY>
</HTML>


i dodaj:

Kod
<HTML>
  <HEAD>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">
    <TITLE>Forum dyskusyjne -- dopisanie postu</TITLE>
  </HEAD>
  <BODY>
    <H2>Forum dyskusyjna</H2>
    <A HREF="6-18.php">Wszystkie posty</A>,
    <A HREF="6-18-add.php">Wyślij nowy post</A><HR>

    <? // Skrypt wyświetla formularz i przyjmuje dane, wpisując nowy post do
       // bazy.
      mysql_connect ("xxxl", "xxx", "xxx") or
        die ("Nie można połączyć się z MySQL");
      mysql_select_db ("xxx") or
        die ("Nie można połączyć się z bazą hh");

      if ($_POST['co'] == 'wyslij') {             // żądanie dopisania
        $ty = addslashes(htmlentities ($_POST['tytul']));
        $os = addslashes(htmlentities ($_POST['osoba']));
        $tr = addslashes(nl2br(htmlentities ($_POST['tresc'])));
        if ($ty && $os && $tr) {  // dopisujemy!
          $query = ("INSERT INTO forumdyskusyjne (osoba, tytul, tresc, ".
                   "data, ref) VALUES ('$os', '$ty', '$tr', now(), '".$_GET['ref']."')");
          mysql_query ($query);
          print 'Wpis został dokonany. <A HREF="6-18.php">Forum dyskusyjne</A>';
          exit;
        } else {
          $tresc = $_POST['tresc'];
          $tytul = $_POST['tytul'];
          $osoba = $_POST['osoba'];
        }
      } elseif ($_GET['ref']>0) {                     // próba odpowiedzi na inny post
        $wynik = mysql_query ("SELECT osoba, tytul, tresc, data ".
                              "FROM forumdyskusyjne WHERE nr=".$_GET['ref']);
        if ($wynik && $rekord = mysql_fetch_assoc ($wynik)) {        // i ten post jest
           $tresc = $rekord['tresc']; $tytul = $rekord['tytul'];    
           $tresc = str_replace ("<br />", "", $tresc);
           $tresc = str_replace ("\n", "\n: ", $tresc); $tresc = ": ".$tresc;
           if (!(ereg ("^Re: ", $tytul))) {     // dopisujemy RE, o ile nie ma
             $tytul = "Re: ".$tytul;
           }
           print "<H3>Odpowiedz na post: ".$rekord['tytul']."</H3><P>Wysłany przez ";
           print "<B>".$rekord['osoba']."</B>, <B>".$rekord['data']."</B></P>".$rekord['tresc']."<BR><HR>";
        }
      }
      // Wyświetlenie formularza
      print "<H3>Poślij post:</H3>";
      print "<FORM METHOD=POST><INPUT TYPE=\"hidden\" NAME=\"co\" VALUE=\"";
      print "wyslij\"><INPUT TYPE=\"hidden\" NAME=\"ref\" VALUE=\"".$_GET['ref']."\">";
      print "<B>Osoba:</B><BR><INPUT TYPE=\"text\" NAME=\"osoba\" ";
      print "VALUE=\"$osoba\" SIZE=60><BR>\n<B>Tytuł postu:</B><BR>";
      print "<INPUT TYPE=\"text\" NAME=\"tytul\" VALUE=\"$tytul\" ";
      print "SIZE=60><BR><B>treść:</B><BR><TEXTAREA NAME=\"tresc\" ";
      print "ROWS=10 COLS=60>$tresc</TEXTAREA><BR>\n";
      print "<INPUT TYPE=\"submit\" VALUE=\"Wyślij\">";
      print "</FORM>";
    ?>
  </BODY>
</HTML>



-------------------------
popraw BBCode
bo znowu wątek zostanie zamknięty
~Cienki1980


pomoze ktos??
albo powie co nalezy zmienic?

mógłby ktospomoc