Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Usuwanie rekordu z bazy danych, Potwierdzenie chęci usunięcia danych
BraveSoul
post 18.01.2013, 21:44:49
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 29.11.2012

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


Witam,
zrobiłam bardzo prostą bazę danych (phpMyAdmin), do której można dodawać dane, edytować i usuwać je za pomocą przeglądarki.
wszystko mi ładnie i pięknie działa, ale nie ma zapytania, czy na pewno chcę usunąć rekord.

To znaczy, ze jak klikam "Usuń" to mi się te dane od razu usuwają, bez żadnego komunikatu proszącego o potwierdzenie.

A ja chciałabym, żeby po kliknięciu "usuń" wyskoczył komunikat: "Czy na pewno chcesz usunąć dane?"
i dwa przyciski Tak i Nie smile.gif z czego tak usuwa, a nie prowadzi do strony głównej.

no i nie wiem jak to zrobić.. czy znalazłaby się tutaj jakaś dobra dusza chętna do pomocy?

takie mam kody:
strona główna:
  1. <html>
  2. <head>
  3. <title>PROJEKT</title>
  4. </head>
  5. <body background="tlo.jpg" bgproperties="fixed">
  6. <p align="center">
  7.  
  8.  
  9. <font size="5">
  10.  
  11.  
  12. <?php
  13.  
  14.  
  15. function connection() {
  16. // serwer
  17. $mysql_server = "localhost";
  18. // admin
  19. $mysql_admin = "root";
  20. // hasło
  21. $mysql_pass = "haslo";
  22. // nazwa baza
  23. $mysql_db = "system_hotelowy";
  24. // nawiązujemy połączenie z serwerem MySQL
  25. @mysql_connect($mysql_server, $mysql_admin, $mysql_pass)
  26. or die(mysql_error());
  27. // łączymy się z bazą danych
  28. @mysql_select_db($mysql_db)
  29. }
  30.  
  31.  
  32. /* zapytanie do konkretnej tabeli */
  33.  
  34. $wynik = mysql_query("SELECT * FROM system_hotelowy.klient")
  35.  
  36.  
  37.  
  38.  
  39. /*
  40.  
  41. wyświetlamy wyniki, sprawdzamy,
  42.  
  43. czy zapytanie zwróciło wartość większą od 0
  44.  
  45. */
  46.  
  47. if(mysql_num_rows($wynik) > 0) {
  48.  
  49. /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
  50.  
  51. echo "<table cellpadding=\"2\" border=1>";
  52.  
  53.  
  54. while($r = mysql_fetch_object($wynik)) {
  55.  
  56. echo "<tr>";
  57.  
  58. echo "<td>".$r->ID_Klient."</td>";
  59.  
  60. echo "<td>".$r->Imie."</td>";
  61.  
  62. echo "<td>".$r->Nazwisko."</td>";
  63.  
  64. echo "<td>".$r->Miejscowosc."</td>";
  65.  
  66. echo "<td>".$r->Ulica."</td>";
  67.  
  68. echo "<td>".$r->Kod_Pocztowy."</td>";
  69.  
  70. echo "<td>".$r->Numer_Domu."</td>";
  71.  
  72. echo "<td>".$r->Numer_Lokalu."</td>";
  73.  
  74. echo "<td>".$r->Numer_Telefonu."</td>";
  75.  
  76. echo "<td>
  77.  
  78. <a href=\"del.php?a=del&ID_Klient={$r->ID_Klient}\">Usuń</a>
  79.  
  80. <a href=\"edit.php?a=edit&ID_Klient={$r->ID_Klient}\">Edytuj</a>
  81.  
  82.  
  83. </td>";
  84.  
  85. echo "</tr>";
  86.  
  87. }
  88.  
  89. echo "</table>";
  90. echo "<td>
  91.  
  92. <a href=\"dodajFORM.php\">DODAJ</a>
  93.  
  94. </td>";
  95. }
  96.  
  97.  
  98. ?>
  99.  
  100.  
  101. </font>
  102. </p>
  103. </body>
  104. </html>


