Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z usuwaniem rekordów
Forum PHP.pl > Forum > Przedszkole
sebap123
Witam

Mam taki kod (wyświetla on listę wszystkich uzarejestrowanych osób i ma też m.in. możliwość usuwania ich):
  1. $st=$getlist3['status'];
  2. $ID=$getlist3['id'];
  3. if ($st == 0)
  4. {
  5. if (isset($_POST['submit']))
  6. {
  7. $ID=trim($ID);
  8. $ID=strip_tags($ID);
  9. $authentication="UPDATE Uzytkownicy SET status = 1 WHERE id = '$ID'";
  10. mysql_query($authentication) or die ("Błąd");
  11. print "Aktywowano";
  12. }
  13. else
  14. {
  15. $ID=$_POST['ID'];
  16. $ID=trim($ID);
  17. $ID=strip_tags($ID);
  18. print "<form method='post'>";
  19. print "<input type='hidden' name='ID' value='$ID'>";
  20. print "<input type ='submit' name= 'submit' value= 'submit'></form>";
  21. }}
  22. else
  23. {
  24. print "Aktywny";
  25. }
  26. print "</td>";
  27. print "<td>";
  28. if (isset($_POST['submit']))
  29. {
  30. $ID=trim($ID);
  31. $ID=strip_tags($ID);
  32. $deluser="Delete from Uzytkownicy where id='$ID'";
  33. mysql_query($deluser) or die ("Could not delete user");
  34. print "X";
  35. }
  36. else
  37. {
  38. $ID=$_POST['ID'];
  39. $ID=trim($ID);
  40. $ID=strip_tags($ID);
  41. print "<form method='post'>";
  42. print "<input type='hidden' name='ID' value='$ID'>";
  43. print "<input type ='submit' name= 'submit' value= 'X'></form>";
  44. }
  45. print "</td></tr>";

Jednka nie do końca dziala opcja usuwania. o gdy nacisne ażeby usunął to on usuwa wszystkie osoby a nie tą jedna wybraną. Próbowałem juz różnych rzeczy ale nic nie mogę znaleźć. Spodziewam się, że błąd jest dość prosty bo skrypt o podobnym działaniu sprawuje się bardzo dobrze ale tutaj nie mam pomysłu o co chodzi.
Proszę o pomoc.
potreb
Zrób echo $deluser i zobaczy czy przekazuje ID jak nie to masz odpowiedź
sebap123
No wyświetla mi numery ID ale niestety jak klikne na jeden to wyświetla numery wszystkich.
A i jeszcze dodam (bo może to cos pomoże), że ten plik w którym jest ta instrukcja jest zaincludowany do innego pliku przy pomocy ktorego ykonuje wszystkie operacje (panelu admina)
Oto fragment kodu, bo nie wiem czy wszystko dobrze przedstawiłem (ten dokument z kodem nazywa sie display.php)
  1. <td style="width: 200px;"><p>menu</p></td>
  2. <td style="width: 575px;"><p>
  3. <?
  4. include 'display.php';
  5. require_once 'photo_display';
  6. ?></p>
  7. <p>&nbsp;</p></td>


A i co jeszcze zauważyłem to to, że rownież gdy chce usunąc jakąś pozycje to niedość, że wszystkim wyświetla się, że są usunięci to jeszcze aktywuje wszystkich (aktywacja jest tez w tym kodzie co pokazałem).
No teraz to juz zupełnie nie wiem co jest nie tak.
potreb
No bo jak masz to wszystko w pętli tak to jest, ten kod co przedstawiłeś nie jest całościowy, zresztą masz już odpowiedź co jest źle.
sebap123
No masz racje, że nie dałem całego kodu i o tej pętli zapomniałem wspomnieć
Oto cały kod (display.php tylko):
  1. <?
  2. require_once "includes/connect.php";
  3.  
  4. $getlist="Select * from Uzytkownicy order by id ASC";
  5. $getlist2=mysql_query($getlist) or die ("Could not get list");
  6. print "<table border='1'><tr><td>ID</td><td>Login</td><td>E-mail</td><td>Imie i nazwisko</td><td>Status</td><td>Pot.</td><td>Aktywuj</td><td>Usuń</td></tr>";
  7.  
  8. while ($getlist3=mysql_fetch_array($getlist2))
  9.  
  10. {
  11. print "<tr><td>$getlist3[id]</td><td>$getlist3[login]</td><td><a href ='mailto:$getlist3[email]'>$getlist3[email]</a></td><td>$getlist3[imie] $getlist3[nazwisko]</td><td>$getlist3[status]</td><td>$getlist3[au]</td>";
  12. print "<td>";
  13. $st=$getlist3['status'];
  14. $ID=$getlist3['id'];
  15. if ($st == 0)
  16. {
  17. if (isset($_POST['submit']))
  18. {
  19. $ID=trim($ID);
  20. $ID=strip_tags($ID);
  21. $authentication="UPDATE Uzytkownicy SET status = 1 WHERE id = '$ID'";
  22. mysql_query($authentication) or die ("Błąd");
  23. print "Aktywowano";
  24. }
  25. else
  26. {
  27. $ID=$_POST['ID'];
  28. $ID=trim($ID);
  29. $ID=strip_tags($ID);
  30. print "<form method='post'>";
  31. print "<input type='hidden' name='ID' value='$ID'>";
  32. print "<input type ='submit' name= 'submit' value= 'submit'></form>";
  33. }}
  34. else
  35. {
  36. print "Aktywny";
  37. }
  38. print "</td>";
  39. print "<td>";
  40. if (isset($_POST['submit']))
  41. {
  42. $ID=trim($ID);
  43. $ID=strip_tags($ID);
  44. $deluser="Delete from Uzytkownicy where id='$ID'";
  45. print "$deluser";
  46. //mysql_query($deluser) or die ("Could not delete user");
  47. //print "X";
  48. }
  49. else
  50. {
  51. $ID=$_POST['ID'];
  52. $ID=trim($ID);
  53. $ID=strip_tags($ID);
  54. print "<form method='post'>";
  55. print "<input type='hidden' name='ID' value='$ID'>";
  56. print "<input type ='submit' name= 'submit' value= 'X'></form>";
  57. }
  58. print "</td></tr>";
  59. }
  60. print"</table>";
  61. ?>

