Modérateur PHPfrance |
2575 Messages
23 sept. 2013, 21:38
j'aimerais afficher le nombre de personnes qui ont votés car j'ai leur IP convertit en un nombre.
Le soucis c'est que je n'ai aucune colonne qui m'affiche le nombre d' IP global.
Si j'ai une personne qui vote 5 fois, j'ai 5 fois son IP au lieu d'une fois.
C'est possible de regrouper la table
suggestions_votes par IP pour compter les doublons des mêmes participants (ip). On utilise pour cela GROUP BY avec un COUNT.
Ce qui donne la même chose que le programme que je t'ai envoyé à la différence prêt que la requête de ce dernier produit un résultat $result qui peut contenir plusieurs enregistrements correspondant à tous les participants aux votes
//************************************//
// CALCUL DU NOMBRE DE VOTES PAR PARTICIPANT (identifié par IP)
//***********************************//
//execution de la requete
$result = $mysqli->query("SELECT ip, COUNT(*) AS nb FROM suggestions_votes GROUP BY ip");
//test du resultat qui peut contenir plusieurs enregistrements
while ($result && $row = $result->fetch_object()){
$ip = $row->ip;
$nb = $row->nb;
//affichage du nombre de votes par ip
echo "<li>Le nombre de votes pour le participant : ".long2ip($ip)." est : ".$nb." vote(s)</li>";
}
Globalement voici le programme de test que j'ai programmé pour tes requêtes de stats:
<?php
//debut
$mysqli = new PDO('mysql:dbname=test;host=localhost', 'root', '');
if(!$mysqli){
echo '<li>Erreur de connection a la base de donnees!</li>'; // On affiche un message d'erreur.
}
//************************************//
// CALCUL DU NOMBRE DE SUGGESTIONS
//***********************************//
//execution de la requete
$result = $mysqli->query("SELECT COUNT(*) AS nb FROM suggestions");
//test du resultat
if ($result){
$suggestion = $result->fetchObject();
$nb = $suggestion->nb;
}
else {
$nb = 0;
}
//affichage du nombre de suggestions
echo "<li>Le nombre de suggestions est : ".$nb."</li>";
echo '<hr>';
//************************************//
// CALCUL DU NOMBRE DE VOTES PAR SUGGESTION
//***********************************//
//execution de la requete
$result = $mysqli->query("SELECT suggestion_id, COUNT(*) AS nb FROM suggestions_votes GROUP BY suggestion_id");
//test du resultat qui peut contenir plusieurs enregistrements
while ($result && $row = $result->fetchObject()){
$suggestion_id = $row->suggestion_id;
$nb = $row->nb;
//affichage du nombre de votes par suggestion
echo "<li>Le nombre de votes pour la suggestion : ".$suggestion_id." est : ".$nb." vote(s)</li>";
}
echo '<hr>';
//************************************//
// CALCUL DU NOMBRE DE VOTES PAR PARTICIPANT (identifié par IP)
//***********************************//
//execution de la requete
$result = $mysqli->query("SELECT ip, COUNT(*) AS nb FROM suggestions_votes GROUP BY ip");
//test du resultat qui peut contenir plusieurs enregistrements
while ($result && $row = $result->fetchObject()){
$ip = $row->ip;
$nb = $row->nb;
//affichage du nombre de votes par ip
echo "<li>Le nombre de votes pour le participant : ".long2ip($ip)." est : ".$nb." vote(s)</li>";
}
//fin
?>
--------
//////----
//---
//----
//////
-------
//---
//----
//---
//----
//---
//
------
//////----
//////-----
//////
-----
||--------
||--
||---
||
Prendre le recul n'est pas une perte de temps.
ps:
Affrontez moi dans l'arène