Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Usuwanie tabel w bazie z poziomu przegladarki
gugas
post 30.01.2009, 12:18:02
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 20.01.2009

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


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
Go to the top of the page
+Quote Post
phpion
post 30.01.2009, 12:27:17
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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. ?>
Go to the top of the page
+Quote Post
gugas
post 30.01.2009, 12:36:01
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 20.01.2009

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


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.
Go to the top of the page
+Quote Post
phpion
post 30.01.2009, 12:39:21
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.

Ten post edytował phpion 30.01.2009, 12:39:33
Go to the top of the page
+Quote Post
gugas
post 30.01.2009, 13:04:24
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 20.01.2009

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


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...
Go to the top of the page
+Quote Post
phpion
post 30.01.2009, 13:09:02
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.
Go to the top of the page
+Quote Post
gugas
post 30.01.2009, 13:14:03
Post #7





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 20.01.2009

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


Dobra, dzieki za sugestie. Robie to na zaliczenie i chcialbym zeby to bylo dobrze zrobione.
Jeszcze raz dzieki i Pozdrawiam winksmiley.jpg
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 10:03