Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> Błąd na prostym forum w php, PO usunięciu nie chce się dodać nowy wątek
mozart2008
post 19.06.2010, 09:15:08
Post #1





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 6.05.2010

Ostrzeżenie: (0%)
-----


Witam.
Mam strasznie głupi błąd dotyczący małego forum które piszę.
Otóż moje forum wyświetla wszystkie posty z bazy danych MySQL.
Można dodać też nowy post.
Czyli dodawanie i włączanie postów działa ALE:
kiedy skasuję obojętnie jaki post.... wtedy kiedy dodaje nowy.. noto w liście postów są tylko 2 przecinki

tutoriale.php
  1. <center>FORUM - TUTORIALE</center>
  2. <?php
  3. @mysql_connect('tajne','tajne','tajne')
  4. or die('Nieudane połączenie');
  5. @mysql_select_db('tajne')
  6. or die('Nieudane wybranie bazy');
  7. if(isset($_SESSION['zalogowany'])) {
  8. ?>
  9. <div id="naglowek1">
  10. <br/>
  11. <b>OPCJE:</b>
  12. <br/><br/>
  13. </div>
  14. <hr/>
  15. <form method='POST' action='index.php?url=tutoriale'>
  16. <input type="submit" name="odswiez" class="wyslij" value="Odśwież/Powrót" />
  17. <input type="submit" name="nowy_watek" class="wyslij" value="Nowy wątek" />
  18. </form>
  19. <hr/>
  20. <br/>
  21. <center>
  22. <div id="naglowek1">
  23. <br/>
  24. <b>WSZYSTKIE POSTY:</b>
  25. </div>
  26. </center>
  27. <?php
  28. if (isset($_POST['odswiez'])) {
  29. header ('Location:index.php?url=tutoriale') ;
  30. }
  31. if (isset($_POST['nowy_watek'])) {
  32. header ('Location:index.php?url=nowywatek') ;
  33. }
  34. ?>
  35. <hr/>
  36. <div style="width: 1000px; height: 700px; overflow: scroll;">
  37. <?php
  38. // Wyświetlanie forum dyskusyjnego. Jeżeli jest podany numer postu,
  39. // wyświetla się on i jego odpowiedzi. Jeżeli nie - całe forum.
  40. function wypiszforum ($nr) {
  41. // Funkcja rekurencyjnie wyświetla wszystkie rekordy, będące poniżej
  42. // w hierarchii postów (czyli odpowiedzi, odpowiedzi na odpowiedzi,
  43. // itd...
  44. global $fref; global $fdata; global $fosoba; global $ftytul;
  45.  
  46. $str = '';
  47. for ($i=count($fref); $i>=1; $i--) {
  48. if ($fref[$i] == $nr) {
  49. $str .= "<li><a href=\"http://www.alteringphotos.cba.pl/index.php?url=tutoriale&nr=$i\">$ftytul[$i]</a>, ".
  50. "<i>$fosoba[$i], $fdata[$i]</i>\n";
  51. $str .= wypiszforum ($i);
  52. $str .= "</li>";
  53. }
  54. }
  55. if($str != '')
  56. return "<ul>$str</ul>";
  57. else
  58. return $str;
  59. }
  60. if(isSet($_GET['nr'])) $nr = $_GET['nr'];
  61. else $nr = '';
  62. if ($nr>0) { // chcesz wyświetlić post
  63. $wynik = mysql_query ("SELECT osoba, tytul, tresc, data ".
  64. "FROM forumdyskusyjne WHERE nr=$nr");
  65. if ($rekord = mysql_fetch_array ($wynik)) { // i ten post jest
  66. $tresc = $rekord[2]; $tytul = $rekord[1];
  67. echo ("<h3>$rekord[1]</h3>");
  68. echo ("<p>wysłany przez <b>$rekord[0]</b>, <b>$rekord[3]</b>:");
  69. echo ("</p><p>$rekord[2]</p><hr />");
  70. echo emotki("<a href=\"http://www.alteringphotos.cba.pl/index.php?url=nowywatek&ref=$nr\">Wylij odpowiedź
  71. </a><hr />");
  72. if (isset($_POST['usunwatek'])) {
  73.  
  74. $zapytanie = "DELETE FROM forumdyskusyjne WHERE nr = '$nr' ";
  75. $idzapytania = mysql_query($zapytanie);
  76.  
  77.  
  78. ?>
  79.  
  80. <script type="text/javascript">
  81.  
  82. alert ("Usunąłeś swojego posta!") ;
  83.  
  84. window.location ="http://www.alteringphotos.cba.pl/index.php?url=tutoriale";
  85.  
  86. </script>
  87. <?php
  88. }
  89. ?>
  90. <form method='POST' action='?url=tutoriale&nr=<?php echo $nr; ?>'>
  91. <input type="submit" name="usunwatek" class="wyslij" value="Usuń post" onclick="if (!confirm('Czy na pewno chcesz usunąć swojego posta?')) return false"/>
  92. </form>
  93. <?php
  94. } else { $nr = 0; }
  95. } else { $nr = 0; }
  96. // odczyt danych, które będą wykorzystane w funkcji rekurencyjnej
  97. $wynik = mysql_query ("SELECT nr, osoba, tytul, data, ref ".
  98. "FROM forumdyskusyjne");
  99. while ($rekord = mysql_fetch_array ($wynik)) {
  100. $fref[$rekord[0]] = $rekord[4];
  101. $fdata[$rekord[0]] = $rekord[3];
  102. $ftytul[$rekord[0]] = $rekord[2];
  103. $fosoba[$rekord[0]] = $rekord[1];
  104. }
  105. // wypisanie postów potomnych - rekurencja
  106. print wypiszforum ($nr);
  107. ?>
  108. </div>
  109. <?php
  110. }else{
  111. ?>
  112. <br/><br/><br/>
  113. <center>
  114. Musisz być zalogowany aby oglądać tę stronę!!
  115. </center>
  116. <br/><br/><br/><br/><br/>
  117. <br/><br/><br/><br/><br/>
  118. <?php
  119. }
  120. ?>
  121. <br/>

nowywatek.php
  1. <div id="naglowek1">
  2. <br/>
  3. <b>OPCJE:</b>
  4. <br/><br/>
  5. </div>
  6. <hr/>
  7. <form method='POST' action='http://www.alteringphotos.cba.pl/index.php?url=nowywatek'>
  8. <input type="submit" name="powroot" class="wyslij" value="Powrót" />
  9. </form>
  10. <hr/>
  11. <?php
  12.  
  13. @mysql_connect('tajne','tajne','tajne')
  14. or die('Nieudane połączenie');
  15. @mysql_select_db('tajne')
  16. or die('Nieudane wybranie bazy');
  17. if (isset($_POST['powroot'])) {
  18. header ('Location:index.php?url=tutoriale') ;
  19. }
  20. if (isSet($_POST['co']) && $_POST['co'] == 'wyslij') {
  21.  
  22. $ty = addslashes(htmlspecialchars ($_POST['tytul']));
  23. $os = addslashes(htmlspecialchars ($_SESSION['login']));
  24. $tr = addslashes(nl2br(htmlspecialchars ($_POST['tresc'])));
  25. if ($ty && $os && $tr) { // dopisujesz!
  26. $query = ("INSERT INTO forumdyskusyjne (osoba, tytul, tresc, ".
  27. "data, ref) valueS ('$os', '$ty', '$tr', now(),
  28. '".$_POST['ref']."')");
  29. mysql_query ($query);
  30. print 'Wpis został dokonany.';
  31. } else {
  32. $tresc = $_POST['tresc'];
  33. $tytul = $_POST['tytul'];
  34. $osoba = $_POST['osoba'];
  35. }
  36. } elseif (isSet($_GET['ref']) && $_GET['ref']>0) {echo "aaaa";
  37.  
  38. $wynik = mysql_query ("SELECT osoba, tytul, tresc, data ".
  39. "FROM forumdyskusyjne WHERE nr=
  40. ".$_GET['ref']);
  41. if ($wynik && $rekord = mysql_fetch_assoc ($wynik)) {
  42.  
  43. $tresc = $rekord['tresc']; $tytul = $rekord['tytul'];
  44. $tresc = str_replace ("<br />", "", $tresc);
  45. $tresc = str_replace ("\n", "\n: ", $tresc); $tresc =
  46. ": ".$tresc;
  47. if (!(ereg ("^RE: ", $tytul))) { // dopisujesz RE,
  48. // o ile nie ma
  49. $tytul = "Re: ".$tytul;
  50. }
  51. print "<h3>Odpowiedz na post: ".$rekord['tytul'].
  52. "</h3><p>Wysłany przez ";
  53. print "<b>".$rekord['osoba']."</b>,
  54. <b>".$rekord['data']."</b></p>".$rekord['tresc']."<br /><hr />";
  55. }
  56. }
  57. // Wyświetlenie formularza
  58. if(!isSet($osoba)) $osoba = '';
  59. if(!isSet($tytul)) $tytul = '';
  60. if(!isSet($tresc)) $tresc = '';
  61. if(isSet($_GET['ref'])) $ref = $_GET['ref']; else $ref = 0;
  62. print "<h3>Poślij post:</h3>";
  63. print "<center>" ;
  64. print "<div id=\"maina\">";
  65. print "<form method='post' action='http://www.alteringphotos.cba.pl/index.php?url=nowywatek'>";
  66. print "<input type=\"image\" src=\"grafika/usmiech.gif\" onclick=\"tresc.value += ';)';\">" ;
  67. print "<input type=\"image\" src=\"grafika/beczy.gif\" onclick=\"tresc.value += '[beczy]';\">" ;
  68. print "<input type=\"image\" src=\"grafika/bezradny.gif\" onclick=\"tresc.value += '[bezradny]';\">" ;
  69. print "<input type=\"image\" src=\"grafika/eee.gif\" onclick=\"tresc.value += ';/';\">" ;
  70. print "<input type=\"image\" src=\"grafika/email.png\" onclick=\"tresc.value += '[email]';\">" ;
  71. print "<input type=\"image\" src=\"grafika/glupek.gif\" onclick=\"tresc.value += '[glupek]';\">" ;
  72. print "<input type=\"image\" src=\"grafika/hehe.gif\" onclick=\"tresc.value += ';d';\">" ;
  73. print "<input type=\"image\" src=\"grafika/yyy.gif\" onclick=\"tresc.value += ';|';\">" ;
  74. print "<input type=\"image\" src=\"grafika/hura.gif\" onclick=\"tresc.value += '[hura]';\">" ;
  75. print "<input type=\"image\" src=\"grafika/jezyk.gif\" onclick=\"tresc.value += ';p';\">" ;
  76. print "<input type=\"image\" src=\"grafika/mutny.gif\" onclick=\"tresc.value += ':(';\">" ;
  77. print "<input type=\"image\" src=\"grafika/smutny.gif\" onclick=\"tresc.value += '[smutny]';\">" ;
  78. print "<input type=\"image\" src=\"grafika/prosi.gif\" onclick=\"tresc.value += '[prosi]';\">" ;
  79. print "<input type=\"image\" src=\"grafika/zly.gif\" onclick=\"tresc.value += '[zly]';\">" ;
  80. print "</div>";
  81. print "<div id=\"maina\">";
  82. print "<input class=\"wyslij\" type=\"hidden\" name=\"co\" value=\"";
  83. print "wyslij\" /><input class=\"wyslij\" type=\"hidden\" name=\"ref\"
  84. value=\".$ref.\" />";
  85. print "<b>Użytkownik:</b>" ."<div id=\"uzytkowniki\">" . $_SESSION['login'] . "</div><br/>" ;
  86. print "<br /><b>Tytuł postu:</b><br/>";
  87. print "<input class=\"wyslij\" type=\"text\" name=\"tytul\" value=\"$tytul\" ";
  88. print "size='50' /><br /><br/><b>Treść:</b><center><textarea name=\"tresc\" ";
  89. print "rows='10' id=\"text\"cols='130'>$tresc</textarea><br /><br/>\n";
  90. print "<input class=\"wyslij\" type=\"submit\" value=\"Wyślij\" />";
  91. print "</center>" ;
  92. print "</form>";
  93. print "</div>";
  94. print "</center>" ;
  95. ?>
  96. <br/>
  97. <br/><br/>


Mam jeszcze jeden błąd.
KIedy dodaję nowego posta noto jak wpisze temat, potem piszę treści chcę wkleić sobie emotikonkę, klikam na któryś obrazek, imotikonka sie dodaje ale jednocześnie wysyła się formularz.

PYTANIA:
1.Jak zrobić żeby po dodaniu emotikonki formularz sie nie wysyłał?
2.CO zrobić żeby po skasowaniu jakiegoś postu można było dodać nowy?

Z emotikonkami sobie poradziłem.
Na końcu wpisałem return false;
Ale nadal zostaje jeden błąd,dotyczący tych przecinków kiedy skasuje sie post i chce sie dodać nowy.
Go to the top of the page
+Quote Post
nospor
post 19.06.2010, 12:35:07
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Rety... ale sieczka. Dałeś tyle "smieci" tutaj że się nawet nie chce przykładać do analizy tego.
Czy naprawdę ta masa kodu jest nam potrzebna? Czy naprawdę musisz na dwie strony dawać kod, jak np. to:
print "<input type=\"image\" src=\"grafika/usmiech.gif\" onclick=\"tresc.value += ';)';\">" ;
jak np. to:
<b>OPCJE:</b>
<br/><br/>

I inne tego typu "smieci", ktore tylko zaciemniają kod?
Chcesz by ci pomoc, to wysil się trochę i przygotuj czysty kod bez masy smieci.

Zanim przygotujesz następny post, zastosuj się proszę do podanych tu porad:
Temat: Jak poprawnie zada pytanie

Podaj też strukturę swojej bazy.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mozart2008
post 19.06.2010, 12:55:22
Post #3





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 6.05.2010

Ostrzeżenie: (0%)
-----


Kod:

plik tutoriale.php

  1. @mysql_connect('tajne','tajne','tajne')
  2. or die('Nieudane połączenie');
  3. @mysql_select_db('tajne')
  4. or die('Nieudane wybranie bazy');
  5.  
  6.  
  7. function wypiszforum ($nr) { //funkcja wyswietlania listy wątków
  8. global $fref; global $fdata; global $fosoba; global $ftytul;
  9. $str = '';
  10. for ($i=count($fref); $i>=1; $i--) {
  11. if ($fref[$i] == $nr) {
  12. $str .= "<li><a href=\"http://www.alteringphotos.cba.pl/index.php?url=tutoriale&nr=$i\">$ftytul[$i]</a>, ".
  13. "<i>$fosoba[$i], $fdata[$i]</i>\n";
  14. $str .= wypiszforum ($i);
  15. $str .= "</li>";
  16. }
  17. }
  18. if($str != '')
  19. return "<ul>$str</ul>";
  20. else
  21. return $str;
  22. }
  23.  
  24. if(isSet($_GET['nr'])) $nr = $_GET['nr']; // wyswietlanie wybranego wątku
  25. else $nr = '';
  26. if ($nr>0) {
  27. $wynik = mysql_query ("SELECT osoba, tytul, tresc, data ".
  28. "FROM forumdyskusyjne WHERE nr=$nr");
  29. if ($rekord = mysql_fetch_array ($wynik)) { // i ten post jest
  30. $tresc = $rekord[2]; $tytul = $rekord[1];
  31. echo ("<h3>$rekord[1]</h3>");
  32. echo ("<p>wysłany przez <b>$rekord[0]</b>, <b>$rekord[3]</b>:");
  33. echo ("</p><p>$rekord[2]</p><hr />");
  34. echo emotki("<a href=\"http://www.alteringphotos.cba.pl/index.php?url=nowywatek&ref=$nr\">Wylij odpowiedź
  35. </a><hr />");
  36.  
  37. if (isset($_POST['usunwatek'])) {//usuwanie wątku na którym się jest
  38. $zapytanie = "DELETE FROM forumdyskusyjne WHERE nr = '$nr' ";
  39. $idzapytania = mysql_query($zapytanie);
  40. } else { $nr = 0; }
  41. } else { $nr = 0; }
  42. // odczyt danych, które będą wykorzystane w funkcji rekurencyjnej
  43. $wynik = mysql_query ("SELECT nr, osoba, tytul, data, ref ".
  44. "FROM forumdyskusyjne");
  45. while ($rekord = mysql_fetch_array ($wynik)) {
  46. $fref[$rekord[0]] = $rekord[4];
  47. $fdata[$rekord[0]] = $rekord[3];
  48. $ftytul[$rekord[0]] = $rekord[2];
  49. $fosoba[$rekord[0]] = $rekord[1];
  50. }
  51.  
  52. print wypiszforum ($nr);//wyswietlanie listy wątków


PYTANIE:
1.CO zrobić żeby po skasowaniu jakiegoś postu można było dodać nowy,który by nie był wyświetlany w liście wątków tak: ,, ?
Go to the top of the page
+Quote Post
nospor
post 19.06.2010, 13:09:01
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




1) Prosiłem byś podał strukturę bazy
2) Prosiłem byś zapoznał się z tematem "Jak zadać pytanie"
3) Prosiłem byś usunał "smieci". Miales to zrobić inteligentnie a nie na chybił trafił. W tej chwili ten kod to jeden wielki PARSE ERROR. Pomijam już fakt, że pominąłeś kluczowe kody.
4) Pytasz już o to tu:
Temat: Usuwanie watkow na forum w PHP
Jeden temat o tym samym wystarczy

5) Jak się zapewne domyślasz - zamykam


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Closed TopicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 00:29