Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL Webou Webou Pro
Recherche avancée  
*
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
24 Juillet 2019, 02:43:46


Connexion avec identifiant, mot de passe et durée de la session


Pages: [1]   Bas de page
  Imprimer  
Auteur Fil de discussion: Comment faire la moyenne de votes ?  (Lu 6235 fois)
0 Membres et 1 Invité sur ce fil de discussion.
shark94
Habitué
**
Hors ligne Hors ligne

Messages: 84



Voir le profil
« 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
Journalisée
Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL
« le: 03 Mars 2009, 20:16:40 »

 Journalisée
chrmag
Bavard
***
Hors ligne Hors ligne

Messages: 131


Voir le profil WWW
« Répondre #1 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
Journalisée
shark94
Habitué
**
Hors ligne Hors ligne

Messages: 84



Voir le profil
« Répondre #2 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
Journalisée
K@cem
Never trust user input
Big boss
*****
Hors ligne Hors ligne

Messages: 2 724



Voir le profil WWW
« Répondre #3 le: 04 Mars 2009, 16:39:56 »

Pour calculer une moyenne, il vaut nettement mieux utiliser la fonction mysql AVG() Clin d'oeil

Journalisée

Le support ne se fait pas par MP, merci de le respecter !
shark94
Habitué
**
Hors ligne Hors ligne

Messages: 84



Voir le profil
« Répondre #4 le: 04 Mars 2009, 17:05:43 »

je sais  Clin d'oeil j'ai chercher sur google
Journalisée
Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL
« Répondre #4 le: 04 Mars 2009, 17:05:43 »

 Journalisée
shark94
Habitué
**
Hors ligne Hors ligne

Messages: 84



Voir le profil
« Répondre #5 le: 05 Mars 2009, 01:15:45 »

Ca marche mais ca affiche la moyenne à chaque image  Ind&eacute;ci  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 ?>



Merci de m'aidez, je vous serai reconnaissant.
Journalisée
shark94
Habitué
**
Hors ligne Hors ligne

Messages: 84



Voir le profil
« Répondre #6 le: 05 Mars 2009, 17:16:55 »

j'ai trouvé le problème  Sourire A+
Journalisée
shark94
Habitué
**
Hors ligne Hors ligne

Messages: 84



Voir le profil
« Répondre #7 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.
Journalisée
chrmag
Bavard
***
Hors ligne Hors ligne

Messages: 131


Voir le profil WWW
« Répondre #8 le: 27 Juin 2009, 00:51:15 »

http://be.php.net/round
exemple:
Code:
<?php echo round(10.0/32)."/10"?>
Journalisée
Pages: [1]   Haut de page
  Imprimer  
 
Aller à:  

Propulsé par MySQL Propulsé par PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Dilber MC Theme by HarzeM
Page générée en 0.063 secondes avec 23 requêtes.