Avatar billede lakana Nybegynder
10. oktober 2006 - 15:15 Der er 15 kommentarer og
1 løsning

afstemning koncept

hejsa jeg sidder stadig og tænker over hvordan jeg skal lave mit system.

det skal være sådan man kan stemme på en skala fra 1-5 på profilbilleder f.eks. så hvis i stemmer "dårligt" på profilbilledet, som er 1, så skal den jo give mindre i procenterne, og hvis så en anden stemmer top karakter, som er 5, så skal den jo lægge lidt mere til procenterne.

hvordan laver jeg dette?
Avatar billede superraider Nybegynder
10. oktober 2006 - 16:06 #1
Sum_af_Stemmer / (Antal_stemmer * 5) * 100  = %
Summen af alle stemmer divideret med topscore(5*antalet der har stemt)  * 100 giver en procent sats. hvis det er hvad du tænker på
Avatar billede nielle Nybegynder
10. oktober 2006 - 16:52 #2
Man kan også bede databasen om selv at udregne gennemsnittet med avg (for average = gennemsnit) funktionen:

SELECT avg(stemme) AS gennemsnit FROM profilBilleder WHERE profilBillede=1
Avatar billede lakana Nybegynder
10. oktober 2006 - 19:25 #3
øøh.. læs lige spørgsmålet igen.. jeg spørger ikke om at finde procenterne kun.. jeg spørger også efter en løsning på hvordan databasen skal se ud, hvilke felter den skal have
Avatar billede lakana Nybegynder
10. oktober 2006 - 19:33 #4
hvis nu du stemmer på et billede af mig, og giver mig topkarakteren 5.
så har jeg 100% i karakter

så hvis en anden stemmer laveste karakter ( 1 ) så skal jeg fx kun have 43%

hvordan gør jeg det
Avatar billede nielle Nybegynder
10. oktober 2006 - 19:34 #5
Det synes jeg nu ellers ikke fremgår specielt tydeligt af spørgsmålet.

Et bud der at du laver din tabel på denne måde:

=== tabel: stemmer ===
id - int, auto_increment
profilBilledeId - int, peger på det billeder der stemmes om
stemme - int, værdierne 1-5

Hver gang at nogen stemmer på et billede lægges der en række i afstemning-tabellen. Med "stemmen" og id'et på det billeder der er stemt på.

Når du skal beregne karakteren, kan du gøre sådan:

SELECT count(*) antalStemmer, avg(stemme) AS gennemsnit FROM stemmer WHERE profilBillede=1

Så har du antallet af stemmer i "antalStemmer" og karakteren i "gennemsnit".
Avatar billede nielle Nybegynder
10. oktober 2006 - 19:36 #6
Hvis nogen stemmer på dig og giver dig 5, så har du karakteren 5. Det vil du have oversat til 100 - ikke noget problem. Men hvad med hvis nogen stemmer og gav dig 1? Skulle det så være 0% eller hvad?
Avatar billede lakana Nybegynder
10. oktober 2006 - 19:39 #7
ja, det går jeg ud fra.. har ikke styr på afstemningsscript og matematik
Avatar billede nielle Nybegynder
10. oktober 2006 - 19:43 #8
Det er ikke matematik, det er mere noget du selv vægler at definere.

Det er lige så naturligt at du vælger at:

1 betyder 20%

- som at du vælger at:

1 betyder 0 %

'1' er jo blot den laveste stemme som du tillader.
Avatar billede lakana Nybegynder
10. oktober 2006 - 19:45 #9
så vil jeg sige:
1 = 20%
2 = 40%
3 = 60%
4 = 80%
5 = 100%

Så siger vi jeg trykker under billedet, og giver karakteren 3 til at starte med så sætter den ind i databasen "stemmer" med profilbilledeid = 1 fx, stemme = 3

så henter jeg det ud fra databasen når jeg skal vise procenterne
SELECT count(*) antalStemmer, avg(stemme) AS gennemsnit FROM stemmer WHERE profilBilledeid=1

echo "procent: " . $gennemsnit . "%"

?`??
Avatar billede nielle Nybegynder
10. oktober 2006 - 19:50 #10
Med tabellen fra 10/10-2006 19:45:17, så skal SQL'en modifiseres sådan:

SELECT count(*) antalStemmer, avg(stemme*100) AS gennemsnit FROM stemmer WHERE profilBilledeid=1

- og så er bare at udskrive værdierne:

$profilBilledeid = $_GET["id"]; // Eller hvordan du vælger den?
$sql = "SELECT count(*) antalStemmer, avg(stemme*100) AS gennemsnit FROM stemmer WHERE profilBilledeid=$profilBilledeid";
$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($result);

echo "procent: " . $row["gennemsnit"] . "% (stemmer: " . $row[antalStemmer"] . ")";
Avatar billede nielle Nybegynder
10. oktober 2006 - 19:52 #11
Ups, sådan:

SELECT count(*) antalStemmer, avg(stemme*20) AS gennemsnit FROM stemmer WHERE profilBilledeid=1
Avatar billede expnet Seniormester
10. oktober 2006 - 20:03 #12
Nielle -> jeg sidder og følgende med i spg. jeg vil lige høre om man skal rette 20 til 10 hvis man vil have minst procent til at være 10
Avatar billede nielle Nybegynder
10. oktober 2006 - 20:06 #13
Sikkert. Men hvor let det er, afhænger nu lidt af hvad de andre stemmer så skulle oversættes til. :^)
Avatar billede lakana Nybegynder
10. oktober 2006 - 20:37 #14
smid svar og takker
Avatar billede lakana Nybegynder
10. oktober 2006 - 20:38 #15
hvad så hvis den skal vise 0% ved dem som slet ikke er i databasen??
Avatar billede nielle Nybegynder
10. oktober 2006 - 20:48 #16
Til det tjekker du værdien af $row[antalStemmer"] og hvis den er 0, så skriver du 0%. Det er nok den nemmeste måde at gøre det på.

... og et svar :^)
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