11. august 2006 - 14:22Der er
12 kommentarer og 1 løsning
Gennemsnit af stemmer
Hey.
Jeg er ved at lave et rate-system til mit spil-system.. Har lavet det sådan at man har mulighed for at vælge mellem at give 1 - 5 points. Når man har valgt det og trykker "RATE!", så bliver man sendt videre til siden hvor stemmen skal registeres.
Mit problem er, at jeg ikke ved hvordan jeg skal ligge stemmerne sammen, ved ikke hvordan jeg skal finde gennemsnittet af de samlede stemmer.
Har oprettet et felt i min 'spil' database, som hedder 'points', der skal gennemsnitet for det rated spil ligge, f.eks. 3,5. Har også oprettet en ny database, som indeholder 5 felter, 'ID, spilnavn, dato, ip, point'. Det vil sige at hver gang en bruger stemmer, så bliver brugerens point, ip osv. smidt ind i databasen, og derefter findes gennemsnittet af de nuværende points + brugerens point til det enkelte spil.
Mit script: $hent = mysql_query("SELECT * FROM spil WHERE ID = '$_POST[id]'") or die(mysql_error()); $vis = mysql_fetch_array($hent);
$hent_vote = mysql_query("SELECT id,ip FROM spil_vote WHERE ip = '$ip' AND ID = '$vis[ID]'") or die(mysql_error()); $vise = mysql_fetch_array($hent_vote);
if($vise[ip] == "$ip") { echo "Din stemme er allerede registeret."; }
$hent_from_vote = mysql_query("SELECT * FROM spil_vote") or die(mysql_error()); $show = mysql_fetch_array($hent_from_vote);
$q = mysql_query("SELECT SUM(point) AS samlet, COUNT(id) AS antal FROM spil_vote WHERE id='12345'"); $r = mysql_fetch_assoc($q); $gennemsnit = $r['samlet'] / $r['antal'];
Nu har jeg det sådan, at får jeg udleveret nogle koder her på eksperten, så vil jeg gerne vide hvad de betyder, ellers lærer man jo ikke noget af det :-). Forstår ikke hvad mysql_result() gør, AS, og ,0, AVG betyder vel average, dvs. gennemsnit?
jakobdo-> okay, det er jeg helt med på :-) Men kan du ikke forklare mig, hvad mysql_result gør, forstår ikke rigtig forklaringen .. tænkte også på om det kunne lade sig gøre at lave gennemsnittet til 2 decimaler.
mysql_result tager to parametre: det første selve resultatet fra mysql_query() og det andet parameter et tal alt efter hvilken kolonne man vil have ud (0 er den første her). Det svarer i virkeligheden lidt til følgende: $q = mysql_query("SELECT something FROM something); $r = mysql_fetch_array($q); echo $r[0];
Det andet er bare noget kortere.
Vil du have 2 decimaler kan du sige: $q = mysql_query("SELECT ROUND(AVG(point), 2) FROM spil_vote WHERE spil='spillets navn'"); $gennemsnit = mysql_result($q, 0);
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.