Ravik
28.09.2010, 11:22:12
Witam,
Mam problem, gdyż nie wiem jak mam zrobić następujące zadanie:
Użytkownik się rejestruje i na starcie dostaje 5 darmowych kartek to wysłania, poźniej musi spełnić pewien wymóg aby otrzymać więcej kartek, jednak z każdym wysyłaniem ich liczba maleje.
Nie potrafię sobie wyobrazić jakich funkcji mam użyć i jak rozplanować aplikację, gdzie mam przechowywać informację o ilości kartek, jednocześnie żeby ich liczba za każdą wysyłką malała.
Mógłby mi ktoś doradzić ?
Pozdrawiam
blahy
28.09.2010, 11:39:21
Najwygodniej taka informacje przechowywac w bazie danych.
Mozna zrobic dodatkowe pole darmowe_kartki w tabeli uzytkownik i przechowywac tam liczbe darmowych kartek. Przy rejestracji nowego uzytkownika wstawiasz 5 a pozniej odpowiednio aktualizujesz pole.
Drugie rozwiazanie jest chyba lepsze. Tworzysz nowa tabele kartki o polach id, uzytkownik_id + jakies dodatkowe pola. Przy rejestracji uzytkownika do tabeli kartki dodajesz 5 rekordow o uzytkownik_id = id rejestrowanego uzytkownika. Teraz obslugujac wysylke liczysz ile dany uzytkownik ma kartek (po uzytkownik_id), jesli > 1 to ok. W odpowiednich momentach dodajesz lub usuwasz rekordy w tabeli kartki. Zadanie nie wykracza poza standardowe zastosowania php+mysql.
Ravik
28.09.2010, 12:53:33
Czy mógłbyś powiedzieć coś więcej o drugim rozwiązaniu ? Mam dodać 5 rekordów do tabeli, a nie liczbę ? Podczas kiedy user wysyła kartkę usuwany jest jeden rekord, dobrze myślę ?
Daiquiri
28.09.2010, 14:00:15
Tylko czy ten drugi sposób to nie lekka przesada w ilości pozycji? Jasne, że po "wykorzystaniu" kartki kasujesz jeden wiersz, ale skoro nie trzymasz w tej tabeli niczego innego jak ID usera, to chyba trochę bez sensu. A co jeżeli będziesz chciał użytkownikowi "przydzielić" 20 kartek? Będziesz tworzył 20 dodatkowych wierszy?
Pierwszy sposób wydaje się być lepszy. Dodatkowe pole z ilością kartek, które określa ile ich jeszcze zostało. Potem wystarczy zrobić "UPDATE" pola aby je pomniejszych lub powiększyć o jakąś liczbę kartek.
W drugim sposobie chodziło o to że informacje o kartach dajesz w innej tabeli. A nie o to że dajesz każdą kartę osobno jako rekord.
Cytat
id_usera | liczba kart
1 2
2 5
3 20
I później przy wysyłaniu karty aktualizujesz po ID, ilość kart. Możesz to zrobić oczywiście na jednej tabeli, jednak przy ewentualnej późniejszej rozbudowie, przydadzą się dwie. Uważam że trzeba oddzielać dane do logowania, od danych opcjonalnych.
Daiquiri
28.09.2010, 14:30:22
Rozumiem, z tym że blahy napisał "przy rejestracji dodajesz 5 rekordów" - i to mnie zmyliło

.
blahy
28.09.2010, 17:44:10
napisalem rekordy, bo mialem na mysli rekordy w 2 rozwiazaniu. Oczywiscie wszystkie trzy rozwiazania (liczba kartek w tabeli user, liczba kartek w osobnej tabeli, kartka jako rekord w sobnej tabeli) sa poprawne i wszsytko zalezy od tego jak bardzo bedziesz rozbudowywal pomysl. ja przewidzialem to ze kazda kartka moglaby miec dodatkowe parametry takie jak np. czas utworzenia, dodania, uzycia, czas waznosci, kto dana kartke przydzielil itp. wtedy najwygodniej jakby kazda z nich byla osobnym rekordem w tabeli
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.