Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP/MySQL] Usuwanie wybranych tabel polem checkbox
bencki90
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 9.03.2010

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


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ć.
Go to the top of the page
+Quote Post
deha21
post
Post #2





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


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.


--------------------
Go to the top of the page
+Quote Post
Kojak
post
Post #3





Grupa: Zarejestrowani
Postów: 70
Pomógł: 5
Dołączył: 11.09.2007
Skąd: Kielce

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


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>


Ten post edytował Kojak 10.03.2010, 09:28:53
Go to the top of the page
+Quote Post
bencki90
post
Post #4





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 9.03.2010

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


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ą...
Go to the top of the page
+Quote Post
DiH
post
Post #5





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

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


http://php.net/manual/en/control-structures.foreach.php

Ten post edytował DiH 11.03.2010, 00:07:23
Go to the top of the page
+Quote Post
Kojak
post
Post #6





Grupa: Zarejestrowani
Postów: 70
Pomógł: 5
Dołączył: 11.09.2007
Skąd: Kielce

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


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. }


Ten post edytował Kojak 11.03.2010, 08:29:33
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 Aktualny czas: 19.08.2025 - 12:20