Faie un systéme de vote par étoile
Résolu/Fermé
will.smith
Messages postés
256
Date d'inscription
jeudi 18 septembre 2008
Statut
Membre
Dernière intervention
27 mars 2010
-
31 oct. 2008 à 11:42
fernande - 5 avril 2016 à 12:08
fernande - 5 avril 2016 à 12:08
A voir également:
- Faie un systéme de vote par étoile
- Restauration systeme windows 10 - Guide
- Etoile clavier ✓ - Forum Windows
- Dans cette présentation, trouvez l'étoile. quel nombre contient-elle ? ✓ - Forum Word
- Périphérique système de base ✓ - Forum Pilotes (drivers)
- Comment refaire le système d'un ordinateur - Guide
12 réponses
the versus
Messages postés
5
Date d'inscription
samedi 1 novembre 2008
Statut
Membre
Dernière intervention
1 novembre 2008
5
1 nov. 2008 à 19:27
1 nov. 2008 à 19:27
bonjours will.smith !
j'ai réfléchi pour ton compteur, et je peut te proposé un moyen beaucoup plus simple, reste à toi de programmer ce que je V t'expliqué... ( çà te servirai à rien si tu copiai collait un programme ;) )
tu n'a pas besoin d'autant de colonne pour sauvegarder ton vote alors que 3 suffisent. Je m'explique...
je pensai plutôt a çà comme structure de table :
CREATE TABLE `vote` (
`id` int(20) NOT NULL auto_increment,
`article` varchar(255) collate latin1_general_ci NOT NULL,
`value` int(10) NOT NULL
PRIMARY KEY (`idduvote`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=41 ;
par exemple, tu veut que les visiteur vote pour l'article "nouveau magnétoscope : un scandale en 2008" =) il vote, de 1 à 10 suivant ton cahier des charges et tu faite une requette :
INSERT INTO `vote` ( `id `, `article`, `value` )
VALUES ( NULL, 'nouveau magnétoscope : un scandale en 2008', '".$valeur_du_vote_efectuer_par_le_visiteur."');
ensuite, pour retrouver la valeur du vote correspondant à cet article en question, tu fait :
SELECT * FROM vote WHERE `article ` = 'nouveau magnétoscope : un scandale en 2008';
tu additionne tout les valeurs de la colonne 'value' et tu soustrait par le nombre de ligne obtenu, et VOILA, tu à ta note sur 10 !
reste plus qu'a découpé ta note par un "." et tu obtion le nombre d'étoile à imprimé.
Avec ma solution, 1 seule table suffit pour l'infini d'article... pour ce qui est de l'adresse IP pour évité 2 vote, il suffit que tu rajoute 1 colonne avec l'adresse $IPduclient.$date_du_jour, et avant d'entré sont vote, tu vérifies qu'il n'existe aucune ligne correspondant à l'article voté et à $IPduclient.$date_du_jour dans ta 4 ème colonne...
je t'ai pondu cette solution sans même avoir programmer le raisonnement, mais il me parait impeccable ;)
J'espère avoir été compris, et j'espère que tu y arrivera, et excusez moi pour les fautes de français éventuels.
j'ai réfléchi pour ton compteur, et je peut te proposé un moyen beaucoup plus simple, reste à toi de programmer ce que je V t'expliqué... ( çà te servirai à rien si tu copiai collait un programme ;) )
tu n'a pas besoin d'autant de colonne pour sauvegarder ton vote alors que 3 suffisent. Je m'explique...
je pensai plutôt a çà comme structure de table :
CREATE TABLE `vote` (
`id` int(20) NOT NULL auto_increment,
`article` varchar(255) collate latin1_general_ci NOT NULL,
`value` int(10) NOT NULL
PRIMARY KEY (`idduvote`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=41 ;
par exemple, tu veut que les visiteur vote pour l'article "nouveau magnétoscope : un scandale en 2008" =) il vote, de 1 à 10 suivant ton cahier des charges et tu faite une requette :
INSERT INTO `vote` ( `id `, `article`, `value` )
VALUES ( NULL, 'nouveau magnétoscope : un scandale en 2008', '".$valeur_du_vote_efectuer_par_le_visiteur."');
ensuite, pour retrouver la valeur du vote correspondant à cet article en question, tu fait :
SELECT * FROM vote WHERE `article ` = 'nouveau magnétoscope : un scandale en 2008';
tu additionne tout les valeurs de la colonne 'value' et tu soustrait par le nombre de ligne obtenu, et VOILA, tu à ta note sur 10 !
reste plus qu'a découpé ta note par un "." et tu obtion le nombre d'étoile à imprimé.
Avec ma solution, 1 seule table suffit pour l'infini d'article... pour ce qui est de l'adresse IP pour évité 2 vote, il suffit que tu rajoute 1 colonne avec l'adresse $IPduclient.$date_du_jour, et avant d'entré sont vote, tu vérifies qu'il n'existe aucune ligne correspondant à l'article voté et à $IPduclient.$date_du_jour dans ta 4 ème colonne...
je t'ai pondu cette solution sans même avoir programmer le raisonnement, mais il me parait impeccable ;)
J'espère avoir été compris, et j'espère que tu y arrivera, et excusez moi pour les fautes de français éventuels.
Facile, sans base de donénes à installer et surtout gratuit : http://ww1.votxo.com est un systeme de votes avec etoiles pour webmaster.
the versus
Messages postés
5
Date d'inscription
samedi 1 novembre 2008
Statut
Membre
Dernière intervention
1 novembre 2008
5
1 nov. 2008 à 21:30
1 nov. 2008 à 21:30
donc, voici le code dejà pour une 1ère étape, sn s le serquette my SQL
<?php
$vote = $_POST['vote'];
if ( $vote !="" ) {
echo "coucou ".$vote ;
exit;
}
?>
<html>
<head>
<LINK rel="stylesheet" type="text/css" href="styles.css"/>
<style type="text/css">
img#star{
border: none;
}
</style>
<script>
var n = 10;
function init(){
var html = '';
for (i=0; i<n; i++){
id = i+1;
html += '<a href="#"><img src="starOut.png" ';
html += 'id="star" value="off" ';
html += 'onMouseOver="over('+id+');" ';
html += 'onMouseOut="out('+id+');" ';
html += 'onClick="on('+id+')"/></a>'
}
document.getElementById("classement").innerHTML = html;
}
function over(nb){
elemClassement = document.getElementById("classement");
tabImg = elemClassement.getElementsByTagName("img");
if (nb > 0)
for (i=0; i<nb; i++)
tabImg[i].src="starOver.png";
for (i=nb; i<n; i++)
tabImg[i].src="starOut.png";
}
function out(nb){
elemClassement = document.getElementById("classement");
tabImg = elemClassement.getElementsByTagName("img");
for (i=0; i<nb; i++)
tabImg[i].src="starOut.png";
for (i=0; i<n; i++){
if (tabImg[i].value == "on")
tabImg[i].src="starOn.png";
}
}
function on(nb)
{
elemClassement = document.getElementById("classement");
tabImg = elemClassement.getElementsByTagName("img");
for (i=0; i<nb; i++){
tabImg[i].src="starOn.png";
tabImg[i].value="on";
}
for (i=nb; i<n; i++){
tabImg[i].src="starOut.png";
tabImg[i].value="off";
}
/*
elemComment = document.getElementById("commentaire");
text = nb+" étoiles";
elemComment.innerHTML = text;
*/
http = createRequestObject();
http.open('post', 'index.php', true);
document.getElementById("commentaire").innerHTML = "chargement" ;
http.onreadystatechange = function () {
if ( http.readyState == 4 ) {
if( http.status == 200 ) {
document.getElementById("commentaire").innerHTML = http.responseText ;
}
}
};
http.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
http.send("vote="+nb);
}
//new
var http;
function createRequestObject()
{
var http;
// Mozilla, Safari, ...
if(window.XMLHttpRequest) {
http = new XMLHttpRequest();
}
// Internet Explorer
else if(window.ActiveXObject) {
http = new ActiveXObject("Microsoft.XMLHTTP");
}
return http;
}
</script>
</head>
<body>
<div id="classement" name="cls">
<script>init();</script>
</div><br>
<div id="commentaire"></div>
</body>
</html>
<?php
$vote = $_POST['vote'];
if ( $vote !="" ) {
echo "coucou ".$vote ;
exit;
}
?>
<html>
<head>
<LINK rel="stylesheet" type="text/css" href="styles.css"/>
<style type="text/css">
img#star{
border: none;
}
</style>
<script>
var n = 10;
function init(){
var html = '';
for (i=0; i<n; i++){
id = i+1;
html += '<a href="#"><img src="starOut.png" ';
html += 'id="star" value="off" ';
html += 'onMouseOver="over('+id+');" ';
html += 'onMouseOut="out('+id+');" ';
html += 'onClick="on('+id+')"/></a>'
}
document.getElementById("classement").innerHTML = html;
}
function over(nb){
elemClassement = document.getElementById("classement");
tabImg = elemClassement.getElementsByTagName("img");
if (nb > 0)
for (i=0; i<nb; i++)
tabImg[i].src="starOver.png";
for (i=nb; i<n; i++)
tabImg[i].src="starOut.png";
}
function out(nb){
elemClassement = document.getElementById("classement");
tabImg = elemClassement.getElementsByTagName("img");
for (i=0; i<nb; i++)
tabImg[i].src="starOut.png";
for (i=0; i<n; i++){
if (tabImg[i].value == "on")
tabImg[i].src="starOn.png";
}
}
function on(nb)
{
elemClassement = document.getElementById("classement");
tabImg = elemClassement.getElementsByTagName("img");
for (i=0; i<nb; i++){
tabImg[i].src="starOn.png";
tabImg[i].value="on";
}
for (i=nb; i<n; i++){
tabImg[i].src="starOut.png";
tabImg[i].value="off";
}
/*
elemComment = document.getElementById("commentaire");
text = nb+" étoiles";
elemComment.innerHTML = text;
*/
http = createRequestObject();
http.open('post', 'index.php', true);
document.getElementById("commentaire").innerHTML = "chargement" ;
http.onreadystatechange = function () {
if ( http.readyState == 4 ) {
if( http.status == 200 ) {
document.getElementById("commentaire").innerHTML = http.responseText ;
}
}
};
http.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
http.send("vote="+nb);
}
//new
var http;
function createRequestObject()
{
var http;
// Mozilla, Safari, ...
if(window.XMLHttpRequest) {
http = new XMLHttpRequest();
}
// Internet Explorer
else if(window.ActiveXObject) {
http = new ActiveXObject("Microsoft.XMLHTTP");
}
return http;
}
</script>
</head>
<body>
<div id="classement" name="cls">
<script>init();</script>
</div><br>
<div id="commentaire"></div>
</body>
</html>
manelsousse
Messages postés
59
Date d'inscription
lundi 10 mars 2008
Statut
Membre
Dernière intervention
18 août 2009
15 août 2009 à 12:32
15 août 2009 à 12:32
bonjour,
jai copier votre code ca ma bp aidé dans la gestion des vote je te remercie bp j'ai intégré le php et la base de donnée dans ce code et vraiment c'est utile et ca marche
jai copier votre code ca ma bp aidé dans la gestion des vote je te remercie bp j'ai intégré le php et la base de donnée dans ce code et vraiment c'est utile et ca marche
Peux tu m'envoyer ton script, pour mon propre site stp :D
salut gluzy j'ai adapté un script dans le genre si tu veux je peux te donner la source tu peux voir le script adapté sur http://www.paris-rez.net ensuite tu clique sur un hotel
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
will.smith
Messages postés
256
Date d'inscription
jeudi 18 septembre 2008
Statut
Membre
Dernière intervention
27 mars 2010
10
1 nov. 2008 à 17:55
1 nov. 2008 à 17:55
re
on m'a oublié lol mrci de m'aidé
on m'a oublié lol mrci de m'aidé
will.smith
Messages postés
256
Date d'inscription
jeudi 18 septembre 2008
Statut
Membre
Dernière intervention
27 mars 2010
10
1 nov. 2008 à 19:45
1 nov. 2008 à 19:45
merci mais j'ai fais ça donc il marche bien
http://forum.exemple.free.fr/windows_live_messenger.php
donc si tu clique sur le 4 éme étoiles il mais bien validé et ce systéme là que je veux bien
donc voilà le code :
et notes.js
mais j'ai mis ta tables :
avec une érreurs
aprés on verras pour le ip par jour
on fait pas à pas
car là je n'ai pas tout compris ta réponses
merci de m'aidé
http://forum.exemple.free.fr/windows_live_messenger.php
donc si tu clique sur le 4 éme étoiles il mais bien validé et ce systéme là que je veux bien
donc voilà le code :
<li><div class="texte_blanc">Votre Note: <img src="star1.gif" id='_1' onclick="valider()" onmouseover="rate(1)" /><img src="star1.gif" id='_2' onclick="valider()" onmouseover="rate(2)" /><img src="star1.gif" id='_3' onclick="valider()" onmouseover="rate(3)" /><img src="star1.gif" id='_4' onclick="valider()" onmouseover="rate(4)" /><img src="star1.gif" id='_5' onclick="valider()" onmouseover="rate(5)" /> <div id="vote">(0 étoile(s)) </div>
et notes.js
var done=false var pic = new Array(); pic[0]=new Image(); pic[0].src="../images/notes/gris.gif"; pic[1]=new Image(); pic[1].src="../images/notes/rouge.gif"; var bareme = new Array("peu ","passablement ","moyennement","presque","") function rate(level){ if (done){return false;} for(i=1;i<6;i++){ document.getElementById('_'+i).src=(level<i)?pic[0].src:pic[1].src; document.getElementById('vote').innerHTML="Votre vote : "+level+" étoile(s) "+bareme[level-1]+" satisfaisant" } } function zero(){ for(i=1;i<6;i++){ document.getElementById('_'+i).src=pic[0].src; done=false; document.getElementById('vote').innerHTML="Votre vote : 0 étoile(s)" } } function valider(){ done=true; document.getElementById('vote').innerHTML+=' VALIDÉ' }
mais j'ai mis ta tables :
avec une érreurs
CREATE TABLE `vote` ( `id` int( 20 ) NOT NULL AUTO_INCREMENT , `article` varchar( 255 ) COLLATE latin1_general_ci NOT NULL , `value` int( 10 ) NOT NULL PRIMARY KEY ( `idduvote` ) ) ENGINE = MYISAM DEFAULT CHARSET = latin1 COLLATE = latin1_general_ci AUTO_INCREMENT =41 MySQL a répondu: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(`idduvote`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci ' at line 5
aprés on verras pour le ip par jour
on fait pas à pas
car là je n'ai pas tout compris ta réponses
merci de m'aidé
the versus
Messages postés
5
Date d'inscription
samedi 1 novembre 2008
Statut
Membre
Dernière intervention
1 novembre 2008
5
1 nov. 2008 à 20:11
1 nov. 2008 à 20:11
oui...
donc, je V impeu plus détailler, car j'avais fait la requête de création de table à partir de la tienne en espérant qu'elle soit bonne d'origine... Et on va faire pas à pas, mais avec la gestion des IP tout de suite, pour que se soit plus simple pour toi au final ;)
la création de ta table pour sauvegarder tes votes ( elle à été vérifier par mes soins ) :
CREATE TABLE `vote` (
`id` INT( 8 ) NULL AUTO_INCREMENT PRIMARY KEY ,
`article` VARCHAR( 256 ) NOT NULL ,
`value` INT( 2 ) NOT NULL ,
`verifyClient` VARCHAR( 128 ) NOT NULL
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci COMMENT = 'Table pour enregistrer les vote des articles';
Pour la suite, j'aurai besoin de savoir si tu souhaite faire çà avec AJAX, ou recharger la page ?...
donc, je V impeu plus détailler, car j'avais fait la requête de création de table à partir de la tienne en espérant qu'elle soit bonne d'origine... Et on va faire pas à pas, mais avec la gestion des IP tout de suite, pour que se soit plus simple pour toi au final ;)
la création de ta table pour sauvegarder tes votes ( elle à été vérifier par mes soins ) :
CREATE TABLE `vote` (
`id` INT( 8 ) NULL AUTO_INCREMENT PRIMARY KEY ,
`article` VARCHAR( 256 ) NOT NULL ,
`value` INT( 2 ) NOT NULL ,
`verifyClient` VARCHAR( 128 ) NOT NULL
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci COMMENT = 'Table pour enregistrer les vote des articles';
Pour la suite, j'aurai besoin de savoir si tu souhaite faire çà avec AJAX, ou recharger la page ?...
will.smith
Messages postés
256
Date d'inscription
jeudi 18 septembre 2008
Statut
Membre
Dernière intervention
27 mars 2010
10
20 déc. 2008 à 12:12
20 déc. 2008 à 12:12
lol c'est mon, souci que j'attend toujour lol
guigui86
Messages postés
11
Date d'inscription
mardi 8 juillet 2008
Statut
Membre
Dernière intervention
29 mai 2009
12
29 mai 2009 à 17:01
29 mai 2009 à 17:01
Bonjour,
J'aimerais implémenter ce système de notation sur mon site, je me suis donc inspiré du code que donne "the versus", ça fonctionne plutot bien sauf pour un petit truc qui est important pour moi :
Dans ma page, j'ai un div container qui contient tous les autres bloc div donc ceux pour la notation, mon probléme c'est que dés que je configure un overflow dans mon css pour ce container, la notation ne fonctionne plus ! Enfin plus exactement la partie php (je n'ai pas l'affichage de la note, seulement celui de "chargement")
Voila, j'ai rien trouvé sur le net entre une incompatibilité entre overflow et XMLHttpRequest, j'espère que vous pourrez m'aider
J'aimerais implémenter ce système de notation sur mon site, je me suis donc inspiré du code que donne "the versus", ça fonctionne plutot bien sauf pour un petit truc qui est important pour moi :
Dans ma page, j'ai un div container qui contient tous les autres bloc div donc ceux pour la notation, mon probléme c'est que dés que je configure un overflow dans mon css pour ce container, la notation ne fonctionne plus ! Enfin plus exactement la partie php (je n'ai pas l'affichage de la note, seulement celui de "chargement")
Voila, j'ai rien trouvé sur le net entre une incompatibilité entre overflow et XMLHttpRequest, j'espère que vous pourrez m'aider
guigui86
Messages postés
11
Date d'inscription
mardi 8 juillet 2008
Statut
Membre
Dernière intervention
29 mai 2009
12
29 mai 2009 à 17:26
29 mai 2009 à 17:26
En fait j'ai trouvé la solution, je me suis un peu mélange les pinceaux dans l'ouverture de la page ;)
Merci quand même :)
Merci quand même :)
Utilisateur anonyme
26 janv. 2013 à 21:26
26 janv. 2013 à 21:26
comment fait on pour que le script se connecte a notre base car:
var done=false
var pic = new Array();
pic[0]=new Image();
pic[0].src="../images/notes/gris.gif";
pic[1]=new Image();
pic[1].src="../images/notes/rouge.gif";
var bareme = new Array("peu ","passablement ","moyennement","presque","")
function rate(level){
if (done){return false;}
for(i=1;i<6;i++){ document.getElementById('_'+i).src=(level<i)?pic[0].src:pic[1].src;
document.getElementById('vote').innerHTML="Votre vote : "+level+" étoile(s) "+bareme[level-1]+" satisfaisant"
}
}
function zero(){
for(i=1;i<6;i++){ document.getElementById('_'+i).src=pic[0].src;
done=false;
document.getElementById('vote').innerHTML="Votre vote : 0 étoile(s)"
}
}
function valider(){
done=true;
document.getElementById('vote').innerHTML+=' VALIDÉ'
}
dedans il ny a pas le code pour que sa ce connecte a la base?
var done=false
var pic = new Array();
pic[0]=new Image();
pic[0].src="../images/notes/gris.gif";
pic[1]=new Image();
pic[1].src="../images/notes/rouge.gif";
var bareme = new Array("peu ","passablement ","moyennement","presque","")
function rate(level){
if (done){return false;}
for(i=1;i<6;i++){ document.getElementById('_'+i).src=(level<i)?pic[0].src:pic[1].src;
document.getElementById('vote').innerHTML="Votre vote : "+level+" étoile(s) "+bareme[level-1]+" satisfaisant"
}
}
function zero(){
for(i=1;i<6;i++){ document.getElementById('_'+i).src=pic[0].src;
done=false;
document.getElementById('vote').innerHTML="Votre vote : 0 étoile(s)"
}
}
function valider(){
done=true;
document.getElementById('vote').innerHTML+=' VALIDÉ'
}
dedans il ny a pas le code pour que sa ce connecte a la base?
j'ai lue le sujet cela m'intérèse pour mon forum mais je vais vous l'avoué j'ai 82 ans et j'ai rien compris je voudrais bien qu'une âme charment viennent me le faire
merci
http://fernande-pub.forumgratuit.eu
merci
http://fernande-pub.forumgratuit.eu