Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Usuwanie tabel w bazie z poziomu przegladarki
Forum PHP.pl > Forum > Bazy danych > MySQL
gugas
Witam!!!

Mam maly problem. Otoz mam zrobic skrypt w ktorym administrator moze stworzyc grupy, do ktorych moga zapisywac sie ludzie. Zrobilem to na zasadzie tabel. Administrator tworzy grupe, ktora zapisywana jest w bazie jako tabela i do tej tabeli zapisuja sie ludzie. Chodzi mi o sposob usuwania grupy(tabeli). Nie chcialbym tego robic przez phpadmin tylko mam stworzony interfejs administratora w ktorym mozna wybrac opcje - usun grupe. Pobieram z bazy nazwy tabel za pomoca "SHOW TABLES" i obok zrobilem checkboxy. Chcialbym zeby po ich zaznaczeniu i wcisnieciu KASUJ usuwalo tabele. Tylko zeby dzialalo DROP TABLES musi byc obok nazwa usuwanej tabeli. Da sie to jakos obejsc?questionmark.gif

Dzieki za pomoc i pozdrawiam
phpion
Cytat(gugas @ 30.01.2009, 14:18:02 ) *
Zrobilem to na zasadzie tabel. Administrator tworzy grupe, ktora zapisywana jest w bazie jako tabela i do tej tabeli zapisuja sie ludzie.

W takim razie lepiej przeprojektuj schemat bazy danych bo w ten sposób daleko nie zajedziesz...

Cytat(gugas @ 30.01.2009, 14:18:02 ) *
Pobieram z bazy nazwy tabel za pomoca "SHOW TABLES" i obok zrobilem checkboxy. Chcialbym zeby po ich zaznaczeniu i wcisnieciu KASUJ usuwalo tabele. Tylko zeby dzialalo DROP TABLES musi byc obok nazwa usuwanej tabeli. Da sie to jakos obejsc?questionmark.gif

W takim razie dla checkboxa nadaj atrybut name np. table[] (z [] na końcu) oraz value o nazwie tabeli czyli w efekcie otrzymasz np.:
  1. <input type="checkbox" name="table[]" value="tabela1" />

Po wysłaniu formularza sprawdzasz zawartość tablicy $_POST['table']. Jeżeli w ogóle jej nie ma to znaczy, że nic sie zaznaczyłeś. Jeżeli jest jakiś element to iterujesz po elementach tablicy np. poprzez foreach i wywalasz tabele:
  1. <?php
  2. foreach ($_POST['table'] as $t) {
  3.    mysql_query('DROP TABLE '.$t);
  4. }
  5. ?>
gugas
Cytat
W takim razie lepiej przeprojektuj schemat bazy danych bo w ten sposób daleko nie zajedziesz...


Co mozesz zaproponowac bo nie widze innego rozwiazania?? Tabela jako grupa, rekordy jako ludzie. Jak masz jakies sugestie to bylbym wdzieczny.

Dzieki za podpowiedz, zaraz sprawdze z tymi checkboxami.
phpion
Cytat(gugas @ 30.01.2009, 14:36:01 ) *
Co mozesz zaproponowac bo nie widze innego rozwiazania?? Tabela jako grupa, rekordy jako ludzie. Jak masz jakies sugestie to bylbym wdzieczny.

Dzieki za podpowiedz, zaraz sprawdze z tymi checkboxami.

kursant [id, imie, nazwisko...]
grupa [id, nazwa...]
grupa_kursant [grupa_id, kursant_id]

W tabeli grupa_kursant zapisujesz do której grupy należy dany kursant.
gugas
Cytat(phpion @ 30.01.2009, 12:39:21 ) *
kursant [id, imie, nazwisko...]
grupa [id, nazwa...]
grupa_kursant [grupa_id, kursant_id]

W tabeli grupa_kursant zapisujesz do której grupy należy dany kursant.


Aha, i wtedy moge zapytaniami SQL kasowac i kursantow i cale grupy nie naruszajac tabel w bazie.
A dlaczego nie powinno sie robic na takiej zasadzie jak ja robie?? Moga byc pozniej z tym jakies problemy??
Bo zmieniajac swoja koncepcje z duzo bym musial zmienic. No ale jezeli bedzie trzeba...
phpion
Cytat(gugas @ 30.01.2009, 15:04:24 ) *
A dlaczego nie powinno sie robic na takiej zasadzie jak ja robie?? Moga byc pozniej z tym jakies problemy??

Twój sposób jest po prostu niepoprawny, tyle. Równie dobrze mógłbyś tworzyć osobne tabele dla każdego kursanta (tabela jako lista danych jak imię, nazwisko...). Poza tym: co w przypadku, gdy jeden kursant będzie musiał być przypisany do kilku grup? Będziesz musiał zduplikować jego dane wpisując go do innej tabeli. Dalej: przypuśćmy, że za miesiąc okaże się, że trzeba dodać nową kolumnę do danych kursantów (np. płeć). I co wtedy? Będziesz zmieniał to we wszystkich tabelach? Nie, tak nie może być. Jeżeli robisz to na zaliczenie na uczelnię to ja osobiście bym Ci takiego projektu nie zaliczył. Natomiast jeśli to robisz komuś za pieniądze to lepiej się zastanów czy aby na pewno masz pojęcie o tym co robisz, bo potem możesz mieć nieprzyjemności.
gugas
Dobra, dzieki za sugestie. Robie to na zaliczenie i chcialbym zeby to bylo dobrze zrobione.
Jeszcze raz dzieki i Pozdrawiam winksmiley.jpg
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.