![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Mam system oceniania dla artykułów. Oceny zapisuję w osobnej tabeli z ocenami poza tabelą z artykułami. Każda ocena jest zapisywana w jednym wyniku oddzielona znakiem |;;|. Tak samo jest z adresami IP, do sprawdzania czy juz ten ktos ocenił dany artykuł.
Żeby obliczyć średnią albo sprawdzić czy już było ocenione, pobierałem jeden wynik, za pomocą explode() wszystko rozbijałem i operowałem na tablicy. Moje pytanie brzmi, czy to jest dobre rozwiązanie? Teraz, przy robieniu porównywarki, chciałem porównywać też oceny wyświetlając je w tabeli. Wszystko wygląda tak, że wyświetlane jest wszystkow postaci tabeli na stronie, która generowana jest przez pętlę, i dla każdego wykonania pętli, pobierało z bazy day wynik z ocenami, rozbierało go, liczyło średnią i wyświetlało ocenę... tak, ale tylko przy pierwszym przejściu pętli. Jest jakiś lepszy sposób przechowywania ocen? Może każdą w osobnym wyniku, ale czy to czasem nie marnotrawstwo przestrzeni dla DB? Albo to samo tylko, że zamiast w osobnej tabeli, to w tabeli razem z artykułami? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 264 Pomógł: 11 Dołączył: 9.05.2011 Skąd: Gdańsk Ostrzeżenie: (10%) ![]() ![]() |
w jednej i łączyć je kluczem głównym czyli "id"
napisz sobie funkcje która odrazu będzie zliczała średnią ocenę i dodawała gotowy wynik do bazy:) albo nawet w jednej tabeli możesz mieć to:D |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Zdecydowanie najbardziej optymalne będzie przechowywanie ocen w osobnej tabeli w bazie danych. Jednak ważne jest to, jak to ocenianie wygląda. Jeśli oceniać mogą tylko dajmy na to zarejestrowani użytkownicy portalu, to nie ma sensu sprawdzać tutaj IP. Jeśli natomiast oceniać mogą wszyscy, to samo sprawdzenie IP nie wystarczy (niektórzy mogą mieć IP zewnętrzne, takie samo dla kilku, czy nawet kilkuset użytkowników sieci lokalnej lub WiFi). W obu przypadkach najlepiej będzie wykorzystać nową tabelę w bazie danych i nałożyć PRIMARY KEY na oba pola tabeli. Przykładowo:
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Dać sobie spokój z funkcją explode()? Co do oceniania to mogą oceniać tylko zarejestrowani, więc w sumie masz rację mortus.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Cytat(adbacz) Dać sobie spokój z funkcją explode()? Zdecydowanie tak.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Dzięki Panowie, teraz jest wszystko w porządku
![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 01:10 |