Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt grup czyli jak to zrobic
Forum PHP.pl > Forum > PHP
SiganPL
Witam, rekreacyjnie robie skrypt grup (tematycznych) użytkowników

Stworzyłem to na zasadzie 2 tabel:

Tabela 1 (Przechowywanie informacji o grupach): GROUPS a w niej GROUP_ID i NAME
Tabela 2 (Użytkownicy): USERS a w niej ID, GROUP_ID, USERNAME

Istotna jest TABELA 2, ID to oczywiście identyfikator, GROUP_ID przechowuje informacje o tym do której grupy jest zapisany użytkownik z pola USERNAME

I teraz pytanko... czy są jeszcze inne metody na podobny skrypt?
Zakładając ze mamy 5 grup, a w każdej po 10 zapisanych userów daje to 50 rekordów (w tabeli 2)...

Zastanawiałem sie nad dodaniem do TABELI 1 pola USERS zamiast tabeli 2 i przechowywanie tam użytkowników, oddzielonych przecinkami z czego to skrypt php by ich wypisywał na ekranie w odpowiedniej formie. Nie mam problemu z kodem tylko z tym na jakiej zasadzie ma to działać... czy są jeszcze inne rozwiązania? znacie? jaka metoda jest najbardziej optymalna?

Szukałem na tym forum i ogólnie w necie ale nic ciekawego nie znalazłem... moze za słabo szukam smile.gif pomóżcie smile.gif Dzięki smile.gif
tehaha
jeżeli jeden użytkownik może przynależeć tylko do jednej grupy to to pierwsze rozwiązanie będzie ok, jeżeli do wielu grup to wtedy najlepiej 3 tabele: users, groups, user_group_assoc, to drugie rozwiązanie z dodanie kolumny users do groups nie jest dobre ponieważ gdybyś potrzebował pobrać jednocześnie nazwy użytkowników i nazwę grupy to już jednym zapytaniem tego nie zrobisz, a w pierwszym przypadku zrobisz to przy pomocy LEFT JOIN
SiganPL
Chodzi o to żeby każdy user mógł należeć do każdej grupy smile.gif zależy jak będzie chciał smile.gif
tehaha
to wtedy 3 table w trzeciej trzymasz powiązanie użytkownika z grupą: user_id | group_id
Kshyhoo
Można by to rozwiązać jeszcze inaczej, przy stałej i znanej ilości grup, mianowicie, do dać w bazie pola z grupami jako enum('0', '1') od razu przy użytkownikach.
Daniel Meger
To, co chcesz wykonać jest relacją 'wiele do wielu'. Jako, że nie jest możliwe rozwiązanie tej relacji wprost, stosuje się trzy tabele: USERS, GROUPS, USERS_TO_GROUPS (nazwy nie mają oczywiście większego znaczenia) oraz stosuje się między USERS a USERS_TO_GROUPS relację 'jeden do wielu' a między USERS_TO_GROUPS a GROUPS 'wiele do jednego'.

USERS:
pola: id, imie, nazwisko, ...

GROUPS:
pola: id, nazwa, ...

USERS_TO_GROUPS:
pola: id, user_id, group_id

Do łączenia stosujesz polecenie JOIN
http://dev.mysql.com/doc/refman/5.0/en/join.html
http://forum.php.pl/index.php?showtopic=83702

Rozwiązanie z dodatkowymi polami nie jest skalowalne i dlatego bym raczej tego unikał.
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.