Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Usuwanie wątków na forum w PHP
Forum PHP.pl > Forum > Przedszkole
mozart2008
Witam.

Zrobiłem sobie niedawno skrypt na proste forum , o to on:


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



Wszystko ładnie działa:
lista jest,jak się kliknie dany wątek się wyświetla ale:


1.Nie działa mi kasowanie wątku na którym się jest.
Gdzie jest błąd?

2.Oraz jeżeli napiszę obojętnie co po tym kodzie na wyświetlanie listy wątków, no to ten napis jest hiperłączem.



PYTANIA:


Jak zamknąć wyświetlanie listy że pod listą będzie można normalnie wyświetlić tekst który jest zwykłym tekstem a nie hiperłączem??

Jak zrobić usuwanie wątku który aktualnie oglądamy?



Z góry wielkie dzięki za pomoc. biggrin.gif smile.gif sad.gif
patryczakowy
Masz tak
  1. if (isset($_POST['usunwatek'])) {
  2. $dwazapytanie = "DELETE FROM forumdyskusyjne WHERE nr=$nr ";
  3. $iddwazapytanie = mysql_query($dwazapytanie);
  4. }

A w formularzu do wysyłania nie przekazujesz zmiennej z numerem wątku musisz dodać ją do parametrów
mozart2008
Zrobiłem tak i tez nie działa.;(

  1. <form method='POST' action='?url=tutoriale$nr=$nr'>
  2. <input type="submit" name="usunwatek" class="wyslij" value="Usuń post" onclick="if (!confirm('Czy na pewno chcesz usunąć swojego posta?')) return false"/>
  3. </form>
patryczakowy
Jak już to tak
  1. <form method='POST' action='?url=tutoriale&nr=<?php echo $nr; ?>'>
mozart2008
Nie działa...sad.gif


  1. if(isSet($_GET['nr'])) $nr = $_GET['nr'];
  2. else $nr = '';
  3. if ($nr>0) {
  4. $wynik = mysql_query ("SELECT osoba, tytul, tresc, data ".
  5. "FROM forumdyskusyjne WHERE nr=$nr");
  6. if ($rekord = mysql_fetch_array ($wynik)) {
  7. $tresc = $rekord[2]; $tytul = $rekord[1];
  8. echo ("<h3>$rekord[1]</h3>");
  9. echo ("<p>wysłany przez <b>$rekord[0]</b>, <b>$rekord[3]</b>:");
  10. echo emotki("</p><p>$rekord[2]</p><hr />");
  11. echo ("<a href=\"http://alteringphotos.cba.pl/index.php?url=nowywatek&ref=$nr\">Wylij odpowiedź
  12. </a><hr />");
  13. if (isset($_POST['usunwatek'])) {
  14. $zapytanie = "DELETE FROM `forumdyskusyjne` WHERE `nr` ='$nr' ";
  15. $idzapytania = mysql_query($zapytanie);
  16. }
  17.  
  18.  
  19. ?>
    1. <form method='POST' action='?url=tutoriale&nr=<span class="kw2"><?php</span> <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="re0">$nr</span><span class="sy0">;</span> <span class="sy1">?></span>'></div></li><li class="li1"><div class="de1"><input type="submit" name="usunwatek" class="wyslij" value="Usuń post" onclick="if (!confirm('Czy na pewno chcesz usunąć swojego posta?')) return false"/></div></li><li class="li2"><div class="de2"></form></div></li><li class="li1"><div class="de1">
    <?php
  20. } else { $nr = 0; }
  21. } else { $nr = 0; }

patryczakowy
daj sobie
  1. echo $dwazapytanie ;

i zobacz co ci pokazuje;
mozart2008
Poco $dwazapytanie??

Przecież nigdzie nie mam takiej zmiennej teraz mam taki kod i tez nie działa:


  1. if (isset($_POST['usunwatek'])) {
  2.  
  3. $zapytanie = "DELETE FROM `forumdyskusyjne` WHERE `nr` ='$nr' ";
  4.  
  5. $idzapytania = mysql_query($zapytanie);
  6.  
  7. }
  8.  
  9.  
  10.  
  11.  
  12.  
  13. ?>
  14.  
  15.  
  16. [HTML]
  17.  
  18.  
  19. <form method='POST' action='?url=tutoriale&nr=<span class="kw2"><?php</span> <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="re0">$nr</span><span class="sy0">;</span> <span class="sy1">?></span>'></div></li><li class="li1"><div class="de1"><input type="submit" name="usunwatek" class="wyslij" value="Usuń post" onclick="if (!confirm('Czy na pewno chcesz usunąć swojego posta?')) return false"/></div></li><li class="li2"><div class="de2"></form></div></li><li class="li1"><div class="de1">
  20.  
  21. [HTML]
  22.  
  23. <?php



jak zrobie:

echo ($nr) ;

i jeżeli jestem na jakimś poście noto wyśiwetla mi poprawny numer.

Ale czemu nie kasuje??

Może być tez tak że dlatego że właśnie oglądał to??
patryczakowy
  1. if (isset($_POST['usunwatek'])) {
  2.  
  3. $zapytanie = "DELETE FROM `forumdyskusyjne` WHERE `nr` ='$nr' ";
  4. echo $zapytanie;
  5. $idzapytania = mysql_query($zapytanie);
  6. if (mysql_errno())
  7. echo "MySQL error ".mysql_errno().": ".mysql_error();
  8.  
  9. }

daj tak i powiedz co ci wyświetla
krzysztof_kf
Debugowałeś skrypt używasz notatnika czy edytora ?
mozart2008
  1. DELETE FROM `forumdyskusyjne` WHERE `nr` ='35'




Edytora - odpowiedź na pytanie krzysztofa
patryczakowy
czyli zmienna numer istnieje tylko pewnie masz coś w zapytaniu skopane może nazwa kolumny ale ja stawiam na te apostrofy lub na konstrukcje bazy
  1. DELETE FROM forumdyskusyjne WHERE nr = '35'
mozart2008
Teraz mam tak i nic.
  1. if (isset($_POST['usunwatek'])) {
  2.  
  3.  
  4.  
  5. $zapytanie = "DELETE FROM forumdyskusyjne WHERE nr = '$nr' ";
  6.  
  7. $idzapytania = mysql_query($zapytanie);
  8.  
  9. if (mysql_errno())
  10.  
  11. echo "MySQL error ".mysql_errno().": ".mysql_error();
  12.  
  13.  
  14.  
  15. }


Działa;P
patryczakowy
to działa czy nie?
mozart2008
Działa tylko jest jeszcze jeden problem.... zostaje takie coś:

, ,




Porpostu z bazy zostaje usuniętę ale na liście są 2 przecinki.


Czyli np:

pRZED USUNIĘCIEM:

Tytułwinksmiley.jpg , Patryk winksmiley.jpg, 2010-06-18 17:38:55

pO USUNIĘCIU

, ,





Ale z bazy danych usuwa..

czyli jak mam usunąć te 2 przecinki??



Kod do wczytywania listy wątków:


  1. <center>FORUM - TUTORIALE</center>
  2.  
  3. <?php
  4.  
  5. @mysql_connect('tajne','tajne','tajne')
  6. or die('Nieudane połączenie');
  7. @mysql_select_db('tajne')
  8. or die('Nieudane wybranie bazy');
  9. if(isset($_SESSION['zalogowany'])) {
  10. ?>
  11.  
  12. <div id="naglowek1">
  13. <br/>
  14. <b>OPCJE:</b>
  15. <br/><br/>
  16. </div>
  17.  
  18. <hr/>
  19. <form method='POST' action='index.php?url=tutoriale'>
  20. <input type="submit" name="odswiez" class="wyslij" value="Odśwież/Powrót" />
  21. <input type="submit" name="nowy_watek" class="wyslij" value="Nowy wątek" />
  22. </form>
  23. <hr/>
  24. <br/>
  25. <center>
  26. <div id="naglowek1">
  27. <br/>
  28. <b>WSZYSTKIE POSTY:</b>
  29. </div>
  30. </center>
  31.  
  32.  
  33. <?php
  34. if (isset($_POST['odswiez'])) {
  35. header ('Location:index.php?url=tutoriale') ;
  36. }
  37. if (isset($_POST['nowy_watek'])) {
  38. header ('Location:index.php?url=nowywatek') ;
  39. }
  40. ?>
  41. <hr/>
  42.  
  43. <div style="width: 1000px; height: 700px; overflow: scroll;">
  44. <?php
  45.  
  46.  
  47. function wypiszforum ($nr) {
  48.  
  49. global $fref; global $fdata; global $fosoba; global $ftytul;
  50.  
  51. $str = '';
  52. for ($i=count($fref); $i>=1; $i--) {
  53. if ($fref[$i] == $nr) {
  54. $str .= "<li><a href=\"http://alteringphotos.cba.pl/index.php?url=tutoriale&nr=$i\">$ftytul[$i]</a>, ".
  55. "<i>$fosoba[$i], $fdata[$i]</i>\n";
  56. $str .= wypiszforum ($i);
  57. $str .= "</li>";
  58. }
  59. }
  60. if($str != '')
  61. return "<ul>$str</ul>";
  62. else
  63. return $str;
  64. }
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73. if(isSet($_GET['nr'])) $nr = $_GET['nr'];
  74. else $nr = '';
  75. if ($nr>0) {
  76. $wynik = mysql_query ("SELECT osoba, tytul, tresc, data ".
  77. "FROM forumdyskusyjne WHERE nr=$nr");
  78. if ($rekord = mysql_fetch_array ($wynik)) {
  79. $tresc = $rekord[2]; $tytul = $rekord[1];
  80. echo ("<h3>$rekord[1]</h3>");
  81. echo ("<p>wysłany przez <b>$rekord[0]</b>, <b>$rekord[3]</b>:");
  82. echo emotki("</p><p>$rekord[2]</p><hr />");
  83. echo ("<a href=\"http://alteringphotos.cba.pl/index.php?url=nowywatek&ref=$nr\">Wylij odpowiedź
  84. </a><hr />");
  85.  
  86.  
  87.  
  88. if (isset($_POST['usunwatek'])) {
  89.  
  90.  
  91.  
  92. $zapytanie = "DELETE FROM forumdyskusyjne WHERE nr = '$nr' ";
  93.  
  94. $idzapytania = mysql_query($zapytanie);
  95.  
  96. if (mysql_errno())
  97.  
  98. echo "MySQL error ".mysql_errno().": ".mysql_error();
  99.  
  100. ?>
  101. <script type="text/javascript">
  102. alert ("Usunąłeś swojego posta!") ;
  103. window.location ="http://www.alteringphotos.cba.pl/index.php?url=tutoriale";
  104. </script>
  105.  
  106. <?php
  107.  
  108.  
  109.  
  110. }
  111.  
  112.  
  113.  
  114. ?>
  115. <form method='POST' action='?url=tutoriale&nr=<?php echo $nr; ?>'>
  116. <input type="submit" name="usunwatek" class="wyslij" value="Usuń post" onclick="if (!confirm('Czy na pewno chcesz usunąć swojego posta?')) return false"/>
  117. </form>
  118. <?php
  119. } else { $nr = 0; }
  120. } else { $nr = 0; }
  121.  
  122.  
  123. $wynik = mysql_query ("SELECT nr, osoba, tytul, data, ref ".
  124. "FROM forumdyskusyjne");
  125. while ($rekord = mysql_fetch_array ($wynik)) {
  126. $fref[$rekord[0]] = $rekord[4];
  127. $fdata[$rekord[0]] = $rekord[3];
  128. $ftytul[$rekord[0]] = $rekord[2];
  129. $fosoba[$rekord[0]] = $rekord[1];
  130. }
  131.  
  132.  
  133.  
  134. print wypiszforum ($nr);
  135.  
  136. ?>
  137. </div>
  138.  
  139.  
  140.  
  141.  
  142. <?php
  143. }else{
  144. ?>
  145. <br/><br/><br/>
  146. <center>
  147. Musisz być zalogowany aby oglądać tę stronę!!
  148. </center>
  149. <br/><br/><br/><br/><br/>
  150. <br/><br/><br/><br/><br/>
  151. <?php
  152. }
  153. ?>
  154. <br/>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.