Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP/MySQL] Usuwanie wybranych tabel polem checkbox
Forum PHP.pl > Forum > PHP
bencki90
Witam. Chcę stworzyć stronę na której po zalogowaniu mamy możliwość między innymi usunięcia tabel znajdujących się na serwerze MySQL.
Po wybraniu odpowiedniej podstrony ma się wyświetlać lista tabel istniejących na serwerze oraz przy nazwie każdej tabelipole typu checkbox. Niestety nie wiem w jaki sposób sprawdzić czy dane pole checkbox zostało zaznaczone a co za tym idzie jak powinien wyglądać skrypt usuwania wybranych tabel.

Jak dotąd napisałem tyle i utknąłem.

  1. <table border="3">
  2. <tr><td><b>
  3. Lista tabel</b></td>
  4. <td></td></tr><form action='funkcjadel.html' method='post'>
  5.  
  6.  
  7. <?
  8.  
  9. $host="host";
  10. $db_user="użytkownik_bazy";
  11. $db_password="haslo";
  12. $database="nazwa_bazy";
  13. mysql_connect($host,$db_user,$db_password);
  14. mysql_select_db($database);
  15.  
  16. $id=mysql_query("show tables");
  17. $ilosc=mysql_num_rows($id);
  18.  
  19. $lista=mysql_list_tables($database);
  20. for($i=0; $i<$ilosc; $i++)
  21. {
  22.  
  23. $nazwa=mysql_tablename($lista, $i);
  24.  
  25. if ($nazwa=='logowanie' || $nazwa=='temp')
  26. {
  27. print "<tr><td>$nazwa</td><td><input type='checkbox'disabled name=$nazwa></td></tr>";
  28. }
  29. else
  30. {
  31. print "<tr><td>$nazwa</td><td><input type='checkbox' name=$nazwa></td></tr>";
  32. }
  33. }
  34.  
  35. print "</table>";
  36. print "<br><input type='submit' value='Usun'></form>"
  37.  
  38. ?>


Patrzałem na inne tematy, zazwyczaj dotyczące usuwania wierszy w tabeli, i jakoś nie mogę tego pojąć. Byłbym wdzięczny gdyby ktoś mógł mi to wytłumaczyć.
deha21
Sprawdzanie czy checkbox został zaznaczony:
  1. if (isset($_POST['czekboks'])=='0') { echo "Odznaczony"; } // nic nie rob
  2. elseif (isset($_POST['czekboks'])=='1') {echo "Zaznaczony"; } // usun tabele

Co do reszty to sam jestem ciekaw, bo robiłem coś takiego ale na wierszach gdzie każdy wiersz miał ID. Tutaj z nazwami tabel nie wiem jak to będzie.
Kojak
Spróbuj coś takiego:

  1. <?php
  2.  
  3. $host="host";
  4. $db_user="user";
  5. $db_password="haslo";
  6. $database="baza";
  7. mysql_connect($host,$db_user,$db_password);
  8. mysql_select_db($database);
  9.  
  10. if (isset($_POST['usun']))
  11. {
  12. foreach($_POST as $tabela => $val)
  13. {
  14. if ($tabela == 'usun') continue;
  15.  
  16. mysql_query("DROP TABLE $tabela");
  17. }
  18. }
  19.  
  20. ?>
  21. <form action='' method='post'>
  22. <table style="border: 3px solid black;">
  23. <tr>
  24. <td><strong>Lista tabel</strong></td>
  25. <td>&nbsp;</td>
  26. </tr>
  27. <?php
  28. $id=mysql_query("show tables");
  29. $ilosc=mysql_num_rows($id);
  30.  
  31. $lista=mysql_list_tables($database);
  32. for($i=0; $i<$ilosc; $i++)
  33. {
  34. $nazwa=mysql_tablename($lista, $i);
  35.  
  36. if ($nazwa=='logowanie' || $nazwa=='temp')
  37. {
  38. print "<tr><td>$nazwa</td><td><input type='checkbox'disabled name=$nazwa></td></tr>";
  39. }
  40. else
  41. {
  42. print "<tr><td>$nazwa</td><td><input type='checkbox' name=$nazwa></td></tr>";
  43. }
  44. }
  45. ?>
  46. </table>
  47. <br />
  48. <input type='submit' name="usun" value='Usun'>
  49. </form>
bencki90
Wielkie dzięki za pomoc, skrypt działa poprawnie guitar.gif
Ale chciałbym zrozumieć jak to działa. Nie do końca rozumiem poniższy kod.

  1. if (isset($_POST['usun'])) //jeżeli w tabeli POST są jakieś zmienne to wykonaj instrukcje
  2. {
  3. foreach($_POST as $tabela => $val) //dla każdej zmiennej w tabeli POST... i tu nie wiem co się dzieje
  4. {
  5. if ($tabela == 'usun') continue; //jeżeli wartość zmiennej $tabela to 'usun' rozpocznij obieg pętli od nowa i zwiększ zmienna sterującą o 1
  6. mysql_query("DROP TABLE $tabela"); //polecenie usunięcia tabeli
  7. }
  8. }


Wygląda na to że mam problem z tylko jedną, ale jakże ważną, linijką...
Kojak
Tak jak kolega wyżej napisał zobacz sobie składnię pętli foreach. Jak nie wiesz jak wygląda tablica $_POST po przekazaniu z formularza to wyświetl sobie ją (pokazałem jak w poniższym kodzie - później to usuń).

  1. if (isset($_POST['usun'])) // jeżeli ustawione jest pole 'usun' (czyli kliknięto przycisk USUŃ) to wykonaj poniższy blok instrukcji
  2. {
  3. echo "<pre>"; print_r($_POST); echo "</pre>"; // wyświetlenie zawartości tablicy $_POST
  4. foreach($_POST as $tabela => $val) // teraz przechodzimy po każdym elemencie tabeli $_POST, gdzie klucz to nazwa tabeli ($tabela) a wartość ($val) to 'on' (czyli włączony checkbox)
  5. {
  6. if ($tabela == 'usun') continue; // jeśli wartość zmiennej $tabela to usuń to pomijamy ten obieg pętli bo w tabeli $_POST natrafiliśmy na przycisk usuń
  7. mysql_query("DROP TABLE $tabela"); //polecenie usunięcia tabeli
  8. }
  9. }
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.