Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL

Programmation => PHP/MySQL - (x)HTML - ... => Discussion démarrée; par: shark94 le 03 Mars 2009, 20:16:40



Titre: Comment faire la moyenne de votes ?
Posté par: shark94 le 03 Mars 2009, 20:16:40
Bonjour, je veut faire un système de notation d'images (note sur 10), voilà j'ai fait le traitement pour enregistrer les votes dans ma base de donnée:
Code:
<?php
include('bdd.php');

session_start();

$login$_COOKIE['login'];
$vote $_POST['vote'];
$image $_POST['image'];
$ip $_SERVER['REMOTE_ADDR'];
$timestamp_actuel time();
$requete_timestamp_bdd mysql_query('SELECT timestamp FROM vote WHERE ip="'.$ip.'" AND login="'.$login.'"');
$timestamp_bdd mysql_fetch_array($requete_timestamp_bdd);
$ecart_timestamp $timestamp_actuel-$timestamp_bdd['timestamp'];
if(
$ecart_timestamp>24*3600)
{
mysql_query("INSERT INTO vote(login, vote, timestamp, ip, image) VALUES('".$login."', '".$vote."', '".time()."', '".$ip."', '".$image."')") or exit (mysql_error());
$erreur 'vote enregistré, merci. Redirection dans 3 sec...';
}
else
{
$erreur 'Vous avez déjà voté il y a moins de 24h. Redirection dans 3 sec...';
}
?>




J'aimerais savoir comment faire la moyenne des votes sur 10 ?
Merci de m'aider,
shark94


Titre: Re: Comment faire la moyenne de votes ?
Posté par: chrmag le 04 Mars 2009, 11:45:05
Ca deverait ressembler a ca:
Code:
SELECT image, sum(vote)/count(vote) AS moy FROM vote GROUP BY image
Tu peux aussi remplacer le "GROUP BY image" par "WHERE image='...'" pour avoir la moyenne pour une image particuliere.
Le seul probleme de la requete est que s'il n'y a pas de votes, elle ne retourne pas 0 comme moy, mais elle ne retourne "rien".

PS: ragarde aussi la fonction mysql_escape_string pour eviter des injections sql


Titre: Re: Comment faire la moyenne de votes ?
Posté par: shark94 le 04 Mars 2009, 15:54:50
comme ceci ?
Code:
<?php
$retour 
SELECT imagesum(vote)/count(vote) AS moy FROM vote GROUP BY image
$moyenne 
mysql_fetch_array($retour);
echo 
$moyenne ;?>

Je suis perdu, aide moi,
Merci


Titre: Re: Comment faire la moyenne de votes ?
Posté par: K@cem le 04 Mars 2009, 16:39:56
Pour calculer une moyenne, il vaut nettement mieux utiliser la fonction mysql AVG() ;)



Titre: Re: Comment faire la moyenne de votes ?
Posté par: shark94 le 04 Mars 2009, 17:05:43
je sais  ;) j'ai chercher sur google


Titre: Re: Comment faire la moyenne de votes ?
Posté par: shark94 le 05 Mars 2009, 01:15:45
Ca marche mais ca affiche la moyenne à chaque image  :-\  Voici mon code:

Code:
<?php
$requete
mysql_query("SELECT * FROM creations ORDER BY id DESC LIMIT " $premiereimageAafficher ",  ".$nombreDimagesParPage.""); //  'table' doit etre remplacer par le nom de ta table
while ($donnees mysql_fetch_array($requete)) // On fait une boucle pour lister les news
{
?>

<div class="div_creations">
<a href="creation.php?id=<?php echo $donnees['id'];?>"><IMG SRC="creations/<?php echo $donnees['image'];?>" <?php fctaffichimage(170150'creations/'.$donnees['image'].''?>/></a> <br />
  <form action="voteok.php" method="post">

<br />
<label for="vote">note:</label>
       <select name="vote" id="vote">
           <option value="1">1/10</option>
           <option value="2">2/10</option>
           <option value="3">3/10</option>
           <option value="4">4/10</option>
           <option value="5">5/10</option>
           <option value="6">6/10</option>
           <option value="7">7/10</option>
           <option value="8">8/10</option>
           <option value="9">9/10</option>
           <option value="10">10/10</option>
       </select><input type="hidden" name="id_creation" value="<?php echo $donnees['id'];?>"><br /><input type="submit" value="noter"></form>
<?php $id_creation $donnees['id'];
$query "SELECT id_creation, AVG(vote) FROM vote WHERE '$id_creation'"
 
$result mysql_query($query) or die(mysql_error());

// Print out result
while($row mysql_fetch_array($result))
{
echo "La moyenne est de ".$row['AVG(vote)']; 
}
?>

</div>
<?php ?>
(http://grafikarea.webou.net/grafikarea/image/probleme_moyenne.png)


Merci de m'aidez, je vous serai reconnaissant.


Titre: Re: Comment faire la moyenne de votes ?
Posté par: shark94 le 05 Mars 2009, 17:16:55
j'ai trouvé le problème  :) A+


Titre: Re: Comment faire la moyenne de votes ?
Posté par: shark94 le 26 Juin 2009, 23:49:33
La moyenne des votes est trop longue. Ex: 5.666666667/10. sur mon site grafikarea.webou.net. Comment régler ce problème ? Merci de m'aider.


Titre: Re: Comment faire la moyenne de votes ?
Posté par: chrmag le 27 Juin 2009, 00:51:15
http://be.php.net/round
exemple:
Code:
<?php echo round(10.0/32)."/10"?>