WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Röstningsproblem (https://www.wn.se/forum/showthread.php?t=14204)

Henrik Nygren 2006-05-21 13:13

Jag har ett problem med mitt röstningsscript i mysql.

itemVotes räknar alla röster till sammans, tex om 50 personer röstat 3 blir det 50*3

itemVoters är antal som röstat

itemRating är itemVotes/itemVoters

Jag gör så här om någon tex röstar 4:

Kod:

UPDATE table SET `itemVotes` = `itemVotes`+4, `itemVoters`=`itemVoters`+1,`itemRating` = (`itemVotes`)/(`itemVoters`) WHERE `itemID` = 'något id'
Men det blir helt fel...

Kristofer 2006-05-21 14:30

vad får du för felmeddelande då?

blir det räknemässiga fel eller helt andra fel? när du ska addera på en variabel med värdet på personens röst, har du kommit ihåg att göra den till Integer ifall det inte redan är bestämt när du definierade variabeln?

Vad händer om du har en egen UPDATE för itemRating? Osäker på om itemvotes och itemvoters hinner uppdateras om du kör alla på rad.. men som sagt, posta gärna felmeddelande så kan nog någon få rätsida på dina problem.

Henrik Nygren 2006-05-21 15:51

Problemet är att det blir helt fel summor.

itemVotes int(10)
itemVoters int(10)
itemRating float(10,1)

Jag har testat med det här:
Kod:

UPDATE table SET `itemVotes` = `itemVotes`+4, `itemVoters`=`itemVoters`+1,`itemRating` = (`itemVotes`+4)/(`itemVoters`+1) WHERE `itemID` = 'något id'
Men det blir också fel.

guran 2006-05-21 17:18

Henrik, eftersom det inte synes vara något fel på din SQL-sats så måste du berätta vad som blir fel. Ange vilket resultat du förväntar dig och vad resultatet blir!

Henrik Nygren 2006-05-21 22:24

Ett spel har 1 röst, som är 4.
Jag röstar 3, resultatet blir 3,6

eg0master 2006-05-21 23:49

Inte för att jag förstår varför det blir fel eller tänker lägga tid på att undersöka orsaken, men varför räkna ut medelvärdet över huvud taget i tabellen? Jag tvivlar på att du har sådana performanceproblem så du inte har råd med en division i de fall du behöver rating-värdet.

tartareandesire 2006-05-22 15:56

Kontrollera siffrorna i databasen när du lägger in värden så ser du nog precis var det blir fel.

guran 2006-05-23 22:44

Citat:

Originally posted by Henrik Nygren@May 21 2006, 21:24
Ett spel har 1 röst, som är 4.
Jag röstar 3, resultatet blir 3,6

Och vilket resultat hade du förväntat dig?

tartareandesire 2006-05-23 23:18

Citat:

Ursprungligen postat av guran
Citat:

Ursprungligen postat av Henrik Nygren
Ett spel har 1 röst, som är 4.
Jag röstar 3, resultatet blir 3,6

Och vilket resultat hade du förväntat dig?

3,5 kanske? =)

guran 2006-05-23 23:55

Citat:

Originally posted by Henrik Nygren@May 21 2006, 21:24
Ett spel har 1 röst, som är 4.
Jag röstar 3, resultatet blir 3,6

Med satsen

Kod:

UPDATE table SET `itemVotes` = `itemVotes`+3, `itemVoters`=`itemVoters`+1,`itemRating` = (`itemVotes`)/(`itemVoters`) WHERE `itemID` = 'något id'
Borde ge 3,5. Det gör det på min dator i alla fall.


Alla tider är GMT +2. Klockan är nu 05:10.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson