Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php+mysql] kasowanie wszystkich rekordów mysql
Forum PHP.pl > Forum > PHP
klapaucius
Witam ponownie. Na mojej stronei stworzylem system prywatnych wiadomosci. Wszystko by bylo ok, gdyby nie to, ze dalem opcje przy kazdej wiadomosci "usun wiadomosc". I jesli na to klikne to usuwa mi wszystkie wiadomosci, ktore sie otrzymalo. To samo się dzieje jesli dam opcje "przeczytana", to wszystkim wiadomosciom daje wartosc "przeczytana". Niem ma bladego pojecia co tam moze byc zle. Tutaj daje kod:
  1. <?php
  2. include("baza.php");
  3. include("gora.php");
  4. $przeczytana = 1;
  5. $q = mysql_query("SELECT login, od, temat, tresc, przeczytana, date, id FROM wiadomosci WHERE login='$user'");
  6. ?>
  7. <b><center>Wiadomości:</center></b>
  8. <br>
  9. <a href="wiadomosci.php">:: Nowa wiadomość</a><br>
  10. :: Kasuj wszystkie wiadomości<br><hr>
  11.  
  12. <?php
  13. while($r = mysql_fetch_array($q)) {
  14. ?>
  15. <table width=100%>
  16. <tr bgcolor=#e6e6e6>
  17. <td><?php echo $r[2] ?></td>
  18. <td><?php echo $r[5] ?></td>
  19. <td><?php echo "<a href=\"profil.php?user=" . $r[1] . "\">"  . $r[1] . "</a>" ?></td>
  20. </tr>
  21. </table>
  22. <table width=100%>
  23. <tr bgcolor=#6e6e6e>
  24. <td>
  25. <?php echo $r[3] ?><br><br>
  26. </td>
  27. </tr>
  28. <tr bgcolor=#e6e6e6>
  29.  
  30. <form action="wiadomosci2.php" method="post">
  31.       <td><button style="border: 0px; background-color: #e6e6e6;" type="submit" name="przeczytana">przeczytana</button><button style="border: 0px; background-color: #e6e6e6;" type="submit" name="kasuj">kasuj</button></td>
  32. </form>
  33. </tr>
  34. </table>
  35. <hr>
  36. <?php
  37. if(isSet($_POST['kasuj'])){ #//tutaj jest ta nieszczesliwa funkja "kasuj" ///
  38.          mysql_fetch_array(mysql_query("DELETE FROM `wiadomosci` WHERE `id`='".$r[6]."'") or die (mysql_error()));
  39.          header("Location: wiadomosci2.php");
  40. }
  41. if(isSet($_POST['przeczytana'])){
  42.          mysql_fetch_array(mysql_query("UPDATE wiadomosci SET przeczytana='".$przeczytana."' WHERE id='".$r[6]."'") or die (mysql_error()));
  43. }
  44. }
  45. include("dol.php");
  46. ?>

Bardzo prosze o pomoc! Pozdrawiam!
TrevorGryffits
Z tego co widzę to masz na dużą pętlę. Mianowicie sięga ona aż za ify, co powoduje, że próbują być wykonane dla każdej wiadomości. A resztę możesz juz sobie sam dopowiedzieć;) Musisz pętlę zakończyć przed ifami. Zostanie ci wtedy problem skąd brać właściwy id postu... Ale to już temat na inne opowiadanie;)
kfc4
  1. <?php
  2. // Pobierz wiadomości
  3. while (...) {
  4.  //Wyświetl
  5. }
  6. // I dopiero tu:
  7. if ($_POST['usun']) {
  8.  // Usuń $_POST['co']/$_GET['co']
  9. }
  10. // Przeczytana tak samo.
  11. ?>


