pbm pour le rating

pbm pour le rating - PHP - Programmation

Marsh Posté le 11-12-2002 à 12:50:31    

Voila je desire faire un rating grace a un champ 'rate' dans ma db.
cependant je ne voit pas trop comment je pourrait faire.
imaginons que sur une echelle de 0 a 5 les vote soit comme cela :
 
2-4-0
 
Si je fait d'abord la moyenne des 2 premier j'ai 3 et ensuite je reprend la valeure 3 et faire la moyenne avec 0 ca m fait 1.5!
 
or la veritable moyenne doit etre de 2.
 
Voila donc le probleme je ne voit aps tro comment faire un rating (pas techniquement, mais je ne voit pas comment :) )
 
Si qquna  une idée, je suis prenenur :)


Message édité par Profil supprimé le 11-12-2002 à 14:17:16
Reply

Marsh Posté le 11-12-2002 à 12:50:31   

Reply

Marsh Posté le 11-12-2002 à 12:57:44    

pourquoi tu prends les deux premiers, puis le troisieme apres ???
Comprends pas bien ton probleme ...  :??:


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 11-12-2002 à 12:59:06    

Faut stocker tous tes votes pour pouvoir avec chaque nouveau vote l'ajouter à tous les autres avant de faire ta moyenne, non  :??:

Reply

Marsh Posté le 11-12-2002 à 13:04:25    

Ah OK... j'ai compris...
Bah alors la soluce c'est de stocker le nombre de vote correspondant a la moyenne conservée.
Pour ton exemple c'est deux :
3*2+0 = 6
la nouvelle moyenne est donc :
6/(2+1) = 2 le compte est bon. Et tu as maintenant moy=2, nb=3.
Si quelqu'un vote 3 :
2*3+3=9
et :
9/(3+1) = 9/4 = 2.25
avec 2-4-0-3
 
T'as saisi mon explication ?


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 11-12-2002 à 13:07:37    

:jap: ok mmerci jvouyait pas le truc sous cette angle :)

Reply

Marsh Posté le 11-12-2002 à 13:58:57    

Je comprend pas du tout.
mon script ne marche pas pourtant tout semble correct :/
 

require("connect.php" );
session_register("pseudo" );
$connect=mysql_connect(SERVEUR, NOM, PASSE);
mysql_select_db(BASE, $connect);
//le nbr de votants
$requete="SELECT vote FROM forum WHERE comment='$comment'";
$query=mysql_query($requete);
//la note
$requete2="SELECT rate FROM forum WHERE comment='$comment'";
$query2=mysql_query($requete2);
 
//calcul
$new=$rate*$vote+$number;
$newrate=$new/($vote+1);
$newvotant=$vote++;
$requete3="UPDATE forum SET rate='$newrate' AND vote='$newvotant' WHERE comment='$comment'";
$query3=mysql_query($requete3);


 
ce script est provoque par la page :
 

 echo '<td bgcolor="#E8E8E8" align=right style="width:350px;">
  <center>';
  echo '<font color=red>Commentary</font><p>';
  echo $comment;
  echo '<p><font color=red>Rate this site</font><p>';
  echo '<form method=post action="rate.php">';
  echo '<select name="number">';
  echo'<option>0</option><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option></select>';
  echo '<input type=submit nom="submit" value="vote">';
  echo '</form>';
  echo '</td>';
  include("bas.php" );


 
vous voyez ce qui v apas?

Reply

Marsh Posté le 11-12-2002 à 14:19:21    

insert un enreg dans ta table de votes pour chaque personne qui vote.
 
ensuite un simple "select avg(rating) from vote_table" te donnera la moyenne


---------------
Don't blink. Don't even blink. Blink and you're dead. They are fast, faster than you could believe, don't turn your back, don't look away, and DON'T BLINK. Good luck.
Reply

Marsh Posté le 11-12-2002 à 14:23:59    

Chui partit sur stidée ;)
 
Pi ta method ca prend trop de place mysql nan? :ouch:

Reply

Marsh Posté le 11-12-2002 à 14:24:34    

j'ai pas une table de vote j'ai une table forum avec un rating pour chakun :)

Reply

Marsh Posté le 11-12-2002 à 15:18:14    

chacal_one333 a écrit :

j'ai pas une table de vote j'ai une table forum avec un rating pour chakun :)


 
créé une table en + alors pour les votes, avec un champ pour faire le lien sur l'id du topic (si j'ai bien compris ce que tu veux faire)
 
pour la place que ça prend c'est pas la mort t'as besoin de 3 champs int (topic, user, rating) pour chaque vote c'est tout ... et de plus ca te permet de savoir quand un user a déjà voté et donc de pas le recompter une 2eme fois ...


---------------
Don't blink. Don't even blink. Blink and you're dead. They are fast, faster than you could believe, don't turn your back, don't look away, and DON'T BLINK. Good luck.
Reply

Marsh Posté le 11-12-2002 à 15:18:14   

Reply

Marsh Posté le 11-12-2002 à 15:31:21    

waip c ske jfait ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed