Je viens de m'appercevoir d'une petite erreur, le résultat n'est pas arrondi ce qui peux générer des résultats du style 5,5465465465464.
Voici la modif, il faut remplacer la ligne :
$voteresultat = $voteresultat / $NbVotant;
par celle ci :
$voteresultat = round($voteresultat / $NbVotant, 2);
A+
Désolé Laurie, que veux tu dire par MOD ?
Si c'est un package tout fait, c'est non pour l'instant, j"ai d'autre amélioration en vue.
Je pense que le mieux est d'attendre d'avoir un truc complet. Je suis sur la liste des photos les mieux notés en affichan le nb de votant, la moyene, l'écart type, la note mini et la note max. Mais j'ai quelque problème à comprendre le réaffichage de la page, je voudrait faire comme pour les 10 plus vues.
J'ai prévu aussi de faire une modif pour ne pas que les détenteurs puissent voter pour leur propres photos sans toucher à la table image d'origine.
Mais c'est comme vous voulez si vous y tenez vraiment je peux le faire.
A+
ok treddo on te laisse faire c dejà très bien mais si tu peux faire encore mieux on patientera. en tous cas merci pour tes efforts
Hors ligne
Treddo a écrit:
Si tu veux que les visiteurs aient les memes droit, il faut enlever le début
------------------------------------------------------------------
if ( $user['is_the_guest'])
{
//Ici je mets des petites images pour les visiteurs
// et il ne peuvent pas voter
$picture_size = get_picture_size( $original_width, $original_height,
150, 150 );
$final_width = $picture_size[0];
$final_height = $picture_size[1];
}
else
{
-------------------------------------------------------------------
et aussi la dernière accolade du source à ajouter.
Je ne te garantie pas que ca marche comme cela, je n'est pas essayé
Merci à toi Treddo pour ce mod, c'est bien cool, bon boulot !
Mais j'ai une question: moi je désire que les visiteurs puissent aussi voter. Mais bon j'ai un pti problème, voilà ce qu'il se passe pour le moment:
Pour les membres de la galerie, pas de problème, les votes se comptabilisent bien les uns avec les autres.
Par contre, une fois qu'un visiteur (non-enregistré donc) a voté pour une image, plus aucun autre visiteur ne peut voter... N'y aurait-il pas moyen d'ajouter une ptite portion de code vérifiant l'adresse IP du visiteur, de sorte qu'un visiteur ne puissent plus voter (jusqu'à ce que son IP change) et permettre ainsi à n'importe quel autre visiteur de pouvoir voter?
Grand merci d'avance pour l'info, et j'attends avec impatience l'évolution de ce mod !
Par contre, une fois qu'un visiteur (non-enregistré donc) a voté pour une image, plus aucun autre visiteur ne peut voter...
Ce qui est assez normal, puisque dans Pwg le "visiteur" est un login à part entière.
Hors ligne
Et bien oui effectivement, et c'est pour ça que j'aimerais pouvoir différencier les visiteurs suivant leur IP...
Bah non, après avoir bien réfléchi c'est mieux que seuls les membres enregistrés puissent voter, les votes seront comme ça plus équitables.
Treddo, si tu développe une page affichant les miniatures par nombre de votes (genre les 20 photos ayant le + de votes), je suis preneur !
Encore merci pour ton code !
Hors ligne
J'ai commencé a faire une modif pour afficher les photos classées par vote avec la note mini, la maxi, le Nb de vote et l'écart type mais cela implique trop de modif dans différents fichiers et j'ai donc fais machine arrière pour rester un maximum compatible avec la version originale.
Par contre voici une requette SQL qui pourra te donner les infos
SELECT phpwebgallery_pc_vote.Vote_Id_Image,
AVG( phpwebgallery_pc_vote.Vote_Choix ) AS Note_Moyenne,
STD( phpwebgallery_pc_vote.Vote_Choix ) AS Note_Ecart,
MIN( phpwebgallery_pc_vote.Vote_Choix ) AS Note_Min,
MAX( phpwebgallery_pc_vote.Vote_Choix ) AS Note_Max,
phpwebgallery_images.file,
phpwebgallery_images.name
FROM phpwebgallery_pc_vote
INNER JOIN phpwebgallery_images ON phpwebgallery_pc_vote.Vote_Id_Image = phpwebgallery_images.id
GROUP BY phpwebgallery_pc_vote.Vote_Id_Image
ORDER BY `Note_Moyenne` DESC
Bonjour,
J'ai fait une petite modif qui ne chamboule pas tout et qui n'est peut etre pas parfaite pour les pro du dev mais qui à le mérite de marcher.
La première affiche les 100 photos les mieux notées et la deuxième les 100 photos les plus controversées. Vous pourrez donc mettre l'une ou l'autre ou les deux si ca vous interresse.
1> dans .\template\default\category.vtp après les lignes suivantes :
<!--/VTP_favorites-->
<br /> <img src="{#lien_collapsed}" alt=">" /> <span style="font-weight:bold;">{#stats}</span>
<br /> <img src="{#lien_collapsed}" alt=">" /> <a href="{#most_visited_url}"><span title="{#most_visited_cat_hint}" style="font-weight:bold;">{#top_number} {#most_visited_cat}</span></a>
<br /> <img src="{#lien_collapsed}" alt=">" /> <a href="{#recent_url}"><span title="{#recent_cat_hint}" style="font-weight:bold;">{#recent_cat}</span></a> {#icon_short}
Ajouter :
<br /> <img src="{#lien_collapsed}" alt=">" /> <a href="./meilleurnote.php"><span title="Les mieux notées" style="font-weight:bold;">Les mieux notées</span></a> {#icon_short}
<br /> <img src="{#lien_collapsed}" alt=">" /> <a href="./controverse.php"><span title="Les plus controversées" style="font-weight:bold;">Les plus controversées</span></a> {#icon_short}
2> créer un fichier .\controverse.php pour les + controversées avec ceci comme code:
<?php
$title = "Les Notes";
include_once( './include/init.inc.php' );
initialize_category();
//----------------------------------------------------- template initialization
include('include/page_header.php');
$handle = $vtp->Open( './template/'.$user['template'].'/category.vtp' );
initialize_template();
//------------------------------------------------------------------
//Les meilleurs
//------------------------------------------------------------------
$array_cat_directories = array();
$query = "SELECT ".PREFIX_TABLE."pc_vote.Vote_Id_Image, ";
$query.= "COUNT( ".PREFIX_TABLE."pc_vote.Vote_Choix ) AS Note_Votes, ";
$query.= "AVG( ".PREFIX_TABLE."pc_vote.Vote_Choix ) AS Note_Moyenne, ";
$query.= "STD( ".PREFIX_TABLE."pc_vote.Vote_Choix ) AS Note_Ecart, ";
$query.= "MIN( ".PREFIX_TABLE."pc_vote.Vote_Choix ) AS Note_Min, ";
$query.= "MAX( ".PREFIX_TABLE."pc_vote.Vote_Choix ) AS Note_Max, ";
$query.= PREFIX_TABLE."images.name, ";
$query.= PREFIX_TABLE."images.file, ";
$query.= PREFIX_TABLE."images.filesize, ";
$query.= PREFIX_TABLE."images.tn_ext, ";
$query.= PREFIX_TABLE."images.storage_category_id ";
$query.= "FROM ".PREFIX_TABLE."pc_vote ";
$query.= "INNER JOIN ".PREFIX_TABLE."images ON ".PREFIX_TABLE."pc_vote.Vote_Id_Image = ".PREFIX_TABLE."images.id ";
$query.= "GROUP BY `Vote_Id_Image`";
$query.= "ORDER BY Note_Ecart DESC LIMIT 0,100";
$result = mysql_query( $query );
while ( $row = mysql_fetch_array( $result ) )
{
// retrieving the storage dir of the picture
if ( !isset($array_cat_directories[$row['storage_category_id']]))
{
$array_cat_directories[$row['storage_category_id']] =
get_complete_dir( $row['storage_category_id'] );
}
$cat_directory = $array_cat_directories[$row['storage_category_id']];
$file = get_filename_wo_extension( $row['file'] );
// thumbnail url
$thumbnail_url = $cat_directory;
$thumbnail_url.= 'thumbnail/'.$conf['prefix_thumbnail'];
$thumbnail_url.= $file.'.'.$row['tn_ext'];
echo '<p align="center">';
echo '<table border>';
echo '<tr><td rowspan="2" width="165" height="165"> <p align="center"><img src="' .$thumbnail_url .'"</p> </td> ';
echo '<td width="300"><p align="center">';
if ($row['name'] != '')
{
echo $row['name'] ;
}
else
{
echo $row['file'] ;
}
echo '</p></td></tr>';
echo '<tr><td width="300">';
echo '<blockquote>';
echo '<br /><br /> Nb Votes = ' .$row['Note_Votes'] ;
echo '<br /> Moyenne = ' .round($row['Note_Moyenne'] ,2) ;
echo '<br /> Ecart = ' .round($row['Note_Ecart'] ,2) ;
echo '<br /> Min = ' .$row['Note_Min'] ;
echo '<br /> Max = ' .$row['Note_Max'] .'</td>';
echo '</blockquote>';
echo '</td> </tr>';
echo '</table>';
echo '</p>';
}
include('include/page_tail.php');
?>
3> créer un fichier ./meilleurnote.php pour les mieux notées identique au précédent sauf la ligne :
$query.= "ORDER BY Note_Ecart DESC LIMIT 0,100";
qu'il faut remplacer par :
$query.= "ORDER BY Note_Moyenne DESC LIMIT 0,100";
Voila ca marche si vous voulez + ou moins de photos vous changez la LIMIT.
Je l'ai mis en place sur mon site si vous voulez allez voir http://galerie1.free.fr
A+
hum j'ai une erreur au lancement de ma page de résultats de vote qui dit que "mysql_fetch_array(): supplied argument is not a valid MySQL" à la ligne 33... ligne ou il y a while ( $row = mysql_fetch_array ( $result ) )
?!
Hors ligne