Kom ihåg mig?
Home Menu

Menu


Röstningsproblem

Ämnesverktyg Visningsalternativ
Oläst 2006-05-21, 13:13 #1
Henrik Nygren Henrik Nygren är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 57
Henrik Nygren Henrik Nygren är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 57
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...
Henrik Nygren är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-05-21, 14:30 #2
Kristofers avatar
Kristofer Kristofer är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Mar 2004
Inlägg: 1 053
Kristofer Kristofer är inte uppkopplad
Har WN som tidsfördriv
Kristofers avatar
 
Reg.datum: Mar 2004
Inlägg: 1 053
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.
Kristofer är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-05-21, 15:51 #3
Henrik Nygren Henrik Nygren är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 57
Henrik Nygren Henrik Nygren är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 57
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.
Henrik Nygren är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-05-21, 17:18 #4
guran guran är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Apr 2004
Inlägg: 1 061
guran guran är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Apr 2004
Inlägg: 1 061
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!
guran är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-05-21, 22:24 #5
Henrik Nygren Henrik Nygren är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 57
Henrik Nygren Henrik Nygren är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 57
Ett spel har 1 röst, som är 4.
Jag röstar 3, resultatet blir 3,6
Henrik Nygren är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-05-21, 23:49 #6
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
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.
eg0master är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-05-22, 15:56 #7
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Kontrollera siffrorna i databasen när du lägger in värden så ser du nog precis var det blir fel.
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-05-23, 22:44 #8
guran guran är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Apr 2004
Inlägg: 1 061
guran guran är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Apr 2004
Inlägg: 1 061
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?
guran är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-05-23, 23:18 #9
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
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? =)
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2006-05-23, 23:55 #10
guran guran är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Apr 2004
Inlägg: 1 061
guran guran är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Apr 2004
Inlägg: 1 061
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.
guran är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 12:13.

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