begin process at 2012 05 28 14:06:14
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > NOTATION AVEC ÉTOILES ET POSSIBILITÉ DE MODIFICATION DE LA NOTE

NOTATION AVEC ÉTOILES ET POSSIBILITÉ DE MODIFICATION DE LA NOTE


 Information sur la source

Note :
Aucune note
Catégorie :Divers Classé sous :notation, ajax js, étoile, note Niveau :Débutant Date de création :25/08/2010 Date de mise à jour :16/10/2010 15:08:28 Vu / téléchargé :3 250 / 213

Auteur : rayman223

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Tout d'abord, je tiens à préciser que ce n'est pas moi qui ai créé cette source.
Mais je me suis permit de modifier la source, de la traduire et de l'améliorer.

La grosse amélioration est qu'il est possible au membre votant, de modifier son vote par la suite.

J'en viens à la description.
Les enregistrements se font par une table SQL.
_drawrating.php affiche la barre.
_config-rating.php contient quelques notes à lire et des configurations.
rpc.php modifie ou ajoute dans la table en passant pas AJAX.
db.php modifie ou ajoute dans la table sans passer par AJAX (si JS désactivé).
index.php sert uniquement d'exemple.
rating.js et behavior.js sert pour l'AJAX.
structure.sql contient la structure de la table SQL.

Source

  • <?php
  • //Affichage de la barre de notation
  • function rating_bar($id_serie, $units = '', $static = '')
  • {
  • //enregistrement de la page de notation
  • $_SESSION['referer'] = $_SERVER['SCRIPT_URL'];
  • //info
  • require('_config-rating.php');
  • //config variable
  • if (!$units) {$units = ETOILE_MAX;} //par défaut, affichage de 10 étoiles
  • if (!$static) {$static = FALSE;} // par défaut, activation des votes.
  • //on prend les infos propre à la série
  • $query = mysql_query('SELECT count(note) as count, sum(note) as total_value FROM '.$rating_tableName.' WHERE id_serie="'.$id_serie.'" ') or die('Error (1): '.mysql_error());
  • $numbers = mysql_fetch_assoc($query);
  • //calcul du nombre de votes
  • $count = $numbers['count'];
  • //somme des votes
  • $current_rating = $numbers['total_value'];
  • //singulier / pluriel
  • $tense = ($count <= 1) ? "vote" : "votes";
  • //On regarde si le membre à déja voté.
  • //si MOD = false on désactive les modification de vote
  • if (MOD == false) {
  • $voted = mysql_fetch_array(mysql_query('SELECT id FROM '.$rating_tableName.' WHERE id_user="'.$id_user.'" AND id_serie="'.$id_serie.'" '));
  • }
  • //On calcul la taille de la barre de notation
  • $rating_width = @number_format($current_rating/$count,2)*$rating_unitwidth;
  • $rating1 = @number_format($current_rating/$count,1);
  • $rating2 = @number_format($current_rating/$count,2);
  • //Si on a choisi de désactiver les votes
  • if ($static == 'static')
  • {
  • $static_rater = array();
  • $static_rater[] .= "\n".'<div class="ratingblock">';
  • $static_rater[] .= '<div id="unit_long'.$id_serie.'">';
  • $static_rater[] .= '<ul id="unit_ul'.$id_serie.'" class="unit-rating" style="width:'.$rating_unitwidth*$units.'px;" style="text-align:center;">';
  • $static_rater[] .= '<li class="current-rating" style="width:'.$rating_width.'px;">Actuellement '.$rating2.'/'.$units.'</li>';
  • $static_rater[] .= '</ul>';
  • $static_rater[] .= '<p class="static" style="text-align:center;">Note : <strong> '.$rating1.'</strong>/'.$units.' ('.$count.' '.$tense.')</p>';
  • $static_rater[] .= '</div>';
  • $static_rater[] .= '</div>'."\n\n";
  • return join("\n", $static_rater);
  • }
  • else
  • {
  • $rater ='';
  • $rater.='<div class="ratingblock">';
  • $rater.='<div id="unit_long'.$id_serie.'">';
  • $rater.=' <ul id="unit_ul'.$id_serie.'" class="unit-rating" style="width:'.$rating_unitwidth*$units.'px;" style="text-align:center;">';
  • $rater.=' <li class="current-rating" style="width:'.$rating_width.'px;">Actuellement '.$rating2.'/'.$units.'</li>';
  • //boucle pour afficher le nombre d'étoiles voulues
  • for ($ncount = 1; $ncount <= $units; $ncount++)
  • {
  • //si le membre n'a pas encore voté, on affiche la possibilité de voter
  • if(!$voted or MOD == true)
  • {
  • $rater .= '<li><a href="db.php?j='.$ncount.'&amp;q='.$id_serie.'&amp;t='.$id_user.'&amp;c='.$units.'" title="'.$ncount.' sur '.$units.'" class="r'.$ncount.'-unit rater" rel="nofollow">'.$ncount.'</a></li>';
  • }
  • }
  • $rater.=' </ul>';
  • $rater.=' <p style="text-align:center;"';
  • if($voted) //si membre a voté
  • { $rater.=' class="voted"';}
  • $rater.='>Note : <strong> '.$rating1.'</strong>/'.$units.' ('.$count.' '.$tense.')';
  • if($voted) //si membre a voté
  • { $rater.='<br/>Ma note : <strong> '.$voted['note'].'</strong>/'.$units.'';}
  • $rater.=' </p>';
  • $rater.='</div>';
  • $rater.='</div>';
  • return $rater;
  • }
  • }
  • ?>
