22. december 2004 - 15:19Der er
10 kommentarer og 2 løsninger
Udregne et gennemsnit
Hej Eksperter...
Jeg har netop et mindre problem med et "rating"-system, som skal regne gennemsnittet af brugernes stemmer ud.
Jeg bruger blandt andet følgende 2 koder: Nummer 1:_______________________ sql = "UPDATE elements SET rates = rates + 1 WHERE id = "& request.querystring("id")
Nummer 2:_______________________ sql = "UPDATE elements SET rating = rating + "& request.querystring("rate") &" : 4 WHERE id = "& request.querystring("id") ________________________________ Den første gemmer, hvor mange stemmer, der i alt er afgivet. Den anden gemmer "værdi af forrige stemmer" + "værdi af ny stemme" : "antal stemmer afgivet i alt"...
Det mente jeg, burde virke, men hvis jeg f.eks. først stemmer på "5" og derefter på "5" igen, så bliver resultatet 7,5... Hvis jeg stemmer "2" og "2", bliver det "6" og stemmer jeg "10" og "10", bliver det "15". Hvad går der dog galt?
Jeg har prøvet at undlade at dividere med antallet af stemmer, og så passer det eksempelvis at "10" og "10" giver "20"... Men ligeså snart division kommer på, bliver det underligt... Er det, fordi "/" ikke er division? For ":" virker heller ikke...
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Det dur ikke på den måde du gør der (altså matematisk). Du kan ikke lave gennemsnit beregning på den måde. Der lægger du den nye værdi til gennemsnittet også dividere med antalet af rates. Forstil dig at der er 100 brugere der alle har givet rating 2. Så skal rating=2. Der kommer så en og giver 5. Din formel bliver så: (2+5)/101 = 0,069.
Derfor gem den totale rating og antal, som jeg var inde på i post "15:44:34". I dette tilfælde ville rating=200 og antal=100. Så laver du en update:
sql = "update elements SET antal=(antal+1), rating=(rating+"& request.querystring("rate") &") where id="& request.querystring("id")
Så beregner du gennemsnittet når du selecter fra databasen i stedet.
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.