Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP][MySQL] Usuwanie rekordów z bazy
Forum PHP.pl > Forum > Przedszkole
Usuwanie rekordów
Wykonałem stronkę która wyświetla prosta bazę danych leków z możliwością ich usunięcia za pomocą przycisku.
http://pics.tinypic.pl/i/00271/9iji7clvpz8g.jpg

Przycisk pobiera aktualne ID wiersza, po naciśnięciu przekierowuje póki co na pustą stronę.
http://files.tinypic.pl/i/00271/oxigjy7toy9m.jpg

Chce aby po przekierowaniu wyświetlało mi się pytanie o usunięcie danego rekordu z pobranym ID z poprzedniej strony. Do wyboru byłoby Tak usuń oraz nie, nie usuwaj lecz nie wiem gdzie dokładnie mam zamieścić kod do usuwania(na pierwszej stronie czy też na drugiej pustej). Projekt to mój własny pomysł na naukę PHP,MySQL i HTMLA 1.0 w jednym, dlatego proszę o wyrozumiałość i wyjaśnienie mi co musiałbym zrobić i wiedzieć.

Pierwsza strona z przedstawionych na zdjęciu. Posiada ona w sobie taki kod. Druga ze względu na brak pomysłu ,nie ma zapisanego skryptu.
  1. <?php
  2. ob_start(); error_reporting(E_ALL ^ E_NOTICE);
  3. include 'db.php'; // połączenie się z bazą danych
  4. $link = mysql_connect("localhost", "root", "x")or die("Could not connect");
  5. $mysql_baza = 'szpital';
  6. // połączenie ze schematem bazy danych
  7. mysql_select_db($mysql_baza) or die('Błąd: nie udało się wybrać schematu bazy danych.');
  8.  
  9. $pobierz = "SELECT * FROM lek";
  10. $wynik = mysql_query($pobierz) or die("Złe zapytanie");
  11. {
  12. echo '<tr >
  13. <td width="130px" height="10px"><b>ID Leku</b></td>
  14. <td width="130px" height="10px"><b>Nazwa leku</b></td>
  15. <td width="130px" height="10px"><b>Producent leku</b></td>
  16. <td width="130px" height="10px"><b>Cena leku</b></td>
  17. <td width="130px" height="10px"><b>Kupujacy</b></td>
  18. <td width="130px" height="10px"><b>Usuń lek:</b></td>
  19. </tr>';
  20. while ($row = mysql_fetch_array($wynik)) {
  21. echo "<tr>";
  22. echo "<td>$row[ID_lek]</td>";
  23. echo "<td>$row[Nazwa_lek]</td>";
  24. echo "<td>$row[Producent_lek]</td>";
  25. echo "<td>$row[Cena_lek]</td>";
  26. echo "<td>$row[Kupujacy_lek]</td>";
  27. echo "<td>
  28. <form action='usun.php' method='get'name='usun'>
  29. <input type='submit' name='pusun' value='\"".$row['ID_lek']."\"'/>
  30. </form>
  31. <td> ";
  32. }
  33. }
  34. mysql_close($link);
  35. ?>
  36. <?php
  37. if (isset($_GET['pusun'])) {
  38. header("location: usun1.php");
  39. exit();
  40. }
  41. ?>
_Borys_
W skrócie i celach testowych plik usun1.php:

  1. <?php
  2.  
  3. var_dump($_GET);
  4. $link = mysql_connect('localhost', 'username', 'password')or die(mysql_error());
  5. mysql_select_db('szpital',$link)or die(mysql_error());
  6. mysql_query("DELETE FROM lek WHERE ID_lek = '{$_GET['pusun']}'") or die(mysql_error());
  7. mysql_close($link);
  8.  
  9. ?>


W twoim formularzu usunąłem cudzysłowy w submit value aby było łatwiej bo w $_GET było potem z cudzysłowami i trzebaby potem je pousuwać albo w formularzu stworzyć jeszcze <input type = "hidden".../> i z tego pobierać dane.
  1. ...
  2. <form action='usun.php' method='get'name='usun'>
  3. <input type='submit' name='pusun' value='".$row['ID_lek']."'/>
  4. </form>
  5. ...

Usuwanie rekordów
Po tym co poradziłeś oraz przeróbce własnego kodu, zrezygnowałem ze przeniesienia pytania na kolejną stronę. Wyświetla się na tej samej lecz po zastosowaniu var_dump($GET) wyświetliło coś takiego: array(1) { ["pusun"]=> string(2) "10" } Chcesz usuną lek o ID 10? Tak | Nie , a następnie array(0) { } .


http://images.tinypic.pl/i/00272/2v8vtzpjmuqo.jpg
http://images.tinypic.pl/i/00272/14r1wu4b64ik.jpg

Skryptu do podglądu
  1. <?php
  2. ob_start(); error_reporting(E_ALL ^ E_NOTICE);
  3. include 'db.php'; // połączenie się z bazą danych
  4. $link = mysql_connect("localhost", "root", "x")or die("Could not connect");
  5. $mysql_baza = 'szpital';
  6. // połączenie ze schematem bazy danych
  7. mysql_select_db($mysql_baza) or die('Błąd: nie udało się wybrać schematu bazy danych.');
  8.  
  9. $pobierz = "SELECT * FROM lek"; //pobieranie danych
  10. $wynik = mysql_query($pobierz) or die("Złe zapytanie");
  11. { //wyświetlenie nazw kolumn
  12. echo '<tr >
  13. <td width="130px" height="10px"><b>ID Leku</b></td>
  14. <td width="130px" height="10px"><b>Nazwa leku</b></td>
  15. <td width="130px" height="10px"><b>Producent leku</b></td>
  16. <td width="130px" height="10px"><b>Cena leku</b></td>
  17. <td width="130px" height="10px"><b>Kupujacy</b></td>
  18. <td width="130px" height="10px"><b>Usuń lek:</b></td>
  19. </tr>';
  20. // pobieranie z bazy danych
  21. while ($row = mysql_fetch_array($wynik)) {
  22. echo "<tr>";
  23. echo "<td>$row[ID_lek]</td>";
  24. echo "<td>$row[Nazwa_lek]</td>";
  25. echo "<td>$row[Producent_lek]</td>";
  26. echo "<td>$row[Cena_lek]</td>";
  27. echo "<td>$row[Kupujacy_lek]</td>";
  28. echo "<td>
  29. <form action='usun.php' method='get'name='usun'>
  30. <input type='submit' name='pusun' value='".$row['ID_lek']."'/>
  31. </form>
  32. <td> ";
  33. }
  34. }
  35. mysql_close($link);
  36. ?>
  37. <?php
  38. var_dump($_GET);
  39. $link = mysql_connect('localhost', 'root', 'x')or die(mysql_error());
  40. mysql_select_db('szpital',$link)or die(mysql_error());
  41. // Usuwanie leku
  42. if (isset($_GET['pusun'])) {
  43. echo '<span class="pyt">Chcesz usuną lek o ID ' . $_GET['pusun'] . '? <a href="usun.php?usunid='.$_GET['pusun'].'">Tak</a> | <a href="baza.php">Nie</a></span>';
  44. exit();
  45. }
  46. if (isset($_GET['usunid'])) {
  47. // usuwanie leku
  48. $idu = $_GET['usunid'];
  49. $sql = mysql_query("DELETE from szpital.lek WHERE ID_lek='".$row['ID_lek']."' LIMIT 1") or die (mysql_error());
  50. header("location: usun.php");
  51. exit();
  52. }
  53. ?>
nospor
Za drugim razem widzisz pustą tablice, bo robisz przecież przekierowanie:
header("location: usun.php");
po usunieciu. A nie usuwa ci, bo dane do usuwania z jakieś niepojętego powodu bierzesz z $row
$sql = mysql_query("DELETE from szpital.lek WHERE ID_lek='".$row['ID_lek']."' LIMIT 1") or die (mysql_error());

Przecież rekord co usuwasz masz w $_GET i stamtad masz go brac
$sql = mysql_query("DELETE from szpital.lek WHERE ID_lek='".$_GET['usunid'])."' LIMIT 1") or die (mysql_error());
Usuwanie rekordów
Mój błąd, pewnie upierdliwie to wyglądało. Dziękuje za pomoc w zlokalizowaniu błędu.
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.