<?php
//Affichage de la barre de notation
function rating_bar($id_serie, $units = '', $static = '')
{
//enregistrement de la page de notation
$_SESSION['referer'] = $_SERVER['SCRIPT_URL'];

//info
require('_config-rating.php');
	
//config variable
if (!$units) {$units = ETOILE_MAX;} //par défaut, affichage de 10 étoiles
if (!$static) {$static = FALSE;} // par défaut, activation des votes.

//on prend les infos propre à la série
$query = mysql_query('SELECT count(note) as count, sum(note) as total_value FROM '.$rating_tableName.' WHERE id_serie="'.$id_serie.'" ') or die('Error (1): '.mysql_error());
$numbers = mysql_fetch_assoc($query);

//calcul du nombre de votes
$count = $numbers['count'];

//somme des votes
$current_rating = $numbers['total_value'];

//singulier / pluriel
$tense = ($count <= 1) ? "vote" : "votes";

//On regarde si le membre à déja voté.
//si MOD = false on désactive les modification de vote
if (MOD == false) {
	$voted = mysql_fetch_array(mysql_query('SELECT id FROM '.$rating_tableName.' WHERE id_user="'.$id_user.'" AND id_serie="'.$id_serie.'" ')); 
}

//On calcul la taille de la barre de notation
$rating_width = @number_format($current_rating/$count,2)*$rating_unitwidth;
$rating1 = @number_format($current_rating/$count,1);
$rating2 = @number_format($current_rating/$count,2);

//Si on a choisi de désactiver les votes
if ($static == 'static')
{
	$static_rater = array();
	$static_rater[] .= "\n".'<div class="ratingblock">';
	$static_rater[] .= '<div id="unit_long'.$id_serie.'">';
	$static_rater[] .= '<ul id="unit_ul'.$id_serie.'" class="unit-rating" style="width:'.$rating_unitwidth*$units.'px;" style="text-align:center;">';
	$static_rater[] .= '<li class="current-rating" style="width:'.$rating_width.'px;">Actuellement '.$rating2.'/'.$units.'</li>';
	$static_rater[] .= '</ul>';
	$static_rater[] .= '<p class="static" style="text-align:center;">Note : <strong> '.$rating1.'</strong>/'.$units.' ('.$count.' '.$tense.')</p>';
	$static_rater[] .= '</div>';
	$static_rater[] .= '</div>'."\n\n";
	
	return join("\n", $static_rater);
}
else
{
	$rater ='';
	$rater.='<div class="ratingblock">';
	
	$rater.='<div id="unit_long'.$id_serie.'">';
	$rater.='  <ul id="unit_ul'.$id_serie.'" class="unit-rating" style="width:'.$rating_unitwidth*$units.'px;" style="text-align:center;">';
	$rater.='     <li class="current-rating" style="width:'.$rating_width.'px;">Actuellement '.$rating2.'/'.$units.'</li>';
	
	//boucle pour afficher le nombre d'étoiles voulues
	for ($ncount = 1; $ncount <= $units; $ncount++)
	{
		//si le membre n'a pas encore voté, on affiche la possibilité de voter
		if(!$voted or MOD == true)
		{
			$rater .= '<li><a href="db.php?j='.$ncount.'&amp;q='.$id_serie.'&amp;t='.$id_user.'&amp;c='.$units.'" title="'.$ncount.' sur '.$units.'" class="r'.$ncount.'-unit rater" rel="nofollow">'.$ncount.'</a></li>';
		}
	}
	
	$rater.='  </ul>';
	$rater.='  <p style="text-align:center;"';
	if($voted) //si membre a voté
	{ $rater.=' class="voted"';}
	$rater.='>Note : <strong> '.$rating1.'</strong>/'.$units.' ('.$count.' '.$tense.')';
	if($voted) //si membre a voté
	{ $rater.='<br/>Ma note : <strong> '.$voted['note'].'</strong>/'.$units.'';}
	$rater.='  </p>';
	$rater.='</div>';
	$rater.='</div>';
	return $rater;
}
}
?>

 Conclusion

