Avatar billede TumseMM Nybegynder
10. august 2011 - 10:15 Der er 14 kommentarer og
1 løsning

Rating system - trække det ud og dividere

Hej Eksperten.dk

Har et rating system på min hjemmeside, hvor jeg gerne vil have trukket brugernes rating ud. Hvordan gør jeg det? Har prøvet med :

<?php
include'connect.php';

mysql_query("SELECT rating FROM ratings WHERE a_id = a_id")


?>

Hvor a_id er sætningen brugerne rater.
Ved bare ikke hvordan man laver den der dividere command? Og hvordan man ved hvor meget man skal dividere med - hvordan ved databasen hvor mange gange sætningen er blevet ratet?

Tak på forhånd!
Avatar billede olsensweb.dk Ekspert
10. august 2011 - 10:32 #1
Avatar billede ggxdg Nybegynder
10. august 2011 - 10:51 #2
Du skal vel have defineret a_id et eller andet sted? Ellers får du næppe nogen resultater.
Skal du have lavet et gennemsnit af deres rating?
Avatar billede ggxdg Nybegynder
10. august 2011 - 10:54 #3
hvis det er et gennemsnit, ville jeg bare bruge:
mysql_query("SELECT AVG(rating) FROM ratings WHERE a_id = $a_id")
Avatar billede ggxdg Nybegynder
10. august 2011 - 11:26 #4
Der skal iøvrigt lige smides en "GROUP BY a_id" ind i enden af queryen for at få AVG()-funktionen til at fungere.
Avatar billede TumseMM Nybegynder
11. august 2011 - 21:49 #5
Det fungerer ikke. Eller også gør jeg det forkert:

<?php

$a_id = mysql_real_escape_string($_POST['a_id']);
$rating = intval($_POST['rating']);

if($_POST['ratingsystem'])
{
$result = mysql_query("SELECT COUNT(rating) FROM ratings WHERE a_id, COUNT(rating) FROM ratings GROUP BY a_id");
while($row = mysql_fetch_array($result))

    echo '.$rating.';
}
?>
Avatar billede ggxdg Nybegynder
13. august 2011 - 00:29 #6
<?php

$a_id = mysql_real_escape_string($_POST['a_id']);
$rating = intval($_POST['rating']);

if($_POST['ratingsystem'])
{
$result = mysql_query("SELECT AVG(rating) AS avgrating FROM ratings WHERE a_id = $a_id GROUP BY a_id");
while($row = mysql_fetch_array($result))

    //echo gennemsnit
    echo $row['avgrating'];
}
?>


eller din egen:

<?php

$a_id = mysql_real_escape_string($_POST['a_id']);
$rating = intval($_POST['rating']);

if($_POST['ratingsystem'])
{
$result = mysql_query("SELECT COUNT(rating) AS crating,SUM(rating) AS srating FROM ratings WHERE a_id = $a_id GROUP BY a_id");
while($row = mysql_fetch_array($result))

    //dividér sum med antal for gennemsnit
    echo $row['srating']/$row['crating'];
    //samme som ovenfor, men uden alias
    //echo $row['SUM(rating)']/$row['COUNT(rating)'];
}
?>
Avatar billede TumseMM Nybegynder
14. august 2011 - 08:24 #7
Det ser helt rigtigt ud, men det lader ikke til at blive echoet ud på min hjemmeside :(..
Avatar billede ggxdg Nybegynder
15. august 2011 - 19:39 #8
fandt lige en fejl, der mangler et par 'tuborgklammer':

<?php
  $a_id = mysql_real_escape_string($_POST['a_id']);
  $rating = intval($_POST['rating']);

  if($_POST['ratingsystem'])
  {
    $result = mysql_query("SELECT AVG(rating) AS avgrating FROM ratings WHERE a_id = $a_id GROUP BY a_id");
    while($row = mysql_fetch_array($result))
    {
      echo $row['avgrating'];
    }
  }
?>


Se om ikke det skulle give et eller andet.
Hvis det stadig ikke fungerer, skal vi nok have kigget queryen lidt efter.
Avatar billede TumseMM Nybegynder
15. august 2011 - 22:14 #9
@ggxdg

virker stadig ikke :(
Avatar billede ggxdg Nybegynder
18. august 2011 - 10:42 #10
Er du sikker på at der er data i dine $_POST[]'s så?
Avatar billede ggxdg Nybegynder
18. august 2011 - 10:51 #11
<?php
  $a_id = mysql_real_escape_string($_POST['a_id']);
  $rating = intval($_POST['rating']);
  echo "a_id: " . $a_id . "<br />rating: " . $rating . "<br />ratingsystem: " . $_POST['ratingsystem'];
  if($_POST['ratingsystem'])
  {
    $result = mysql_query("SELECT AVG(rating) AS avgrating FROM ratings WHERE a_id = $a_id GROUP BY a_id");
    while($row = mysql_fetch_array($result))
    {
      echo $row['avgrating'];
    }
  }
?>


Prøv lige ovenstående, og skriv hvad der står ved:
a_id:
rating:
ratingsystem:
Avatar billede TumseMM Nybegynder
18. august 2011 - 19:05 #12
Der kommer følgende:

a_id:
rating: 0
ratingsystem:

Sætter pris på din hjælp!
Avatar billede ggxdg Nybegynder
18. august 2011 - 22:08 #13
ok... Så er der noget galt med dine forms.
Prøv lige at smide din form HTML kode ind.
Avatar billede TumseMM Nybegynder
20. august 2011 - 09:03 #14
På selve siden:

    <div style="position:absolute">
            <form method="post" action="store-rating.php">
            <input type="hidden" name="a_id" value="'.$id.'">
            <select name="rating" id="rating">
            <option value="1">1 - Dårligt</option>
            <option value="2">2 - Hmm..</option>
            <option value="3">3 - OK</option>
            <option value="4">4 - Godt</option>
            <option value="5">5 - Fantastisk!</option>
            </select>
            <input type="submit" name="ratingsystem" value="Rate!">
            </form>
            </div>

$id = $row['id']; (dette står højere oppe imellem php tegnene)
Avatar billede TumseMM Nybegynder
13. oktober 2011 - 22:00 #15
lukker
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