To jak proponujesz zmienic to żeby :uciec" z pętli w czasie usuwania i aktywacji?

Bo ja jakos nie moge na to wpaść
potreb
Delete i aktywację musisz dać poza pętle i przekazywać pojedynczo id
W pętli masz np listowanie użytkowników i w url przekazujesz id. np ?delete=12, active=12
  1. if(isset($_GET['delete']) && ctype_digit($_GET['delete'])) }
  2. // waruenk
  3. }


Dla active podobnie...
sebap123
Ok poprawilem. Działa juztroche lepiej ale nadal nie jest to to co chcialem.
Usuwa już i aktywuje urzytkownikow ale nie wyświetla informacji: Aktywowano czy tez X w tabeli w nowym skrypcie.
Oto jest nowy kod (to jest fragment od początku pętli bo wcześniej nic sie nie zmieniło):
  1. while ($getlist3=mysql_fetch_array($getlist2))
  2.  
  3. {
  4. print "<tr><td>$getlist3[id]</td><td>$getlist3[login]</td><td><a href ='mailto:$getlist3[email]'>$getlist3[email]</a></td><td>$getlist3[imie] $getlist3[nazwisko]</td><td>$getlist3[status]</td><td>$getlist3[au]</td>";
  5. print "<td>";
  6. $st=$getlist3['status'];
  7. $ID=$getlist3['id'];
  8. if ($st == 0)
  9. {
  10. print "<a href=admin.php?activ=$ID>Aktywuj</a>";
  11. }
  12. else
  13. {
  14. print "Aktywny";
  15. }
  16. print "</td>";
  17. print "<td>";
  18. print "<a href=admin.php?delete=$ID>Usuń</a>";
  19. print "</td></tr>";
  20. }
  21. print"</table>";
  22. if (isset($_GET['activ']) && ctype_digit($_GET['activ']))
  23. {
  24. $activ = $_GET['activ'];
  25. $authentication="UPDATE Uzytkownicy SET status = 1 WHERE id = '$activ'";
  26. mysql_query($authentication) or die ("Błąd");
  27. print "Aktywowano";
  28. }
  29. if (isset($_GET['delete']) && ctype_digit($_GET['delete']))
  30. {
  31. $delete = $_GET['delete'];
  32. $deluser="Delete from Uzytkownicy where id='$delete'";
  33. mysql_query($deluser) or die ("Could not delete user");
  34. print "X";
  35. }
  36. ?>


Co mogę zrobić żeby to działalo?

Czy może ktos mi pomóc?
potreb
Skoro nie pokazuje się aktywowano no to coś dziwnego jest w twoim skrypcie, skoro zapytanie się wykonuje;
Wywal or die po warunku i daj echo "jakis komunikat" przed i po warunku.
sebap123
Sam napis aktywowano jak i X pokazuja się jednak pokazują sie poza tabelą (dokładniej rzecz biorąc pod nią). Chodzi mi o to, żeby pojawialy się w komórkach w których byc powinny czyli jak jest napis aktywuj to w momencie kliknięcia aby zmienial się albo na aktywowano albo na aktywny (tutaj to juz wszystko jedno) to samo z usuń i X.
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.