PS. Musisz się nauczyć robić dobre wcięcia. Tzn. w pętli wcinaj tak samo jak ify wcinasz.
klapaucius
no wlasnie, nawet jesli zrobie costakiego :
  1. <?php
  2. include("baza.php");
  3. include("gora.php");
  4. $przeczytana = 1;
  5. $q = mysql_query("SELECT login, od, temat, tresc, przeczytana, date, id FROM wiadomosci WHERE login='$user'");
  6. ?>
  7. <b><center>Wiadomości:</center></b>
  8. <br>
  9. <a href="wiadomosci.php">:: Nowa wiadomość</a><br>
  10. :: Kasuj wszystkie wiadomości<br><hr>
  11.  
  12. <?php
  13. while($r = mysql_fetch_array($q)) {
  14. ?>
  15. <table width=100%>
  16. <tr bgcolor=#e6e6e6>
  17. <td><?php echo $r[2] ?></td>
  18. <td><?php echo $r[5] ?></td>
  19. <td><?php echo "<a href=\"profil.php?user=" . $r[1] . "\">"  . $r[1] . "</a>" ?></td>
  20. </tr>
  21. </table>
  22. <table width=100%>
  23. <tr bgcolor=#6e6e6e>
  24. <td>
  25. <?php echo $r[3] ?><br><br>
  26. </td>
  27. </tr>
  28. <tr bgcolor=#e6e6e6>
  29.  
  30. <form action="wiadomosci2.php" method="post">
  31.       <td><button style="border: 0px; background-color: #e6e6e6;" type="submit" name="przeczytana">przeczytana</button><button style="border: 0px; background-color: #e6e6e6;" type="submit" name="kasuj">kasuj</button></td>
  32. </form>
  33. </tr>
  34. </table>
  35. <hr>
  36. <?php
  37. }
  38. if(isSet($_POST['kasuj'])){
  39.          mysql_fetch_array(mysql_query("DELETE FROM `wiadomosci` WHERE `id`='".$r[6]."'") or die (mysql_error()));
  40.          header("Location: wiadomosci2.php");
  41. }
  42. if(isSet($_POST['przeczytana'])){
  43.          mysql_fetch_array(mysql_query("UPDATE wiadomosci SET przeczytana='".$przeczytana."' WHERE id='".$r[6]."'") or die (mysql_error()));
  44. }
  45. include("dol.php");
  46. ?>

to i tak nic nie usunie bo faktycznie nie wie skad brac id wiadomosci... Nie mam zielonego pojecia jak to zrobic, siedze nad tym prae godzin. Prosze pomozcie sadsmiley02.gif
dotangelo
Sproboj uruchomic to zapytanie poprzez PhpMyAdmin i zobacz czy stanie się to samo.
Pamiętaj aby do bazy dodawać dwie kopie wiadomości, tak, jeśli jeden user usunie otrzymaną wiadomość, to drugiemu nie usunie się wysłana smile.gif
klapaucius
w phpmyadmin dalem takie zapytanie:
  1. DELETE FROM `wiadomosci` WHERE `id`='21'

Nie wiem czy chodzilo o to? W kazdym razie poprawnie usunelo wiadomosc o tym id. A co do tego, zeby robic 2 kopie wiadomosci to faktycznie nie pomyslalem biggrin.gif Dzieki za pomysl.
Jednak dalej prosze o pomoc z moim problemem. pozdro
kfc4
Nie wiesz jak przesłać, którą wiadomość ma usunąć? Masz poważne braki widzę, ale już wyjaśniam:
- Podczas wyświetlania, dodaj sobie gdzieś pod wiadomością taki link:
  1. <?php
  2. // coś tam
  3. while (...) {
  4.  // Wyświetl tą wiadomość
  5.  echo '<a href="skrypt.php?usun='.$r[6].'">Usuń</a>'; // Gdzie skrypt.php jest tym Twoim skryptem.
  6.  // I coś tam dalej
  7. }
  8. ?>

