Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z rozdzieleniem rodzin w aplikacji
Forum PHP.pl > Forum > Przedszkole
redelek
Witam wszystkich serdecznie,

Jako , że zawodowcem nie jestem to piszę do Was w sprawie porady .
Napisałem aplikację do której mogą się logować wszyscy z mojej rodziny. Wszystko działa pięknie, ale urodziły się dwa pomysły z którymi nie mogę sobie poradzić.
Zadaniem aplikacji jest zamawianie upominków dla siebie na różne okazje ( żeby każdy dostał to co chce, a nie to co potem jest nieprzydatne ). Jak to działa.

Osoba loguje się na stronę i umieszcza wpis dotyczący chęci otrzymania prezentu na jakąś okazję. Inna osoba widząc to w głównym koszu rezerwuje to sobie.
Osoba wystawiająca prezent widzi że ktoś go zarezerwował, ale nie wie kto, może jedynie wysłać mu komunikat z prośbą o zwolnienie prezentu bo np. już taki sobie kupiła.
Powstały wa problemy.

1. jak rozdzielić rodziny

Chodzi o to żeby rodzina, na wzajem nie widziały swoich prezentów tylko dopiero po zaproszeniu.

Wymyśliłem więc by dodać pole kod_rodziny w tabeli użytkownicy i prezenty. Kod rodziny składał by się z 6 cyfr i był by unikalny.
W polu rodzina można sobie dopisywać kody, tak żeby być widocznym w danej rodzinie przykład 121314;161718;212223.
Problem w tym jak sprawdzić czy i do której rodziny dana osoba należy i które prezenty po zalogowaniu pokazać.
Czy zapisać te dane w sesji jako jakąś tablicę czy, sprawdzać na bieżąco( jak to można zrobić, jeśli w polu baz danych są średniki ). Może dodać jakąś tabelę z kodami rodzin ?, ale jak przypisać kilku użytkowników do jednej rodziny?
No mam problem , bo pomysł fajny, ale realizacja jak dla amatora trudna.
Macie może jakiś pomysł?

2. prezenty składkowe
Tu kolejny dylemat. Nieraz osoby dodają prezent powyżej 100zł i użytkownicy składają się na niego. Najlepszym rozwiązaniem było by by dopisać imię lub login do zarezerwowanego prezentu np ania;piotrek;rafał. Loginy są unikalne więc nie będzie problemu że jest 2 Piotrków. Problem w tym jak znowu wyszukać i czy zrobić kolejną tabelę do prezentów wspólnych.

Temat troszkę zakręcony, ale może ktoś zrozumie i będzie potrafił mnie naprowadzić . Tak wyglądają obecne tabele
  1. CREATE TABLE IF NOT EXISTS `pre_prezenty` (
  2. `id_prezentu` tinyint(3) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `id_uzytkownika` tinyint(3) DEFAULT '0',
  4. `id_rezerwujacego` tinyint(3) DEFAULT '0',
  5. `skr_prezentu` varchar(255) collate utf8_polish_ci DEFAULT NULL,
  6. `koszt` int(10) UNSIGNED DEFAULT NULL,
  7. `szczegoly` text collate utf8_polish_ci,
  8. `link` varchar(255) collate utf8_polish_ci DEFAULT NULL,
  9. `mini_fotka` varchar(255) collate utf8_polish_ci DEFAULT 'foto_dir/noimage.png',
  10. `rezerwacja` varchar(1) collate utf8_polish_ci DEFAULT NULL,
  11. `realizacja` varchar(1) collate utf8_polish_ci DEFAULT NULL,
  12. `typ_prezentu` varchar(25) collate utf8_polish_ci DEFAULT 'prezent',
  13. `dt_dodania` date DEFAULT NULL,
  14. `dt_realizacji` date DEFAULT '0000-00-00',
  15. PRIMARY KEY (`id_prezentu`),
  16. UNIQUE KEY `id_prezentu` (`id_prezentu`)
  17. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=65 ;

  1. CREATE TABLE IF NOT EXISTS `pre_users` (
  2. `id_uzytkownika` tinyint(3) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `imie` varchar(20) collate utf8_polish_ci DEFAULT NULL,
  4. `nazwisko` varchar(20) collate utf8_polish_ci DEFAULT NULL,
  5. `email` varchar(50) collate utf8_polish_ci DEFAULT NULL,
  6. `uzytkownik` varchar(32) collate utf8_polish_ci DEFAULT NULL,
  7. `haslo` varchar(32) collate utf8_polish_ci DEFAULT NULL,
  8. `dt_rejestracji` datetime DEFAULT NULL,
  9. `dt_logowania` datetime DEFAULT NULL,
  10. `blokada` varchar(1) collate utf8_polish_ci DEFAULT NULL,
  11. `uprawnienia` varchar(1) collate utf8_polish_ci DEFAULT NULL,
  12. PRIMARY KEY (`id_uzytkownika`),
  13. UNIQUE KEY `id_uzytkownika` (`id_uzytkownika`)
  14. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=13 ;


Dzięki
smagul
Jeśli chodzi o rodziny, to zrób tabelkę z rodzinami i głową rodziny która będzie dodawała nowych członków
id rodziny/nazwa rodziny/id_głowy/id_pomocnika/
natomiast do użytkownika dodaj id rodziny
Przy czym nie wiem jak będziesz podchodził do teściów. Czy użytkownik może należeć do 2 rodzin jednocześnie? Jeśli tak, to trzeba zrobić dwa pola z id rodziny w 'pre_users'.

I to rozwiązuje problem widzialności prezentów tylko w rodzinie.

A jeśli chodzi o dzielenie się prezentami to możesz przyjąć, że ilość osób dzielących się prezentami wynosi: część całkowita z dzielenia(cena/50). Z tabeli z prezentami usuwasz id_rezerwującego i tworzysz tabelkę z relacjami
id_relacji/id_prezentu/id_rezerwującego
w tabeli prezenty możesz zastąpić id_rezerwującego ilością wolnych miejsc sponsorskich (dla prezentu za 100 zł wartość by wynosiła od 2 do 0).

I jeszcze dla świętego pokoju możesz dodać w tabelce z rodzinami wartość średniej składki, by rodzina sama mogła sobie ustalać tę wartość (domyślnie 50zł).
redelek
No właśnie problem w tym że, nie wiem do ilu rodzin będzie należał użytkownik, dlatego w jednym polu zapisuję kod każdej rodziny oddzielając go przecinkiem.
Rodzinka duża, i będzie się rozrastać smile.gif więc nie mogę w pre_users dopisać id_rodziny , id_rodziny1, ide_rodziny2 bo tak mogę sobie zrobić i 100 pól smile.gif


Ja i moja żona to rodzina_new
Moja, mama i mój tata, siostra to rodzina_senior
Teściowie to rodzinatesciow_senior
syn tesciów, z zoną to rodzinatesciow_new
siostra mojej zony i mąż to rodzinainna_new
rodzice mojego szfagra to rodzinainna_senior

I teraz tak ja widzę prezenty rodzin
rodzina_new,
rodzina_senior,
rodzinatesciow_senior,
rodzinatesciow_new,
rodzinainna_new

Nie widzę tylko prezentów rodziny rodzinainna_senior. Natomiast moja rodzina rodzina_senior widzi
rodzina_senior -> czyli swoje
rodzina_new - > czyli moje i zony

A nie widzi :
rodzinatesciow_senior,
rodzinatesciow_new,
rodzinainna_new,
rodzinainna_senior

Uff to tak najprościej smile.gif
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.