Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kasowanie poszczególnego rekordu z tabeli
Forum PHP.pl > Forum > PHP
alpin19
Witam.
Zrobiłem sobie coś takiego:
  1. <html><head>
  2. <meta http-equiv=\"Content Type\" Content=\"text/html; charset=iso-8859-2\">
  3. </head><body align=\"center\" bgcolor=\"#8c9ead\">
  4.  
  5. <?php
  6.  
  7. $user = 'root';
  8. $pass  = '';
  9. $host = 'localhost';
  10. $dbname = 'iptables';
  11. ?>
  12.  
  13.  <form method=POST>
  14.  <table align=\"center\" cellspacing=\"1\" cellpadding=\"1\" border=\"0\" bgcolor=\"#\">
  15.  <tr>
  16. <td align=\"center\" height=\"30\" width=\"160\" bgcolor=\"#dee4e9\"> 
  17. Adres IP
  18. </td>
  19. <td align=\"center\" heigh=\"30\" width=\"160\" bgcolor=\"#dee4e9\">
  20. Docelowe IP
  21. </td>
  22. <td align=\"center\" height=\"30\" width=\"100\" bgcolor=\"#dee4e9\">
  23. Z portu
  24. </td>
  25. <td align=\"center\" height=\"30\" width=\"100\" bgcolor=\"#dee4e9\">
  26. Do portu
  27. </td>
  28. <td align=\"center\" height=\"30\" width=\"120\" bgcolor=\"#dee4e9\">
  29. Protokół
  30. </td>
  31. <td align=\"center\" height=\"30\" width=\"100\" bgcolor=\"#dee4e9\">
  32. Działanie
  33. </td>
  34. <td align=\"center\" height=\"30\" width=\"120\" bgcolor=\"#dee4e9\">
  35.  Edytuj regułę
  36. </td>
  37.  <td align=\"center\" height=\"30\" width=\"120\" bgcolor=\"#dee4e9\">
  38.  Usuń regułę
  39. </td>
  40.  </tr>
  41.  </table>
  42.  <br />
  43.  
  44. <?php
  45.  
  46. $conn_id = mysql_connect($host, $user, $pass) or die('Nie można się połączyć z bazą danych $dbname');
  47. $db = mysql_select_db($dbname) or die('Nie mozna wybrać bazy danych $dbname');
  48.  
  49. $query = mysql_query(&#092;"SELECT * FROM `iptables_actions` WHERE 1 LIMIT 0 , 30 \");
  50. while($query_data = mysql_fetch_row($query))
  51. {
  52.  
  53. ?>
  54.  
  55.  
  56.  
  57.  <table align=\"center\" cellspacing=\"1\" cellpadding=\"1\" border=\"0\" bgcolor=\"#\">
  58.  <tr>
  59. <td align=\"center\" height=\"30\" width=\"160\" bgcolor=\"#dee4e9\"> 
  60. <?php echo $query_data[1]; ?>
  61. </td>
  62. <td align=\"center\" heigh=\"30\" width=\"160\" bgcolor=\"#dee4e9\">
  63. <?php echo $query_data[2]; ?>
  64. </td>
  65. <td align=\"center\" height=\"30\" width=\"100\" bgcolor=\"#dee4e9\">
  66.  <?php echo $query_data[3]; ?>
  67. </td>
  68. <td align=\"center\" height=\"30\" width=\"100\" bgcolor=\"#dee4e9\">
  69.  <?php echo $query_data[4]; ?>
  70. </td>
  71. <td align=\"center\" height=\"30\" width=\"120\" bgcolor=\"#dee4e9\">
  72.  <?php echo $query_data[5]; ?> 
  73. </td>
  74. <td align=\"center\" height=\"30\" width=\"100\" bgcolor=\"#dee4e9\">
  75.  <?php echo $query_data[6]; ?>
  76. </td>
  77. <td align=\"center\" height=\"30\" width=\"120\" bgcolor=\"#dee4e9\">
  78.  <input type=\"submit\" value=\"Edytuj regułę\" name=\"edit_rule\">
  79. </td>
  80.  <td align=\"center\" height=\"30\" width=\"120\" bgcolor=\"#dee4e9\">
  81.  <input type=\"submit\" value=\"Usuń regułę\" name=\"delete_rule\">
  82.  <?php
  83.  if($delete_rule)
  84.  {
  85.  mysql_query(&#092;"DELETE FROM iptables_actions WHERE '$query_data[1]' = '$source_ip'\");
  86.  }
  87.  ?>
  88. </td>
  89.  </tr>
  90.  </table>
  91.  
  92.  <?php
  93.  }
  94.  ?>
  95.  <br />
  96.  <table align=\"center\" cellspacing=\"1\" cellpadding=\"5\" border=\"0\" bgcolor=\"#\">
  97.  <tr>
  98. <td width=\"500\" height=\"\" bgcolor=\"#dee0e3\">
  99. <li><b>Adres IP:</b></li>
  100. <blockquote>
  101. Określa adres IP z którego modyfikowany ma zostać ruch sieciowy. Adres IP m
  102. że zostać podany w formacie IPv4 oraz IPv6
  103. </blockquote>
  104.  
  105.  <li><b>Docelowe IP:</b></li>
  106. <blockquote>
  107. Określa adres IP do którego modyfikowany ma zostać ruch sieciowy. Wówczas d
  108. myślnym adresem ip jest 127.0.0.1. Adres IP może zostać podany w formacie IPv4 o
  109. az IPv6
  110. </blockquote>
  111.  
  112.  <li><b>Z portu:</b></li>
  113. <blockquote>
  114. Określa na którym porcie modulowany ma być ruch sieciowy wychodzący z <i>localhost</i>. Jeśli nie zostaną podane wartości <b>Adres IP</b> oraz
  115.  <b>Docelowe IP</b> wówczas wykorzystane zostaną wartości domyślne, czyli: <i>localhost -> gateway</i>.
  116.  </blockquote>
  117.  
  118. <li><b>Do portu:</b></li>
  119. <blockquote>
  120. Określa modulowanie ruchu sieciowego wychodzącego z portu wybranego w \"<b>Z Portu</b>\" do portu określanego w \"<b>Do Portu</b>\".
  121. Jeśli w polu <b>Z portu</b> nie określono żadnego portu TCP/IP, zostają wykorzystane wartości domyślne, czyli: <i>21, 22, 80, 110</i>.
  122. </blockquote>
  123. </td>
  124.  </tr> 
  125.  </table>
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  </form>
  134. </body></html>



Teraz mam problem:
Wyciągam informacje zapisane w tabeli:
  1. <?php
  2.  
  3. $conn_id = mysql_connect($host, $user, $pass) or die('Nie można się połączyć z bazą danych $dbname');
  4. $db = mysql_select_db($dbname) or die('Nie mozna wybrać bazy danych $dbname');
  5.  
  6. $query = mysql_query(&#092;"SELECT * FROM `iptables_actions` WHERE 1 LIMIT 0 , 30 \");
  7. while($query_data = mysql_fetch_row($query))
  8. {
  9.  
  10. ?>

Dalej wyświetlam je w tabelkach:
  1. <td align=\"center\" height=\"30\" width=\"160\" bgcolor=\"#dee4e9\"> 
  2. <?php echo $query_data[1]; ?>
  3. </td>


I Teraz chcę usunąc tylko jeden, poszczególny rekord>
Zrobiłem tak:
  1. <td align=\"center\" height=\"30\" width=\"120\" bgcolor=\"#dee4e9\">
  2.  <input type=\"submit\" value=\"Usuń regułę\" name=\"delete_rule\">
  3.  <?php
  4.  if($delete_rule)
  5.  {
  6.  mysql_query(&#092;"DELETE FROM iptables_actions WHERE '$query_data[1]' = '$source_ip'\");
  7.  }
  8.  ?>
  9. </td>

To niestety usuwa mi całą zawartość tabeli.... ;(
Proszę o pomoc...
revyag
W zapytaniu sql masz błąd.
Klauzula where, jest taka: where kolumna=wartosc. A u ciebie porównujesz wartość z wartością.
Może zrób tak:
  1. <?php
  2. if($delete_rule){
  3. if($query_data[1]==$source_ip){
  4. mysql_query(&#092;"DELETE FROM iptables_actions WHERE nazwa_drugiej_kolumny = '$source_ip'\");
  5. }
  6. }
  7. ?>
alpin19
Wciąż źle...
  1.  <?php
  2.  if($delete_rule) {
  3. if($query_data[1]==$source_ip) {  
  4.  mysql_query(&#092;"DELETE FROM iptables_actions WHERE 'source_ip' = '$source_ip'\");
  5.  }
  6. }
  7.  ?>


a zrobiłem tak...
revyag
source_ip bez uszów smile.gif
source_ip = '$source_ip'
alpin19
To ciekawe - teraz usuwa, ale tylko rekordy w których pole source_ip jest puste....
revyag
To znaczy że w zmienne $source_ip nic nie ma, znaczy jest pusta smile.gif. Sprawdź kod gdzie do tej zmiennej coś przypisujesz.
alpin19
  1. <td align=\"center\" height=\"30\" width=\"160\" bgcolor=\"#dee4e9\"> 
  2. <input size=\"15\" type=\"text\" name=\"source_ip\" value=\"<?php echo $source_ip; ?>\">
  3. </td>

Tutaj to wyświetlam.....
revyag
Rozumiem że $source_ip się wypełnia po kliknięciu submita ?
To napisz tak.
  1. <?php
  2. if($delete_rule){
  3. mysql_query(&#092;"DELETE FROM iptables_actions WHERE source_ip='$source_ip'\");
  4. }
  5. ?>

Ten dodatkowy warunke nie był potrzebny bo kod i tak się wykona tylko jak naciśniesz submit.
alpin19
Wiesz co - najlepiej looknij na kod tego formularza w całości i powiedz gdzie moze być błąd....

  1. <html><head>
  2. <meta http-equiv=\"Content Type\" Content=\"text/html; charset=iso-8859-2\">
  3. </head><body align=\"center\" bgcolor=\"#8c9ead\">
  4.  
  5. <?php
  6.  
  7. $user = 'root';
  8. $pass  = '';
  9. $host = 'localhost';
  10. $dbname = 'iptables';
  11. ?>
  12.  
  13.  <form method=POST>
  14.  <table align=\"center\" cellspacing=\"1\" cellpadding=\"1\" border=\"0\" bgcolor=\"#\">
  15.  <tr>
  16. <td align=\"center\" height=\"30\" width=\"160\" bgcolor=\"#dee4e9\"> 
  17. Adres IP
  18. </td>
  19. <td align=\"center\" heigh=\"30\" width=\"160\" bgcolor=\"#dee4e9\">
  20. Docelowe IP
  21. </td>
  22. <td align=\"center\" height=\"30\" width=\"100\" bgcolor=\"#dee4e9\">
  23. Z portu
  24. </td>
  25. <td align=\"center\" height=\"30\" width=\"100\" bgcolor=\"#dee4e9\">
  26. Do portu
  27. </td>
  28. <td align=\"center\" height=\"30\" width=\"120\" bgcolor=\"#dee4e9\">
  29. Protokół
  30. </td>
  31. <td align=\"center\" height=\"30\" width=\"100\" bgcolor=\"#dee4e9\">
  32. Działanie
  33. </td>
  34. <td align=\"center\" height=\"30\" width=\"120\" bgcolor=\"#dee4e9\">
  35.  Edytuj regułę
  36. </td>
  37.  <td align=\"center\" height=\"30\" width=\"120\" bgcolor=\"#dee4e9\">
  38.  Usuń regułę
  39. </td>
  40.  </tr>
  41.  </table>
  42.  <br />
  43.  
  44. <?php
  45.  
  46. $conn_id = mysql_connect($host, $user, $pass) or die('Nie można się połączyć z bazą danych $dbname');
  47. $db = mysql_select_db($dbname) or die('Nie mozna wybrać bazy danych $dbname');
  48.  
  49. $query = mysql_query(&#092;"SELECT * FROM `iptables_actions` WHERE 1 LIMIT 0 , 30 \");
  50. while($query_data = mysql_fetch_row($query))
  51. {
  52.  
  53. ?>
  54.  
  55.  
  56.  
  57.  <table align=\"center\" cellspacing=\"1\" cellpadding=\"1\" border=\"0\" bgcolor=\"#\">
  58.  <tr>
  59. <td align=\"center\" height=\"30\" width=\"160\" bgcolor=\"#dee4e9\"> 
  60. <?php echo $query_data[1]; ?>
  61. </td>
  62. <td align=\"center\" heigh=\"30\" width=\"160\" bgcolor=\"#dee4e9\">
  63. <?php echo $query_data[2]; ?>
  64. </td>
  65. <td align=\"center\" height=\"30\" width=\"100\" bgcolor=\"#dee4e9\">
  66.  <?php echo $query_data[3]; ?>
  67. </td>
  68. <td align=\"center\" height=\"30\" width=\"100\" bgcolor=\"#dee4e9\">
  69.  <?php echo $query_data[4]; ?>
  70. </td>
  71. <td align=\"center\" height=\"30\" width=\"120\" bgcolor=\"#dee4e9\">
  72.  <?php echo $query_data[5]; ?> 
  73. </td>
  74. <td align=\"center\" height=\"30\" width=\"100\" bgcolor=\"#dee4e9\">
  75.  <?php echo $query_data[6]; ?>
  76. </td>
  77. <td align=\"center\" height=\"30\" width=\"120\" bgcolor=\"#dee4e9\">
  78.  <input type=\"submit\" value=\"Edytuj regułę\" name=\"edit_rule\">
  79. </td>
  80.  <td align=\"center\" height=\"30\" width=\"120\" bgcolor=\"#dee4e9\">
  81.  <input type=\"submit\" value=\"Usuń regułę\" name=\"delete_rule\">
  82.  <?php
  83.  if($delete_rule) {  
  84.  mysql_query(&#092;"DELETE FROM iptables_actions WHERE source_ip = '$source_ip'\");
  85. }
  86.  ?>
  87. </td>
  88.  </tr>
  89.  </table>
  90.  
  91.  <?php
  92.  }
  93.  ?>
  94.  <br />
  95.  <table align=\"center\" cellspacing=\"1\" cellpadding=\"5\" border=\"0\" bgcolor=\"#\">
  96.  <tr>
  97. <td width=\"500\" height=\"\" bgcolor=\"#dee0e3\">
  98. <li><b>Adres IP:</b></li>
  99. <blockquote>
  100. Określa adres IP z którego modyfikowany ma zostać ruch sieciowy. Adres IP m
  101. że zostać podany w formacie IPv4 oraz IPv6
  102. </blockquote>
  103.  
  104.  <li><b>Docelowe IP:</b></li>
  105. <blockquote>
  106. Określa adres IP do którego modyfikowany ma zostać ruch sieciowy. Wówczas d
  107. myślnym adresem ip jest 127.0.0.1. Adres IP może zostać podany w formacie IPv4 o
  108. az IPv6
  109. </blockquote>
  110.  
  111.  <li><b>Z portu:</b></li>
  112. <blockquote>
  113. Określa na którym porcie modulowany ma być ruch sieciowy wychodzący z <i>localhost</i>. Jeśli nie zostaną podane wartości <b>Adres IP</b> oraz
  114.  <b>Docelowe IP</b> wówczas wykorzystane zostaną wartości domyślne, czyli: <i>localhost -> gateway</i>.
  115.  </blockquote>
  116.  
  117. <li><b>Do portu:</b></li>
  118. <blockquote>
  119. Określa modulowanie ruchu sieciowego wychodzącego z portu wybranego w \"<b>Z Portu</b>\" do portu określanego w \"<b>Do Portu</b>\".
  120. Jeśli w polu <b>Z portu</b> nie określono żadnego portu TCP/IP, zostają wykorzystane wartości domyślne, czyli: <i>21, 22, 80, 110</i>.
  121. </blockquote>
  122. </td>
  123.  </tr> 
  124.  </table>
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  </form>
  133. </body></html>
nospor
Widzę, że próbujesz usunąć rekordy, wktórych kolumna source_ip równa sięzmiennej $source_ip. Ale jest jeden problem. Ty tej zmiennej nigdzie nie inicjujesz, więc się nie dziw, że usuwa Ci rekordy gdzie te source_ip jest puste.
revyag
Napisz na jakiej zasadzie ma działać usuwanie tego ip z bazy ? Skąd to ip ma się brać, ma być pole w formularzu w którym je wpisujesz ? Jesli tak to ja tego inputa nie widze.
alpin19
Usunięte ma być IP które jest wyświetlane w polu "adres_ip" czyli $query_data[1] pobrane z tabeli.
nospor
Ale ty przecież do komórki adres_ip wpisujesz kolejne 30 adresów. Adresy te pozatym są traktowane jako text i nie są przesyłane w formularzu. Jak chcesz coś przesłać formularzem, to musi to być w jakimś polu np. <input ...>

Poza tym, jeśli chcesz skasować te pierwsze 30 adresów, to daj zapytanie do kasowania podobne do Twojego selecta, czyli:
delete FROM `iptables_actions` WHERE 1 LIMIT 0 , 30
revyag
Możesz to rozwiązać tak, że nadasz kolejnym przyciskom odpowiedzialnym za usuwanie inną nazwę.
Wyświetlasz je w pętli, więc może dołączaj id danego wpisu, zakładam że masz w bazie takie pole.
  1. <?php
  2. echo '<input type=\"submit\" value=\"Usuń regułę\" name=\"delete_rule'.$query[0].'\">';
  3. ?>

A następnie który przycisk został wciśnięty:
  1. <?php
  2. if(isset(&#092;"delete_rule\".$query[0]) {
  3. $source_ip=$query[1];  
  4. mysql_query(&#092;"DELETE FROM iptables_actions WHERE source_ip = '$source_ip'\");
  5. }
  6. ?>
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.