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>
<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>
<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