Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak usunąć rekord z tabeli ?
Forum PHP.pl > Forum > PHP
alpin19
Witam
Po trudach dodaję rekordy do bazy danych. Teraz chcę mieć możliwość ich usuwania.
Wyświetlanie ich wygląda następująco:

  1.   <?php
  2.  // edycja.php
  3.  // podstrona służąca edycji i przeglądaniu wprowadzonych do bazy danych. 
  4.  // autor - Karol Lipnicki oraz wszelkie osoby które udzieliły mi jakiejkolwiek pomocy !
  5.  
  6.      $adres = &#092;"localhost\";
  7.      $uzytkownik = &#092;"alpin19\";
  8.      $haslo = &#092;"\";
  9.      $baza_danych = &#092;"domowa\";
  10.      
  11.      //połączenie z serwerem MySQL
  12.      $db = mysql_connect($adres, $uzytkownik, $haslo);
  13.      
  14.      //wybranie bazy danych
  15.      mysql_select_db ($baza_danych);
  16.      
  17.      $query = mysql_query(&#092;"SELECT * FROM `ksiegarnia` WHERE 1 LIMIT 0 , 30 \");
  18.             while($query_data = mysql_fetch_row($query))
  19.               {
  20. print(&#092;"<table bgcolor='#33390b' cellspacing='1' cellpadding='1' align='center' valign='middle'>\");
  21. print(&#092;"<tr>\");
  22.           print(&#092;"<td height='20' width='400' bgcolor='#9a9f75' align='center'>\");
  23.       print(&#092;"<font size=' ' color=' '>Nazwa Towaru</font>\");
  24.       print(&#092;"</td>\");
  25.       
  26.       print(&#092;"<td height='20' width='50' bgcolor='#9a9f75' align='center'>\");
  27.       print(&#092;"<font size=' ' color=' '>Sztuk</font>\");
  28.       print(&#092;"</td>\");
  29.       
  30.       print(&#092;"<td height='20' width='60' bgcolor='#9a9f75' align='center'>\");
  31.       print(&#092;"<font size=' ' color=' '>Cena</font>\");
  32.       print(&#092;"</td>\");
  33.       
  34.       print(&#092;"<td height='20' width='120' bgcolor='#9a9f75' align='center'>\");
  35.       print(&#092;"<font size=' ' color=' '>ISBN</font>\");
  36.       print(&#092;"</td>\");
  37.       
  38.       print(&#092;"<td height='20' width='120' bgcolor='#9a9f75' align='center'>\");
  39.       print(&#092;"<font size=' ' color=' '>EAN</font>\");
  40.       print(&#092;"</td>\");
  41.       
  42.       print(&#092;"<td height='20' width='120' bgcolor='#9a9f75' align='center'>\");
  43.       print(&#092;"<font size=' ' color=' '>Wytwórca</font>\");
  44.       print(&#092;"</td>\");
  45.       
  46.       print(&#092;"<td height='20' width='140' bgcolor='#9a9f75' align='center'>\");
  47.       
  48.       print(&#092;"</td>\");
  49. print(&#092;"</tr>\");
  50.  
  51. print(&#092;"<tr>\");
  52.  
  53. print(&#092;"<td height='20' width='400' bgcolor='#9a9f75' align='center'>\");
  54.           echo $query_data[0];
  55. print(&#092;"</td>\");
  56.  
  57. print(&#092;"<td height='20' width='50' bgcolor='#9a9f75' align='center'>\");
  58.           echo $query_data[1];
  59. print(&#092;"</td>\");
  60.  
  61. print(&#092;"<td height='20' width='60' bgcolor='#9a9f75' align='center'>\");
  62.           echo $query_data[2];
  63. print(&#092;"</td>\");
  64.  
  65. print(&#092;"<td height='20' width='120' bgcolor='#9a9f75' align='center'>\");
  66.           echo $query_data[3];
  67. print(&#092;"</td>\");
  68.  
  69. print(&#092;"<td height='20' width='120' bgcolor='#9a9f75' align='center'>\");
  70.           echo $query_data[4];
  71. print(&#092;"</td>\");
  72.           
  73. print(&#092;"<td height='20' width='120' bgcolor='#9a9f75' align='center'>\");
  74.           echo $query_data[5];
  75. print(&#092;"</td>\");
  76.  
  77. print(&#092;"<td height='20' width='140' bgcolor='#9a9f75' align='center'>\");
  78. print(&#092;"<form name='ksiegarnia1-edycja' action='$PHP_SELF' method='get'>\");
  79.           print(&#092;"<input type='submit' name='submit' value='Wyślij'> \");
  80.      print(&#092;"</form>\");
  81.  print(&#092;"</td>\");    
  82.  
  83. print(&#092;"</tr>\");
  84. print(&#092;"</table>\");
  85.           }
  86.      
  87.      echo mysql_error();
  88.      ?>


W tabeli jest 6 kolumn (0, 1, 2, 3, 4, 5) - żadna z tych wartości nie jest identyczna, poza polem "Cena" ($product_price").
czachor
Manual MySQL...
  1. DELETE
  2. FROM ksiegarnia WHERE pole = 'nazwa_produktu'
alpin19
Czahor - zapytanie MySQL'a znam, ale zastanawiam się jak to spiąc z SUBMIT'em lub chociaż jakimś button'em....
bigZbig
Generujesz przy każdym produkcie przykladowo taki link
  1. <?php
  2.  
  3. print '<a html=\"http://domena/usun.php?nazwa_produktu='.$nazwa_produktu.'&opcja=usun\">usun</a>';
  4.  
  5. ?>

a nastepnie w pliku usun.php wpisujesz
  1. <?php
  2.  
  3. if ($_GET['opcja']=='usun') $query = 'DELETE FROM ksiegarnia WHERE pole = \"'.$_GET['nazwa_produktu'].'\"';
  4. //itd
  5.  
  6. ?>
alpin19
Chodzi ci o takie umieszczenie tego kodu:
  1. <?php
  2. print(&#092;"<td height='20' width='60' bgcolor='#9a9f75' align='center'>\");
  3. echo $query_data[2];
  4. print &#092;"<a html='http://localhost/edytuj.php?nazwa_produktu='.$nazwa_produktu.'&opcja=usun'>usun</a>\"; //tutaj wstawiłem twój skrypt
  5. print(&#092;"</td>\");
  6. ?>
Ociu
To jeszcze zmień apostrofy na cudzysłowia.

Edit:
  1. <?php
  2. print &#092;"<a html='http://localh...
  3. ?>

?!
alpin19
Zrobiłem tak:
  1. <?php
  2. print(&#092;"<td height='20' width='140' bgcolor='#9a9f75' align='center'>\");
  3.  print(&#092;"<form name='ksiegarnia1-edycja' action='$PHP_SELF' method='get'>\");
  4. print(&#092;"<input type='submit' name='delete_record' value='Usuń'> \");
  5.  if($submit)
  6. {
  7. mysql_query (&#092;"DELETE FROM `ksiegarnia` WHERE `product_name` = 'HTML 4 - Ćwiczenia praktyczne ' 
  8.  AND `product_number` = '$product_number' 
  9.  AND `product_price` = '$product_price' 
  10.  AND `product_isbn` = '$product_isbn' 
  11.  AND `product_ean` = '$product_ean' 
  12.  AND `product_manufacture` = '$product_manufacture' 
  13.  AND `product_char` = '$product_char' 
  14.  AND `product_picture` = '$product_picture'&#092;");
  15. }
  16. ?>


Teraz czas na problem:
Jeśli za $product_[...] podstawię rzeczywistą nazwę, czyli naprzykład:
  1. <?php
  2. AND `product_price` = '27,30'
  3. ?>

Wtedy rekord z tą wartością zostaje usunięty.
Jeśli jednak zostawię tak jak jest teraz jest to zupełnie nieskuteczne.

Czy ktoś może mi wyjaśnić w czym problem ?
Ociu
Po co tak długi warunek ?
nie wystarczy wywalić produkt o danym id ? przecież nie będzie 2 produktów o tym samym id.
alpin19
Wciąż nie mogę usuwać rekordów. Obecnie wygląda to tak (całość):
  1. <html>
  2. <head>
  3.  <title>EDYCJA DANYCH</title> 
  4.  <meta http-equiv=\"Content Type\" content=\"text/html; charset=iso-8859-2\">
  5.  <meta >
  6. </head>
  7. <body bgcolor=\"#e5e8d1\" align=\"center\">
  8.  <?php
  9.  // edycja.php
  10.  // podstrona służąca edycji i przeglądaniu wprowadzonych do bazy danych. 
  11.  // autor - Karol Lipnicki
  12.  
  13.  $adres = &#092;"localhost\";
  14.  $uzytkownik = &#092;"alpin19\";
  15.  $haslo = &#092;"\";
  16.  $baza_danych = &#092;"domowa\";
  17.  
  18.  //połączenie z serwerem MySQL
  19.  $db = mysql_connect($adres, $uzytkownik, $haslo);
  20.  
  21.  //wybranie bazy danych
  22.  mysql_select_db ($baza_danych);
  23.  
  24.  // zapytanie MySQL pobieracjące zawartość bazy danych
  25.  $query = mysql_query(&#092;"SELECT * FROM `ksiegarnia` WHERE 1\");
  26. while($query_data = mysql_fetch_row($query))
  27. {
  28. print(&#092;"<table bgcolor='#33390b' cellspacing='1' cellpadding='1' align='center' valign='middle'>\");
  29. print(&#092;"<tr>\");
  30. print(&#092;"<td height='20' width='400' bgcolor='#9a9f75' align='center'>\");
  31. print(&#092;"<font size=' ' color=' '>Nazwa Towaru</font>\");
  32. print(&#092;"</td>\");
  33.  
  34. print(&#092;"<td height='20' width='50' bgcolor='#9a9f75' align='center'>\");
  35. print(&#092;"<font size=' ' color=' '>Sztuk</font>\");
  36. print(&#092;"</td>\");
  37.  
  38. print(&#092;"<td height='20' width='60' bgcolor='#9a9f75' align='center'>\");
  39. print(&#092;"<font size=' ' color=' '>Cena</font>\");
  40. print(&#092;"</td>\");
  41.  
  42. print(&#092;"<td height='20' width='120' bgcolor='#9a9f75' align='center'>\");
  43. print(&#092;"<font size=' ' color=' '>ISBN</font>\");
  44. print(&#092;"</td>\");
  45.  
  46. print(&#092;"<td height='20' width='120' bgcolor='#9a9f75' align='center'>\");
  47. print(&#092;"<font size=' ' color=' '>EAN</font>\");
  48. print(&#092;"</td>\");
  49.  
  50. print(&#092;"<td height='20' width='120' bgcolor='#9a9f75' align='center'>\");
  51. print(&#092;"<font size=' ' color=' '>Wytwórca</font>\");
  52. print(&#092;"</td>\");
  53.  
  54. print(&#092;"<td height='20' width='140' bgcolor='#9a9f75' align='center'>\");
  55. print(&#092;"<font size=' ' color=' '>Edytuj</font>\");
  56. print(&#092;"</td>\");
  57.  
  58. print(&#092;"<td height='20' width='140' bgcolor='#9a9f75' align='center'>\");
  59. print(&#092;"<font size=' ' color=' '>Usuń</font>\");
  60. print(&#092;"</td>\");
  61. print(&#092;"</tr>\");
  62.  
  63. print(&#092;"<tr>\");
  64.  
  65. print(&#092;"<td height='20' width='400' bgcolor='#9a9f75' align='center'>\");
  66. echo $query_data[0];
  67. print(&#092;"</td>\");
  68.  
  69. print(&#092;"<td height='20' width='50' bgcolor='#9a9f75' align='center'>\");
  70. echo $query_data[1];
  71. print(&#092;"</td>\");
  72.  
  73. print(&#092;"<td height='20' width='60' bgcolor='#9a9f75' align='center'>\");
  74. echo $query_data[2];
  75. print(&#092;"</td>\");
  76.  
  77. print(&#092;"<td height='20' width='120' bgcolor='#9a9f75' align='center'>\");
  78. echo $query_data[3];
  79. print(&#092;"</td>\");
  80.  
  81. print(&#092;"<td height='20' width='120' bgcolor='#9a9f75' align='center'>\");
  82. echo $query_data[4];
  83. print(&#092;"</td>\");
  84.  
  85. print(&#092;"<td height='20' width='120' bgcolor='#9a9f75' align='center'>\");
  86. echo $query_data[5];
  87. print(&#092;"</td>\");
  88. //edytowanie wybranego rekordu z tabeli
  89. print(&#092;"<td height='20' width='140' bgcolor='#9a9f75' align='center'>\");
  90. print(&#092;"<form name='ksiegarnia1-edycja' action='$PHP_SELF' method='get'>\");
  91. print(&#092;"<input type='submit' name='edit_record' value='Edytuj'> \");
  92.  print(&#092;"</form>\");
  93.  print(&#092;"</td>\");  
  94.  
  95.  // usuwanie wybranego rekordu z tabeli
  96.  print(&#092;"<td height='20' width='140' bgcolor='#9a9f75' align='center'>\");
  97.  print(&#092;"<form name='ksiegarnia1-edycja' action='$PHP_SELF' method='get'>\");
  98. print(&#092;"<input type='submit' name='delete_record' value='Usuń'> \");
  99.  if($submit)
  100. {
  101. mysql_query (&#092;"DELETE FROM `ksiegarnia` WHERE `product_name` = '$product_name'\");
  102. }
  103.  print(&#092;"</form>\");
  104.  print(&#092;"</td>\"); 
  105.  
  106. print(&#092;"</tr>\");
  107. print(&#092;"</table>\");
  108. }
  109.  
  110.  ?>
Ociu
  1. <?php
  2. if(!empty($_POST['some']))
  3. {
  4. if ($_POST['some'] == 'usun') {
  5.  mysql_query (&#092;"DELETE FROM `ksiegarnia` WHERE `product_number` = '$product_number'\");
  6.  }else{
  7. #edycja
  8.  }
  9. }else {
  10. print '<form method=\"POST\" action=\"adres\">
  11. <p>
  12. <select name=\"some\">
  13. <option>usun</option>
  14. <option>edytuj</option>
  15. </select><input type=\"submit\" value=\"Przeslij\"></p>';
  16. }
  17. ?>
alpin19
Zrobiłem tak jak mówiłeś, ale dalej klapa - może w /etc/php.ini ustawić registry_globals na Off ?
Ociu
A wywala jakieś błędy skrypt ?
daj przy łączeniu i wybieraniu or die(mysql_error());
alpin19
Zasadniczo problem tkwi w tym, że nie ma żadnych błędów.
mysq_error czyta cały skrypt i nie wywala żadnego błędu, hmmm....
bigZbig
Ten fragment jest zły.
  1. <?php
  2.  
  3. // usuwanie wybranego rekordu z tabeli
  4. print(&#092;"<td height='20' width='140' bgcolor='#9a9f75' align='center'>\");
  5. print(&#092;"<form name='ksiegarnia1-edycja' action='$PHP_SELF' method='get'>\");
  6. print(&#092;"<input type='submit' name='delete_record' value='Usuń'> \");
  7.  if($submit)
  8. {
  9. mysql_query (&#092;"DELETE FROM `ksiegarnia` WHERE `product_name` = '$product_name'\");
  10. }
  11.  print(&#092;"</form>\");
  12.  
  13. ?>


Kilka poprawek

Po pierwsze
  1. <?php
  2.  
  3. //Twoj submit ma nazwe \"delete_record\" a wiec ...
  4. if($delete_record)
  5. {
  6. mysql_query (&#092;"DELETE FROM `ksiegarnia` WHERE `product_name` = '$product_name'\");
  7. }
  8.  
  9. ?>


Po drugie
  1. <?php
  2.  
  3. //umiesc powyzszy fragment przed zapytaniem
  4. $query = mysql_query(&#092;"SELECT * FROM `ksiegarnia` WHERE 1 LIMIT 0 , 30 \");
  5. //bo po wcisnieciu submita najpierw musisz usunac niechciana pozycje, 
  6. //a dopiero potem wyswietlic to co jeszcze zostalo
  7. ?>


Po trzecie
  1. <?
  2. //Jesli twoj formularz do usuwania zmiennych przesyla dane metoda GET to 
  3. if($_GET['delete_record'])
  4. //jesli metoda POST to
  5. if($_POST['delete_record'])
  6.  
  7. ?>
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.