Étant donné que c'est ma première source ici je suis ouvert à toutes les critiques pour pouvoir m'améliorer.

N'oubliez pas de configurer et lire le fichier _config-rating.php.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

25 août 2010 20:41:47 :
bug d'affichage dans la description ' étant remplacé par &#8217;
26 août 2010 12:05:40 :
index.php - ajout de la session et connexion à la DB
27 août 2010 12:12:55 :
Affichage de la source de la barre de notation
31 août 2010 16:48:38 :
Centralisation de la variable de session contenant l'id du membre sur _config-rating.php (touts les fichiers php mis à jour)
31 août 2010 17:46:46 :
ajout d'une option dans _config-rating.php permettant la modification de la note ou non (MOD = true ou false) autre petit ajout et modification des fichiers .php
16 octobre 2010 15:08:29 :
Si le membre a déjà voté, sa note est affiché séparément de la moyenne. (uniquement le fichier _drawrating.php est modifié)

 Sources de la même categorie

Source avec Zip Source avec une capture SLIDESHOW IMAGES ET TEXTES EN PUR JAVASCRIPT par ansuzpeorth
Source avec Zip INPUT TEXT AUTOMATIQUE CREATION SUPPRESSION par lycanges
Source avec Zip Source avec une capture TABLE_SV : TABLEAU DYNAMIQUE, MONTRER/CACHER COLONNE SUR DEM... par synanceia
COLONNES ADAPTABLES EN HAUTEUR par dronoide
Source avec Zip VECTEURS ET MATRICES: OUTILS GRAPHIQUES UTILES par william voirol

 Sources en rapport avec celle ci

NOTATION CLASSIQUE VERS NOTATION NPI par coucou747
Source avec Zip Source avec une capture BARRE DE POSITION OU DE NOTE par benwa74
Source avec une capture SYSTEME DE NOTATION par biskbart
Source avec Zip SYSTÈME DE NOTATION PAR ÉTOILES par Scraat

Commentaires et avis

Commentaire de alex67cv le 31/08/2010 14:28:54

