Bonjour,
Je viens de mettre au point un système de vote sur chaque photo pour les utilisateur enregistrés mais j'ai rencontré un petit problème. Je ne peux dans la version actuel controler si le votant est le proprietaire de la photo pour la simple raison que dans l'image on stock l'auteur et pas le Nom d'utilisateur, qui est pourtant demandé lors de l'ajout d'images.
Je n'ai pas voulus modifier la structure des tables actuelles pour rester compatible avec les futures versions mais je pense qu'il serait bien à l'avenir de stocker le Nom d'utilisateur avec l'image et que dans la page d'ajout il soit vérouillé pour evité de le modifier.
A+
c'est parce que tu utilises PhpWebGallery en considérant que les utilisateurs sont des auteurs, or c'est très subjectif. Sur ma galerie perso, je suis le seul à rajouter des photos, mais l'auteur n'est pas toujours le même.
Hors ligne
Bonjour Marc,
Je suis un membre de ton site depuis pas mal de temps j'ai même quelque photo dans les plus vus.
Pour avoir un apperçu de mon système, je t'invite à faire un tour sur mon site http://galerie1.free.fr/ et si ca t'interresse, je ne vois pas d'objectionà t'indiquer les modifs.
Le système requère encore quelques amélioration, il faut que j'empêche le propriétaire d'une photo d'être obligé de votez pour lui.
Il faut aussi que je fasse une page qui affiche les photos ayant la meilleur note à la place des 10 plus vues qui n'est pas à mon avis une bonne chose parcequ'une nouvelle photo n'aura aucune chance d'etre dedans.
Sinon j'ai pris le choix d'obligé le vote pour voir le résultat.
Treddo,
Excuse, je ne t'avais pas reconnu.
Effectivement, ton système est bien au point et esthétiquement réussi.
Mais comme Phpwg est un programme en Open Source, je pense qu'il serait bien de donner les modifs dans ce forum pour que toute la communauté en profite.
Hors ligne
Bon si il y à quelques maladresse dans le code, ne m'en voulez pas, j'ai commencé le PHP mardi dernier.
Voici les modifs à ajouter derrière les lignes suivante dans "picture.php":
// calculation of width and height
if ( $page['width'] == "" )
{
$taille_image = @getimagesize( $lien_image );
//$original_width = $taille_image[0];
$original_height = $taille_image[1];
}
else
{
$original_width = $page['width'];
$original_height = $page['height'];
}
// SOURCE POUR LE VOTE----------------------------------------------
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
{
$picture_size = get_picture_size( $original_width, $original_height,
$user['maxwidth'], $user['maxheight'] );
$final_width = $picture_size[0];
$final_height = $picture_size[1];
if ( isset( $_POST['vote'] ))
{
$date=date("Y/m/d H:i:s");
mysql_query("INSERT INTO ".PREFIX_TABLE."pc_vote(Vote_Id,Vote_Id_Image,Vote_Id_User,Vote_Choix,Vote_Date)
VALUES('', " .$_GET['image_id']. ",'" .$user['username']. "'," .$_POST['note']. ",'$date')");
echo mysql_error();
}
$query = 'SELECT Vote_ID_Image';
$query.= ' FROM '.PREFIX_TABLE.'pc_vote';
$query.= ' WHERE Vote_ID_Image = ' .$_GET['image_id'];
$query.= " AND Vote_ID_User = '" .$user['username'] . "'";
$result = mysql_query( $query );
$row = mysql_fetch_array( $result,MYSQL_ASSOC );
if ( $row['Vote_ID_Image'])
{
$query = 'SELECT Vote_Choix';
$query.= ' FROM '.PREFIX_TABLE.'pc_vote';
$query.= ' WHERE Vote_ID_Image = ' .$_GET['image_id'];
$result = mysql_query( $query );
$NbVotant = 0;
$voteresultat = 0;
while ( $row = mysql_fetch_array( $result ) )
{
$NbVotant = $NbVotant + 1;
$voteresultat = $voteresultat + $row['Vote_Choix'];
}
if ($NbVotant == 0)
{
$voteresultat = 0;
}
else
{
$voteresultat = $voteresultat / $NbVotant;
}
$vtp->addSession( $handle, 'voteeff' );
$vtp->setGlobalVar( $handle, 'vote', $voteresultat );
$vtp->setGlobalVar( $handle, 'nbvote', $NbVotant );
$vtp->closeSession( $handle, 'voteeff' );
}
else
{
$vtp->addSession( $handle, 'vote' );
$vtp->setGlobalVar( $handle, 'form_action', str_replace( '&', '&', $_SERVER['REQUEST_URI'] ) );
$vtp->closeSession( $handle, 'vote' );
}
}
// FIN SOURCE POUR LE VOTE------------------------------------------
Il faut aussi mettre en commentaire les lignes qui suivent le le code original cité plus haut :
//$picture_size = get_picture_size( $original_width, $original_height,
// $user['maxwidth'], $user['maxheight'] );
//$final_width = $picture_size[0];
//$final_height = $picture_size[1];
Voici ensuite ce qu'il faut rajouter dans le fichier "picture.vtp" après les lignes suivantes
<!--/VTP_modification-->
{#frame_end}
<div style="text-align:center;">{#back}</div>
Mon sources :
<!--VTP_vote-->
<div style="text-align:center;margin-bottom:5px;">
<form name="form" method="post" action="{#form_action}">
<p><select size="1" name="note">
<option selected value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
<input type="submit" name="vote" value="Votez" lang="fr" />
</p>
</div>
<!--/VTP_vote-->
<!--VTP_voteeff-->
<div class="NBvote">
</BR>
<span style=font-size:10pt;>
<font color=yellow face=verdana>
Nb Votant : {#nbvote}
Resultat : {#vote}/10</div>
</p></font>
</BR>
</div>
<!--/VTP_voteeff-->
Bon ensuite dernière manip, il faut créer la table avec la requette suivante:
CREATE TABLE `phptable_pc_vote` (
`Vote_Id` int(11) unsigned NOT NULL auto_increment,
`Vote_Id_Image` mediumint(8) unsigned NOT NULL default '0',
`Vote_Id_User` varchar(15) NOT NULL default '',
`Vote_Choix` int(1) unsigned NOT NULL default '0',
`Vote_Date` datetime NOT NULL default '0000-00-00 00:00:00',
UNIQUE KEY `Vote_Id` (`Vote_Id`),
UNIQUE KEY `Vote_Clef_IdImag_IdUser` (`Vote_Id_Image`,`Vote_Id_User`),
KEY `Vote_Id_Image` (`Vote_Id_Image`,`Vote_Id_User`)
) TYPE=MyISAM;
Voula c'est tout, c'est améliorable mais ce n'est qu'un début.
Si vous vous en servez passez moi un petit message pour me dire ce que vous en pensez à galerie1@free.fr ça me fera plaisir.
Non, il faut allez dans la partie administration des tables et là tu execute la requette SQL que j'ai mis
Ca marche nickel, sauf que j'ai du changer le nom de la table, car il cherchait phpwebgallery_pc_vote alors que dans ta requète c'est phptable_pc_vote.
D'autre part, l'affichage du nombre de votant est en jaune, sur mon fond blanc on ne voit rien. Je vais chercher où je peux changer la couleur.
Hors ligne
Voilà j'ai trouvé pour le changement de couleur. C'est dans picture.vtp dans les lignes:
<!--VTP_voteeff-->
<div class="NBvote">
</BR>
<span style=font-size:10pt;>
<font color=red face=verdana>
Nb Votant : {#nbvote}
Resultat : {#vote}/10</div>
</p></font>
Treddo, ton mod marche impec, si ce n'est ce nom de table.
Je propose que tu fasse un mod pour le proposer.
Hors ligne
ça a l'air super il y a une demo que je puisse voir avant de me lancer ?
Hors ligne
Effectivement, pour le nom de la table il faut changer dans la requette "phptable" par le nom que vous avez donnés a votre base (par défaut "PhpWebGallery")
Voici donc la requette avec le nom de la base par défaut:
-----------------------------------------------------------------------------------
CREATE TABLE `PhpWebGallery_pc_vote` (
`Vote_Id` int(11) unsigned NOT NULL auto_increment,
`Vote_Id_Image` mediumint(8) unsigned NOT NULL default '0',
`Vote_Id_User` varchar(15) NOT NULL default '',
`Vote_Choix` int(1) unsigned NOT NULL default '0',
`Vote_Date` datetime NOT NULL default '0000-00-00 00:00:00',
UNIQUE KEY `Vote_Id` (`Vote_Id`),
UNIQUE KEY `Vote_Clef_IdImag_IdUser` (`Vote_Id_Image`,`Vote_Id_User`),
KEY `Vote_Id_Image` (`Vote_Id_Image`,`Vote_Id_User`)
) TYPE=MyISAM;
-----------------------------------------------------------------------------------
Pour la demo, marc a très bien su le mettre en place sur son site http://www.dimage-a1.com/Gallery/identification.php
Sinon bienvenue sur le mien http://galerie1.free.fr/
je la vois pas sur celle de marc par contre sur le tiens treddo je vois mais c ou qu'on vote etc? enfin desolé j'essaie de me renseigner car toucher à la table sql prefere etre sure avant de me lancer
merci
Hors ligne
ah oui ok j'ai vu! on est obligé d'etre membre enregistré pour voter?
serait il possible de le permettre pour les invités aussi?
Hors ligne
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é