Dalej już poza pętlą dajesz(lub przed pętlą, tak będzie nawet lepiej):
  1. <?php
  2. if (isset($_GET['usun'] && is_numeric($_GET['usun']) {
  3.  zapytanie("delete from wiadomosci where id =".$_GET['usun']); // Wykonujesz zapytanie usuwające wiadomość o ID = $_GET['usun']
  4. }
  5. ?>

Oczywiście jeżeli przesyłasz już coś zmienną GET to musisz napisać nie ?usun= tylko &usun=.
Zrozumiałeś? I pamiętaj o wcięciach w kodzie! Bo taki pisany jak leci, w notatniku źle się czyta (najlepsze wcięcia są IMHO ta 2 spacje albo tabulator).
klapaucius
wiem ze wyczerpalem Wasz limit odpowiedzi... Ale zrobilem cos takiego:
  1. <?php
  2. include("baza.php");
  3. include("gora.php");
  4. $przeczytana = 1;
  5. $q = mysql_query("SELECT login, od, temat, tresc, przeczytana, date, id FROM wiadomosci WHERE login='$user'");
  6. ?>
  7. <b><center>Wiadomości:</center></b>
  8. <br>
  9. <a href="wiadomosci.php">:: Nowa wiadomość</a><br>
  10. :: Kasuj wszystkie wiadomości<br><hr>
  11.  
  12. <?php
  13. if (isset($_GET['usun'] && is_numeric($_GET['usun']) {
  14.       mysql_fetch_array(mysql_query("DELETE FROM `wiadomosci` WHERE `id`=".$_GET['usun']."") or die (mysql_error()));
  15. }
  16. while($r = mysql_fetch_array($q)) {
  17. ?>
  18. <table width=100%>
  19. <tr bgcolor=#e6e6e6>
  20. <td><?php echo $r[2] ?></td>
  21. <td><?php echo $r[5] ?></td>
  22. <td><?php echo "<a href=\"profil.php?user=" . $r[1] . "\">"  . $r[1] . "</a>" ?></td>
  23. </tr>
  24. </table>
  25. <table width=100%>
  26. <tr bgcolor=#6e6e6e>
  27. <td>
  28. <?php echo $r[3] ?><br><br>
  29. </td>
  30. </tr>
  31. <tr bgcolor=#e6e6e6>
  32. <td><?php echo '<a href="skrypt.php?usun='.$r[6].'">Usuń</a>'; ?></td>
  33. </tr>
  34. </table>
  35. <hr>
  36. <?php
  37. }
  38. include("dol.php");
  39. ?>

i wywala mi taki błąd:
Parse error: syntax error, unexpected T_BOOLEAN_AND, expecting ',' or ')' in /var/www/virtual/rekrutacjadogildii.cba.pl/wiadomosci2.php on line 13
Czy zamiast
  1. <?php
  2. <form action="wiadomosci2.php" method="post">
  3.       <td><button style="border: 0px; background-color: #e6e6e6;" type="submit" name="przeczytana">przeczytana</button><button style="border: 0px; background-color: #e6e6e6;" type="submit" name="kasuj">kasuj</button></td>
  4. </form>
  5. ?>
nie powinno byc porostu:
  1. <?php echo '<a href="skrypt.php?usun='.$r[6].'">Usuń</a>' ?>

Bardzo Was jeszcze prosze o wyrozumialosc sadsmiley02.gif
kfc4
  1. <?php
  2. if (isset($_GET['usun'] && is_numeric($_GET['usun']) {
  3. ?>

na
  1. <?php
  2. if (isset($_GET['usun']) && is_numeric($_GET['usun'])) {
  3. ?>

Skopiowałeś co napisałem bez sprawdzania czy dobrze, a ja zapomniałem domknąć nawiasów. Ach te przyzwyczajenia, zawsze domyka za mnie edytor...
klapaucius
  1. <?php
  2. include("baza.php");
  3. include("gora.php");
  4. $przeczytana = 1;
  5. $q = mysql_query("SELECT login, od, temat, tresc, przeczytana, date, id FROM wiadomosci WHERE login='$user'");
  6. ?>
  7. <b><center>Wiadomości:</center></b>
  8. <br>
  9. <a href="wiadomosci.php">:: Nowa wiadomość</a><br>
  10. :: Kasuj wszystkie wiadomości<br><hr>
  11.  
  12. <?php
  13. if (isset($_GET['usun']) && is_numeric($_GET['usun'])) {
  14.       mysql_fetch_array(mysql_query("DELETE FROM `wiadomosci` WHERE `id`=".$_GET['usun']."") or die (mysql_error()));
  15. }
  16. while($r = mysql_fetch_array($q)) {
  17. ?>
  18. <table width=100%>
  19. <tr bgcolor=#e6e6e6>
  20. <td><?php echo $r[2] ?></td>
  21. <td><?php echo $r[5] ?></td>
  22. <td><?php echo "<a href=\"profil.php?user=" . $r[1] . "\">"  . $r[1] . "</a>" ?></td>
  23. </tr>
  24. </table>
  25. <table width=100%>
  26. <tr bgcolor=#6e6e6e>
  27. <td>
  28. <?php echo $r[3] ?><br><br>
  29. </td>
  30. </tr>
  31. <tr bgcolor=#e6e6e6>
  32. <form action="wiadomosci2.php" method="post">
  33. <?php echo '<a href="skrypt.php?usun='.$r[6].'">'; ?>
  34.      <td><button style="border: 0px; background-color: #e6e6e6;" type="submit" name="usun">
  35.      Usuń
  36.      </button></td>
  37. <?php echo '</a>'; ?>
  38. </form>
  39. </tr>
  40. </table>
  41. <hr>
  42. <?php
  43. }
  44. include("dol.php");
  45. ?>

Zrobilem co takiego i teraz wogole nie kasujewiadomosci... Nie wyskakuje zaden blad ani nic... Cos mi sie zdaje ze chyba sobie to cale php odpuszcze bo to nie dla mnie ;/

@edit

Haha dziala! Nie wiem jak to mozliwe ale dziala... Poprostu pobralem najpierw edytor php, a potem zaczolem robic ten skrypt od nowa i... Dziala!! biggrin.gif Faktycznie wczesniej mailem zagmatwane jak cholera... Kurde ale tyle nad tym siedzialem i sie glowilem i jeszcze przede wszystkim Was dreczylem. Dzieki piekne szczegolnie dla kfc4 biggrin.gif Nie wiem jak sie moge odwdzieczyc ... dam ci chociaz buziaka :* biggrin.gif pozdro
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.