Bonjour,tout d'abord merci de faire partager votre source,j'aurais une question,est ce qu'il est possible de rajouter dans le code php une variable qui enregistrerais l'ip du visiteur qui voterait en plus de l'id user,de cette façon lors de l'installation une table en plus serait créer et qui servirait donc à enregistrer les ip ayant déjà voter..
Car j'aimerais inclure votre code sur mon annuaire mais j'aimerais que les visiteurs simples sans qu'ils soient membres puissent aussi voter...
Vu que c'est un code où l'ont doit lancer l'installation et qui créer la BDD et bien j'aimerais savoir si c'est possible ( je pense que oui ) et surtout quel variable et où doit on la mettre dans votre code pour que la table soit créer en même temps et qui après empêcherais une 2èmes vote de la même ip du visiteur (pas du membre)...?
Merci d'avance.
Cordialement

Commentaire de rayman223 le 31/08/2010 16:44:21

Bonjour,
Si tu ne veux pas tenir compte de l'id du membre mais seulement de son ip, c'est le cas le plus simple :
Il faut remplacer la valeur de la variable $id_user qui normalement est égal à l'id du membre par l'adresse ip. (il faudra alors peut-être modifié le type de champ dans la table sql car je ne pense pas si le point (.) peut être enregistré comme INT.

Par contre pour rajouter la variables contenant l'ip, il faut alors rajouter un champ dans la table, dans les différents liens et aussi dans le fichier JS.
le lien sera quelque chose dans ce genre :
<a href="db.php?j='.$ncount.'&amp;q='.$id_serie.'&amp;t='.$id_user.'&amp;c='.$units.'&amp;i='.$ip.'" title="'.$ncount.' sur '.$units.'" class="r'.$ncount.'-unit rater" rel="nofollow">'.$ncount.'</a>

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

comment cacher des lignes dans un tableau..? [ par encugnet ] bonjour,je suis stagiaire et je suis charge du developpement d'un portail internet permettant aux etudiants de consulter leurs resultats en ligne. Pou Pb avec event Handler [ par jesusonline ] Bonjour, j'ai un probl&#232;me avec la declaration d'un de mes events. Plutot qu'un long discours, voici le code qui pose probl&#232;me. &nbsp;&nbsp; Système de notation [ par GAMERR ] Bonjour je voulais savoir comment je pourrai faire pour faire un syst&#232;me de notation&nbsp;exemple&nbsp;: noter un jeux flash&nbsp;&nbsp;soit avec Système de notation comme sur ce site? [ par Monico9385 ] Bonjour, j'aimerai savoir comment c'est possible de faire un syst&#232;me de notation comme il y a sur ce site, c'est &#224; dire au survol des &#23 Le script Notation par des étoiles [ par Fleuretta ] Bonjour!J'ai t&#233;l&#233;charger le script Notation par des &#233;toiles. Lorsque je passe la souris dessus il ne se passe rien . J'aimerais savoir avis des visiteurs et notation [ par elektronlibre ] Bonjour, j'ai cherch&#233; dans les scripts sans trouver ma r&#233;ponse.Je ne connais pas les codes javascripts et php, mais je souhaite pouvoir donn systeme de note [ par loubaba ] slt tt le mondeje suis en train creer un site, dans le quel je voudrais inserer un systeme de vote (numoration de 1 a 10/10)et pour etre plus precis: Script php permettant de donner une note à une image. [ par _Dam_ ] Bonjour, je recherche le moyen (en PHP je suppose)de pouvoir donner une note &#224; une image (de 0 &#224; 5) avec une &#233;valuation en images (genr bloc note [ par pipouz ] bonjour a tousje cherche une source permettant de creer un bloc note multi utilisateur (sans inscription) utilisant les cookies (ou autre) , un peu co Envoi de données PHP d'après une variable Javascript [ par Centauriel ] Bonjour,Je souhaite offrir aux visiteurs de mon site commercial la possibilité de laisser un avis sur un produit accompagné d'une note de 1 à 5.J'ai d


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,513 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales