Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Usuwanie notatek administracyjnych - metoda $_GET
Kerth
post 14.07.2014, 14:03:42
Post #1





Grupa: Zarejestrowani
Postów: 250
Pomógł: 1
Dołączył: 6.08.2012

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


Witam,
zrobiłem system notatek administracyjnych w moim panelu administracyjnym. Z dodawaniem notatek wszystko jest w porządku. Gorzej jest z ich usuwaniem. Mam taki kod:
  1. $pobierzNotatka = $db->prepare("SELECT `id`, `nick`, `notatka`, `data` FROM `notatki_admin`");
  2.  
  3. if(!$pobierzNotatka->execute()){
  4. throw new Exception("Błąd zapytania z NOTATKAMI ADMINISTRATORÓW.");
  5. }
  6.  
  7. foreach($pobierzNotatka as $row_not_admin)
  8. {
  9. echo "</br>Nick: \t";
  10. echo('<span class = "red">');
  11. echo ''.$row_not_admin['nick'].'</br>' ;
  12. echo('</span>');
  13.  
  14. echo "Data: \t";
  15. echo('<span class = "red">');
  16. echo ''.$row_not_admin['data'].'</br>';
  17. echo('</span>');
  18.  
  19. echo "Notatka: \t";
  20. echo('<span class = "red">');
  21. echo ''.$row_not_admin['notatka'].'</br>';
  22. echo('</span>');
  23.  
  24. echo '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<a href="notatki.php?id='.$row_not_admin['id'].'">[X]</a></br>';
  25. if(isset($_GET["id"]))
  26. {
  27. $id = str_replace("\'","\\\'",$_GET["id"]);
  28. $usunNotatka = $db->prepare("DELETE FROM `notatki_admin` WHERE `id` = :id");
  29. $usunNotatka->bindValue(":id", $id, PDO::PARAM_INT);
  30. }
  31. }


Gdy kliknę na [X] w linku poprawnie pobiera id notatki. Niestety na tym się kończy. Notatka się nie usuwa. Co zrobić? Jakieś pomysły/rady?
Go to the top of the page
+Quote Post
Damonsson
post 14.07.2014, 14:07:59
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


  1. if(isset($_GET["id"]))
  2. {
  3. $usunNotatka = $db->prepare("DELETE FROM `notatki_admin` WHERE `id` = :id");
  4. $usunNotatka->bindValue(":id", $id, PDO::PARAM_INT);
  5. $usunNotatka->execute();
  6. }


Ten post edytował Damonsson 14.07.2014, 14:08:23
Go to the top of the page
+Quote Post
Kerth
post 14.07.2014, 14:17:13
Post #3





Grupa: Zarejestrowani
Postów: 250
Pomógł: 1
Dołączył: 6.08.2012

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


Niestety nie działa. Po próbowałem i mam coś takiego:

  1. $pobierzNotatka = $db->prepare("SELECT `id`, `nick`, `notatka`, `data` FROM `notatki_admin`");
  2.  
  3. if(!$pobierzNotatka->execute()){
  4. throw new Exception("Błąd zapytania z NOTATKAMI ADMINISTRATORÓW.");
  5. }
  6.  
  7. foreach($pobierzNotatka as $row_not_admin)
  8. {
  9. echo "</br>Nick: \t";
  10. echo('<span class = "red">');
  11. echo ''.$row_not_admin['nick'].'</br>' ;
  12. echo('</span>');
  13.  
  14. echo "Data: \t";
  15. echo('<span class = "red">');
  16. echo ''.$row_not_admin['data'].'</br>';
  17. echo('</span>');
  18.  
  19. echo "Notatka: \t";
  20. echo('<span class = "red">');
  21. echo ''.$row_not_admin['notatka'].'</br>';
  22. echo('</span>');
  23.  
  24. echo '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<a href="notatki.php?id='.$row_not_admin['id'].'">[X]</a></br>';
  25. if(isset($_GET["id"]))
  26. {
  27. $usunNotatka = $db->prepare("DELETE FROM `notatki_admin` WHERE `id` = :id");
  28. $usunNotatka->bindValue(":id", $row_not_admin['id'], PDO::PARAM_INT);
  29. $usunNotatka->execute();
  30. }
  31. }


lecz ten kod usuwa wszystkie notatki. I jakby tego było mało link nie reaguje na 1 kliknięcie zadziała dopiero po drugim(i wszystko usuwa). Nie wiem czemu. Co jest nie tak?
Go to the top of the page
+Quote Post
Damonsson
post 14.07.2014, 14:19:35
Post #4





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Zgubiłem jedną linijkę biggrin.gif

Poza tym włącz sobie wyświetlanie błędów, powinno Ci od razu wyskoczyć, że nie masz $id zdefiniowanego.

  1. if(isset($_GET["id"]))
  2. {
  3. $id = $_GET["id"]; // str_replace jest niepotrzebne jak bindujesz dane
  4. $usunNotatka = $db->prepare("DELETE FROM `notatki_admin` WHERE `id` = :id");
  5. $usunNotatka->bindValue(":id", $id, PDO::PARAM_INT); // tu też był błąd. Po co to dodałeś? "$row_not_admin['id']" ?
  6. $usunNotatka->execute();
  7. }





Ten post edytował Damonsson 14.07.2014, 14:22:06
Go to the top of the page
+Quote Post
Kerth
post 14.07.2014, 14:44:45
Post #5





Grupa: Zarejestrowani
Postów: 250
Pomógł: 1
Dołączył: 6.08.2012

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


Ale czemu trzeba kliknąć 2 razy na [X] żeby usunęło?
Go to the top of the page
+Quote Post
Turson
post 14.07.2014, 14:47:35
Post #6





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


foreach($pobierzNotatka as $row_not_admin)
Co to ma być questionmark.gif Gdzie w ogóle podział się jakich fetch()
Go to the top of the page
+Quote Post
Kerth
post 14.07.2014, 14:54:05
Post #7





Grupa: Zarejestrowani
Postów: 250
Pomógł: 1
Dołączył: 6.08.2012

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


Ale jak ja mam użyć do tego fetch()? Przecież zwracam kilka wartości(więc dałem pętlę). Jak mam tego użyć?
Go to the top of the page
+Quote Post
Turson
post 14.07.2014, 14:56:21
Post #8





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


W PDO powinno to być tak

  1. $pobierzNotatka = $db->prepare("SELECT `id`, `nick`, `notatka`, `data` FROM `notatki_admin`");
  2.  
  3. if(!$pobierzNotatka->execute()){
  4. throw new Exception("Błąd zapytania z NOTATKAMI ADMINISTRATORÓW.");
  5. }
  6.  
  7. $rows = $pobierzNotatka->fetchAll(PDO::FETCH_ASSOC);
  8. foreach($rows as ....){
  9.  
  10. }
Go to the top of the page
+Quote Post
Kerth
post 14.07.2014, 17:04:55
Post #9





Grupa: Zarejestrowani
Postów: 250
Pomógł: 1
Dołączył: 6.08.2012

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


Cytat(Turson @ 14.07.2014, 15:56:21 ) *
W PDO powinno to być tak

  1. $pobierzNotatka = $db->prepare("SELECT `id`, `nick`, `notatka`, `data` FROM `notatki_admin`");
  2.  
  3. if(!$pobierzNotatka->execute()){
  4. throw new Exception("Błąd zapytania z NOTATKAMI ADMINISTRATORÓW.");
  5. }
  6.  
  7. $rows = $pobierzNotatka->fetchAll(PDO::FETCH_ASSOC);
  8. foreach($rows as ....){
  9.  
  10. }


No tak, ale powiedz co to zmienia? Działanie jest takie samo. A pomimo tego nadal trzeba 2 razy kliknąć, żeby usunąć.
Go to the top of the page
+Quote Post
Damonsson
post 14.07.2014, 17:42:14
Post #10





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Teoretycznie nie powinieneś mieć w ogóle tego [X] widocznego, praktycznie masz.

Daj to:

  1. if(isset($_GET["id"]))
  2. {
  3. $id = $_GET["id"]; // str_replace jest niepotrzebne jak bindujesz dane
  4. $usunNotatka = $db->prepare("DELETE FROM `notatki_admin` WHERE `id` = :id");
  5. $usunNotatka->bindValue(":id", $id, PDO::PARAM_INT); // tu też był błąd. Po co to dodałeś? "$row_not_admin['id']" ?
  6. $usunNotatka->execute();
  7. }


na początek pliku. Może teraz nie trzeba będzie klikać 2 razy.
Go to the top of the page
+Quote Post
Kerth
post 14.07.2014, 19:12:24
Post #11





Grupa: Zarejestrowani
Postów: 250
Pomógł: 1
Dołączył: 6.08.2012

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


Cytat(Damonsson @ 14.07.2014, 18:42:14 ) *
Teoretycznie nie powinieneś mieć w ogóle tego [X] widocznego, praktycznie masz.

Daj to:

  1. if(isset($_GET["id"]))
  2. {
  3. $id = $_GET["id"]; // str_replace jest niepotrzebne jak bindujesz dane
  4. $usunNotatka = $db->prepare("DELETE FROM `notatki_admin` WHERE `id` = :id");
  5. $usunNotatka->bindValue(":id", $id, PDO::PARAM_INT); // tu też był błąd. Po co to dodałeś? "$row_not_admin['id']" ?
  6. $usunNotatka->execute();
  7. }


na początek pliku. Może teraz nie trzeba będzie klikać 2 razy.


A to coś z tym [X] jest nie tak? Nadal gdy dam na początek trzeba 2 razy kliknąć. Pierwszy raz, żeby "wczytało link do przeglądarki", drugi raz żeby usunąć. A chodzi mi o to, żeby od razu usuwało.
Go to the top of the page
+Quote Post
Turson
post 14.07.2014, 19:17:44
Post #12





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


  1. if(isset($_GET["id"]))
  2. {
  3. $id = str_replace("\'","\\\'",$_GET["id"]);
  4. $usunNotatka = $db->prepare("DELETE FROM `notatki_admin` WHERE `id` = :id");
  5. $usunNotatka->bindValue(":id", $id, PDO::PARAM_INT);
  6. }

nie trzymaj tego w pętli...
Go to the top of the page
+Quote Post
Kerth
post 14.07.2014, 19:24:31
Post #13





Grupa: Zarejestrowani
Postów: 250
Pomógł: 1
Dołączył: 6.08.2012

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


Cytat(Turson @ 14.07.2014, 20:17:44 ) *
  1. if(isset($_GET["id"]))
  2. {
  3. $id = str_replace("\'","\\\'",$_GET["id"]);
  4. $usunNotatka = $db->prepare("DELETE FROM `notatki_admin` WHERE `id` = :id");
  5. $usunNotatka->bindValue(":id", $id, PDO::PARAM_INT);
  6. }

nie trzymaj tego w pętli...


Nie ma to znaczenia gdzie jest, czy w pętli czy nie. I tak jest tak samo.
Go to the top of the page
+Quote Post
johny_s
post 14.07.2014, 19:28:05
Post #14





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


a nie masz czasem tak że najpierw wyświetlasz/pobierasz dane a dopiero potem kasujesz?
Go to the top of the page
+Quote Post
Damonsson
post 14.07.2014, 19:35:10
Post #15





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Skoro kazałem mu dać to na początek pliku i odpisał, że nie ma to znaczenia to widocznie nie.

Ten post edytował Damonsson 14.07.2014, 19:37:38
Go to the top of the page
+Quote Post
Kerth
post 14.07.2014, 19:54:58
Post #16





Grupa: Zarejestrowani
Postów: 250
Pomógł: 1
Dołączył: 6.08.2012

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


Cytat(johny_s @ 14.07.2014, 20:28:05 ) *
a nie masz czasem tak że najpierw wyświetlasz/pobierasz dane a dopiero potem kasujesz?


Tak dokładnie. Najpierw wyświetlam/pobieram dane a dopiero potem kasuję.
Go to the top of the page
+Quote Post
johny_s
post 14.07.2014, 20:01:14
Post #17





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


No a sprawdzasz w bazie czy na stronie czy się notatka usuneła?
Go to the top of the page
+Quote Post

Reply to this 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: 15.07.2025 - 01:44