![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 415 Pomógł: 46 Dołączył: 26.05.2007 Skąd: Sandomierz Ostrzeżenie: (0%) ![]() ![]() |
Witajcie,
Mam taki oto problem. W sumie to nieduży, ale nie mam pojęcia jak go rozwiązać. Może wy mi podsuniecie rozwiązanie. Mianowicie, mam system oceniania komentarzy, artykułów itd. Ocena jest przechowywana w bazie danych, przy np. danych komentarzu. Jest sobie zapytanie:
Ocenia fajnie, w tym wypadku zwiększa ocenę o 1. No i teraz, chcę zrobić możliwość ocenienia tylko raz, przez jednego użytkownika danego komentarza, newsa. Jak wy byście do zrobili? 1) Można w sumie oceny trzymać w osobnej tabeli, ale to raczej będzie nieopłacalne (nie potrzeba do tego osobnej tabeli). Szkoda miejsca. 2) Można to zrobić na zasadzie ciasteczka. Ale ciastko można usunąć. Jak wy byście to zrobili? btw. w sumie to chyba w złym dziale to napisałem o.O' Ten post edytował decha-design 16.03.2009, 17:46:15 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%) ![]() ![]() |
Ja bym to zrobił na sesji, niby można usunąć id ale wtedy też wyloguje usera, więc jak kto woli (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) .
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 8 Dołączył: 20.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Ja bym to zrobił na sesji, niby można usunąć id ale wtedy też wyloguje usera, więc jak kto woli (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) . No, ale w ten sposób po każdym zalogowaniu użytkownik będzie mógł ponownie oddawać głos na artykuł. A o to chyba nie chodziło autorowi pytania. Ocenia fajnie, w tym wypadku zwiększa ocenę o 1. No i teraz, chcę zrobić możliwość ocenienia tylko raz, przez jednego użytkownika danego komentarza, newsa. Jak wy byście do zrobili? 1) Można w sumie oceny trzymać w osobnej tabeli, ale to raczej będzie nieopłacalne (nie potrzeba do tego osobnej tabeli). Szkoda miejsca. 2) Można to zrobić na zasadzie ciasteczka. Ale ciastko można usunąć. Jak wy byście to zrobili? Jedyny wybór to baza danych, nie trzymaj danych po stronie przeglądarki, bo nigdy nie zagwarantujesz tego, że użytkownik nie będzie kombinował. Naprawdę Ci szkoda miejsca na jedną tabelę składająca się z dwóch kolumn? Bo nawet tyle Ci wystarczy - id artykułu, id użytkownika. Nawet jak dodasz dodatkowe kolumny typu znak (głos dodatni, głos ujemny), data/czas oddania głosu, to IMHO rozmiar tej tabeli będzie znikomy w stosunku do tabeli z artykułami. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 415 Pomógł: 46 Dołączył: 26.05.2007 Skąd: Sandomierz Ostrzeżenie: (0%) ![]() ![]() |
Dobra, może źle się wyraziłem z tym miejscem ...
W sumie to będzie tylko kilka kb ... nic wielkiego ... ale to trzeba też zliczyć, a ja mam niestety ocenę wyrażoną w punktach np. - 50, 0, +24 ... nie w skali od 1-10 ... więc ze zliczaniem byłoby w sumie chyba dużo roboty ... Co prawda, w SQL istnieje funkcja SUM, ale nie wiem jak ona się zachowa z danymi typu double ... jak mam i liczby dodatnie i ujemne Ten post edytował decha-design 16.03.2009, 20:00:27 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 8 Dołączył: 20.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Co prawda, w SQL istnieje funkcja SUM, ale nie wiem jak ona się zachowa z danymi typu double ... jak mam i liczby minusem jak i plusowe O ile potrzebujesz zwykłą sumę arytmetyczną, to zadziała bez problemu, nie martw się. Załóż dodatkowo indeks na id artykułu jeżeli martwisz się o wydajność. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 415 Pomógł: 46 Dołączył: 26.05.2007 Skąd: Sandomierz Ostrzeżenie: (0%) ![]() ![]() |
Ok, zobaczę co mi z tego wyjdzie. =)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.09.2025 - 20:53 |