Avatar billede RJFreelance Praktikant
29. oktober 2003 - 16:37 Der er 17 kommentarer og
1 løsning

rate. hvordan laves det bedst ?

Skal have lavet rate så man vælger 1 - 10.. og så finder den jo gennemsnittet men hvordan gør man det på mest "besparende" måde ??

Man kunne smide alle rates ind i db og hente alle ud og tage gennemsnit men det der meget "forbrugende"
Andre bedre måder ??
Avatar billede detox Nybegynder
29. oktober 2003 - 16:55 #1
Tja, du kan hente gennemsnit direkte i MySQL:
SELECT AVG(rate) FROM tabel
Avatar billede RJFreelance Praktikant
29. oktober 2003 - 16:59 #2
Ja men det er jo ikke det jeg mener.. Prøv at læse mit spg. igen..
Avatar billede detox Nybegynder
29. oktober 2003 - 17:06 #3
Ja, jeg forstår dit spørgsmål sådan at forskellige brugere kan angive en 'rate' og du derefter har brug for gennemsnittet. Og du foreslår selv at smide det i en DB. Jeg synes det er en ok måde at gøre det på og så foreslår jeg, at du henter gennemsnittet direkte i en forespørgsel:
$gennemsnit = mysql_result(mysql_query("SELECT AVG(rate) FROM tabel"),0);
Avatar billede RJFreelance Praktikant
29. oktober 2003 - 17:08 #4
Ja men jeg ville jo helst undgå at smide ALLE rates i db da det i længden ville fylde RIGTIGT meget...

Kunne det undgås ? ?
Avatar billede detox Nybegynder
29. oktober 2003 - 17:15 #5
Ja, så kunne du fx nøjes med en række i tabellen, hvor du dynamisk opdaterer gennemsnittet i den her stil (med eks. 2 decimaler):
UPDATE tabel SET rate=ROUND((rate+$rate)/2,2)
Avatar billede RJFreelance Praktikant
29. oktober 2003 - 17:18 #6
hvis der så står 4 i db og en indtaster 5 vil den så stadig finde gennemsnit ??
Avatar billede jensgram Nybegynder
29. oktober 2003 - 17:18 #7
Tja, men problemet er nu ikke så stort!

Alternativt kan du lave følgende:

rate_id (integer)
ratings (integer)
value (integer)

Når der så "rates" opdaterer du rækken med "rate_id", så:

ratings bliver talt én op
value bliver talt den angivne "rate" op!

Eks:

UPDATE ratings SET ratings = ratings + 1, value = value + $_POST['rating'] WHERE rate_id = $_POST['emne'];
Avatar billede jensgram Nybegynder
29. oktober 2003 - 17:19 #8
Havde ikke set indlæg efter 15 over...

Du kan hive ud med:

SELECT value / rating WHERE rate_id = $_POST['emne'];
Avatar billede cathallo Nybegynder
29. oktober 2003 - 17:20 #9
Hmmm, det ville et simpelt program (evt. c eller c++) kunne klare, ved et par variabler.
X+1  //tæller antal svar
Y = Y + nyt svar // adderer svarene sammen


Og så skal y bare divideres med X, og du har gennemsnittet 
Men hvordan det kan arbejde sammen med en hjemmeside er jeg dog ikke klar over men det kan vel laves magen til i PHP(kender ikke selv til PHP)
Avatar billede detox Nybegynder
29. oktober 2003 - 17:20 #10
mr_noname -> Det var osse en mulighed.
Avatar billede cathallo Nybegynder
29. oktober 2003 - 17:21 #11
Damn, jeg må skrive langsomt :)
Avatar billede RJFreelance Praktikant
29. oktober 2003 - 17:21 #12
tror jeg vil bruge mr nonames måde. Havde slet ikke tænkt over det ;)
Avatar billede RJFreelance Praktikant
29. oktober 2003 - 17:21 #13
Ligger du svar ??
Avatar billede jensgram Nybegynder
29. oktober 2003 - 17:23 #14
Jepper!

Du skal blot huske, at du skal bruge INSERT ved den FØRSTE rating! Derefter kan du bruge UPDATE!
Avatar billede RJFreelance Praktikant
29. oktober 2003 - 17:24 #15
jes jes :P
Avatar billede jensgram Nybegynder
29. oktober 2003 - 17:27 #16
Takker for points...
Avatar billede detox Nybegynder
29. oktober 2003 - 17:30 #17
Heller ikke nogen dum løsning, da du samtidig kan holde øje med antallet af ratings :o)
Avatar billede jensgram Nybegynder
29. oktober 2003 - 17:35 #18
detox > Ja, men det ville jo også være let med en

SELECT COUNT(id) FROM rating WHERE rate_id = $_POST['emne'] GROUP BY rate_id

Men det andet er da lettere...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester