11. november 2006 - 14:59
Der er
17 kommentarer
FInde procent fra afstemning
Jeg mangler lidt hjælp til at lave et 'hot or not' system. Jeg gjorde før det, at lave en INSERT INTO () hver gang en stemte - men det sløver utroligt meget. Hvordan skal det ellers gøre? Man kan stemme på 1 - not 2 - grim 3 - mellem 4 - ok 5 - hot Ved bare ikke hvordan jeg finder gennemsnittet, og hvordan mysql kolonnerne skal se ud :\ Nogle der ka' hjælpe?
Annonceindlæg fra Novataris
Vejen til devops med Bavarian Nordic
Bavarian Nordics vækst blev starten på et DevOps-samarbejde med Novataris for hurtigt at kunne tilpasse IT-organisation til forretningen.
7. december 2023
11. november 2006 - 16:03
#1
Du kan lave én række pr. element, der skal kunne vurderes. id | cntVotes | valVotes Ved afstemning tæller du cntVotes én op, mens valVotes tælles 1-5 op. Gennemsnittet vil da altid være valVotes / cntVotes. Det lyder bare ikke helt rigtigt, at det skulle sløve med en række pr. stemme. Har du indekseret mv.?
11. november 2006 - 16:12
#2
Nu har jeg gjort noget andet. Tabel: id, billed, stemme1, stemme2, stemme3,stemme4,stemme5 så plusser jeg stemme1+stemme2+stemme3+stemm4+stemme5 og ganger med 100 og dividere med alle stemmer i hele tabellen. Er det ikke rigtigt gjort?
11. november 2006 - 16:20
#3
Det er en lidt omstændig måde. id, billed, stemme (med værdi 1-5) vil være en tand bedre, men stadig redundant da hver række stadig vil indeholde både id og billede
11. november 2006 - 16:27
#4
Men har jeg gjort det rigtigt? Hos mig regner den helt forkert nemlig.. den tæller slet ikke procent. $check = mysql_query("SELECT COUNT(*) AS antal, stemme1,stemme2,stemme3,stemme4,stemme5 FROM hotornotstem WHERE billed = '" . $row['picput'] . "' GROUP BY billed"); $lolzki = mysql_fetch_assoc ( $check ); $antallet = ($lolzki['stemme1'] + $lolzki['stemme2'] + $lolzki['stemme3'] + $lolzki['stemme4'] + $lolzki['stemme5']); $s.="<br /><strong style=\"font-size:16px;\">Gennemsnit: " . round($antallet*100/$lolzki['antal'], 2) . " %</strong>";
11. november 2006 - 16:39
#5
Eller hvad?
11. november 2006 - 17:24
#6
Nej, det er ikke rigtigt. Hvad indeholder rækkerne stemme1-5? Værdierne 1-5? Hvorfor ændrer du det ikke til forslaget 11/11-2006 16:20:53 ?
11. november 2006 - 18:32
#7
Prøv det her: $user = "33"; $q1 = mysql_query("SELECT picput FROM hotornotstem WHERE id='$id'") OR die(mysql_error()); $row1 = mysql_fetch_array($q1); $q2 = mysql_query("SELECT * FROM hotornotstem WHERE billed = {$row1['picput']}) OR die(mysql_error()); $row2 = mysql_fetch_array($q2); $stemmer = $row2["stemme1"]+$row2["stemme2"]+$row2["stemme3"]+$row2["stemme3"]+$row2["stemme5"]; $antal_stemmer = $row2["antal"]; $output = round($stemmer/$antal_stemmer, 1); echo $output; // Dette resultat er kun med et decimal
11. november 2006 - 18:34
#8
Hov... $user skal selfølgelig være $id
11. november 2006 - 18:45
#9
Hey.. nu har jeg lavet det som jensgram sagde . Min tabel er nu: id, billed, stemmer, ialt. Når en stemmer på fx billede "hej.jpg" med HOT (5), og en anden giver den NOT(1) så er: billed = "hej.jpg" stemmer = 5,1 ( 6 ) ialt = 2 Så bruger jeg denne: $result = mysql_query("SELECT ialt AS stemmerialt, stemmer AS stemmerne, brugere.brugernavn AS navnet, billedgalleri.billede AS billed FROM hotornotstem, brugere,billedgalleri WHERE billedgalleri.brugernavn = brugere.brugernavn AND brugere.koen = 'p' ORDER BY stemmerne DESC LIMIT 0,10 "); og til at finde gennemsnittet: $antal = round($row['stemmerne']/$row['stemmerialt'],2); Men den udskriver 5 hele tiden - kan i fortælle mig hvorfor den regner forkert?
11. november 2006 - 18:50
#10
stemmer skal ikke være en liste, men summen af stemmerne. billed = "hej.jpg" stemmer = 6 ialt = 2 Så skulle det spille.
11. november 2006 - 19:28
#11
Undskyld men hvad mener du? Hvad skal jeg ændre i min kode?
11. november 2006 - 19:50
#12
Når du skal lave en update af din tabel, når der kommer en ny stemme, skal du trække det tal ud der står i din db og plusse den med det nye tal og skrive det nye tal i din db.
11. november 2006 - 19:53
#13
hvad taler du om? det var ikke det jeg spurgte om.. det har jeg lavet for længst.. nu vil jeg udskrive en top 10 liste og finde gennemsnittet
12. november 2006 - 01:34
#14
jensgram det har jeg også. stemmerne er jo fx 6 hvis en har stemt 5 og en anden 1 ( 5 + 1 = 6)
12. november 2006 - 14:31
#15
Hvad er spørgsmålet så? Hvis du vil finde top10, så: SELECT (stemmer / ialt) AS gns, brugere.brugernavn AS navnet, billedgalleri.billede AS billed FROM hotornotstem, brugere, billedgalleri WHERE billedgalleri.brugernavn = brugere.brugernavn AND brugere.koen = 'p' ORDER BY gns DESC LIMIT 0,10
12. november 2006 - 21:57
#16
tak for svaret jensgram. men resultatet fungere ikke helt optimalt tror jeg. fordi jeg får gns til 5.00... det kan ikke passe, da den ikke har fået topkarakter hele tiden. den skulle typisk være 4.54 osv fx.. er der fejl eller?!
13. november 2006 - 05:31
#17
Hvad indeholder tabellen? (stemmer, ialt)? Det lyder underligt, men din tabel må indeholde data, der ikke helt stemmer (eller giver 5.0)...
Vi tilbyder markedets bedste kurser inden for webudvikling