i strona usuwająca:
  1. <html>
  2. <head>
  3. <title>PROJEKT</title>
  4. </head>
  5. <body background="tlo.jpg" bgproperties="fixed">
  6. <p align="center">
  7. <font size="5">
  8.  
  9. <?php
  10.  
  11.  
  12. $a = trim($_GET['a']);
  13. $ID_Klient = trim($_GET['ID_Klient']);
  14.  
  15. if($a == 'del' and !empty($ID_Klient)) {
  16.  
  17. /* usuwamy rekord */
  18. mysql_query("DELETE FROM system_hotelowy.klient WHERE ID_Klient='$ID_Klient'")
  19. or die('Błąd zapytania: '.mysql_error());
  20.  
  21. echo 'Rekord został usunęty z bazy';
  22.  
  23.  
  24.  
  25. echo "</table>";
  26. echo "<td>
  27. <br /> <br />
  28. <a href=\"index.php\">STRONA GŁÓWNA</a>
  29.  
  30. </td>";
  31. }
  32.  
  33. ?>
  34.  
  35.  
  36. </font>
  37. </p>
  38. </body>
  39. </html>

Go to the top of the page
+Quote Post
brzoza91
post 18.01.2013, 22:14:06
Post #2





Grupa: Zarejestrowani
Postów: 39
Pomógł: 4
Dołączył: 9.05.2012

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


  1. if($a == 'del' and !empty($ID_Klient)) {
  2.  
  3. //WYSWIETL TUTAJ COS TAKIEGO:
  4. echo 'czy chcesz usunac';
  5. echo '<a href=\'index.php\'>[nie]</a>';
  6. echo'< a href=\"del.php?a=del&ID_Klient={$r->ID_Klient}&confirm\">[tak]</a> ';
  7.  
  8. if(isset($_GET['confirm']){
  9. mysql_query("DELETE FROM system_hotelowy.klient WHERE ID_Klient='$ID_Klient'")
  10. or die('Błąd zapytania: '.mysql_error());
  11.  
  12. echo 'Rekord został usunęty z bazy';
  13.  
  14. }
  15.  
  16. echo "</table>";
  17. echo "<td>
  18. <br /> <br />
  19. <a href=\"index.php\">STRONA GŁÓWNA</a>
  20.  
  21. </td>";
  22. }


zrób coś na podobnej zasadzie, nie gwarantuje ze jak przekliesz ten kod to zadziała.

ale zasada jest taka że:
1.wyświetl zapytanie o cheć usunięcia + linki
2. nie odsyła Cie do index
3. tak odlsyla Cie do tego samego miejsca+ jakaś zmienna w GET
4. jezeli zmienna istnieje to usuwasz dopiero wtedy

Ten post edytował brzoza91 18.01.2013, 22:15:26
Go to the top of the page
+Quote Post
adek-
post 19.01.2013, 10:42:57
Post #3





Grupa: Zarejestrowani
Postów: 124
Pomógł: 2
Dołączył: 19.04.2007
Skąd: Częstochowa

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


Ja robię to trochę w inny sposób i myślę że dużo prostszy... fakt nadaje się to tylko do buttonów, ale wyskakuje przyjemne okienko z zapytaniem i potwierdzeniem OK/Anuluj
  1. echo '<form class="form" action="" method="post">
  2. <input type="hidden" name="id" value="' . $wymien['id_plikow'] . '"/>
  3. <input type="submit" name="action" value="Edytuj" class="button small" />
  4. <input type="submit" name="action" value="x" onclick="return Defuse();"/>
  5. </form>';
  6. echo "<script type='text/javascript'>function Defuse() {return confirm('Czy na pewno chcesz usunąć?');}</script>\n";

tak więc dodaję w inpucie wartość onclick, a poniżej formatki wrzucam kawałeczek tego JS

Ten post edytował adek- 19.01.2013, 10:53:51
Go to the top of the page
+Quote Post
BraveSoul
post 19.01.2013, 11:40:41
Post #4





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 29.11.2012

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


Cytat(adek- @ 19.01.2013, 10:42:57 ) *
Ja robię to trochę w inny sposób i myślę że dużo prostszy... fakt nadaje się to tylko do buttonów, ale wyskakuje przyjemne okienko z zapytaniem i potwierdzeniem OK/Anuluj

tak więc dodaję w inpucie wartość onclick, a poniżej formatki wrzucam kawałeczek tego JS


ok, ale gdzie dokładnie to dodajesz?
zapomniałam napisać, że jestem kompletnie zielona i nie wiem nic o php, ani o JS ani w ogóle smile.gif

dodać to na stronie usuwania?

Cytat(brzoza91 @ 18.01.2013, 22:14:06 ) *
zrób coś na podobnej zasadzie, nie gwarantuje ze jak przekliesz ten kod to zadziała.

ale zasada jest taka że:
1.wyświetl zapytanie o cheć usunięcia + linki
2. nie odsyła Cie do index
3. tak odlsyla Cie do tego samego miejsca+ jakaś zmienna w GET
4. jezeli zmienna istnieje to usuwasz dopiero wtedy


wyrzuca mi błąd:
Parse error: syntax error, unexpected '{' in C:\Program Files\xampp\htdocs\del.php on line 21

linia 21:
  1. if(isset($_GET['confirm']){


Cytat(BraveSoul @ 19.01.2013, 11:23:26 ) *
linia 21:
  1. if(isset($_GET['confirm']){


dobra, znalazłam, brakowało tylko nawiasu. mam jednak inny problem
gdy kliknę na NIE to wróci mi do strony głównej, ok, jest dobrze,
ale jak klikam na TAK to wyświetla mi się OBOK komunikatu TAK/NIE, który nie znika, napis rekord został usunięty,
ale rekord wcale nie zostaje usunięty. to nie usuwa tego rekordu z bazy...

Ten post edytował BraveSoul 19.01.2013, 11:16:18
Go to the top of the page
+Quote Post
brzoza91
post 19.01.2013, 12:04:11
Post #5





Grupa: Zarejestrowani
Postów: 39
Pomógł: 4
Dołączył: 9.05.2012

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


  1. if($a == 'del' and !empty($ID_Klient)) {
  2.  
  3. if(isset($_GET['confirm'])){
  4. mysql_query("DELETE FROM system_hotelowy.klient WHERE ID_Klient='$ID_Klient'")
  5. or die('Błąd zapytania: '.mysql_error());
  6.  
  7. echo 'Rekord został usunęty z bazy';
  8. } else {
  9. echo 'czy chcesz usunac';
  10. echo '<a href=\'index.php\'>[nie]</a>';
  11. echo'< a href=\"del.php?a=del&ID_Klient={$r->ID_Klient}&confirm\">[tak]</a> ';
  12. }
  13.  
  14. }
Go to the top of the page
+Quote Post
BraveSoul
post 20.01.2013, 08:52:56
Post #6





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 29.11.2012

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


Cytat(brzoza91 @ 19.01.2013, 12:04:11 ) *
  1. if($a == 'del' and !empty($ID_Klient)) {
  2.  
  3. if(isset($_GET['confirm'])){
  4. mysql_query("DELETE FROM system_hotelowy.klient WHERE ID_Klient='$ID_Klient'")
  5. or die('Błąd zapytania: '.mysql_error());
  6.  
  7. echo 'Rekord został usunęty z bazy';
  8. } else {
  9. echo 'czy chcesz usunac';
  10. echo '<a href=\'index.php\'>[nie]</a>';
  11. echo'< a href=\"del.php?a=del&ID_Klient={$r->ID_Klient}&confirm\">[tak]</a> ';
  12. }
  13.  
  14. }



o dzięki, dzięki, coraz lepiej, teraz wygląda idealnie, ale nadal nie usuwa rekordu z bazy o.O

__________________________________
w sumie, nie rozumiem dlaczego nie usuwa,, nie pobiera ID na kolejnej stronie, czzy co?
bo przecież jest linia:

  1. mysql_query("DELETE FROM system_hotelowy.klient WHERE ID_Klient='$ID_Klient'")


która powinna usunąć ten rekord.. Wie ktoś?
Go to the top of the page
+Quote Post
brzoza91
post 20.01.2013, 18:02:59
Post #7





Grupa: Zarejestrowani
Postów: 39
Pomógł: 4
Dołączył: 9.05.2012

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


bo masz zle zapytanie. wypisze Ci ID_Klient='{$r->ID_Klient}'.
a powinno wypisać Ci id_klienta(numer a nie slowo)
bo zobacz usuwasz teraz klienta o numerze id='{$r->ID_Klient}' a taki przeciez nie istnieje bo id jest numerem

spróbuj usunać te klamry i cudzyslow. probuj az zamiast '{$r->ID_Klient}' wypisze Ci tam id jako numer.
Go to the top of the page
+Quote Post
BraveSoul
post 24.01.2013, 10:53:02
Post #8





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 29.11.2012

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


ok. dzięki, pomogłeś smile.gif
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: 19.04.2024 - 02:57