Faie un systéme de vote par étoile
Résolu
will.smith
Messages postés
256
Date d'inscription
Statut
Membre
Dernière intervention
-
fernande -
fernande -
Bonjour,
j'ai fais un petit systéme de vote par étoile
donc j'aimerais que les gens met 1 à 10 tout dépendra de sa note
et en fonction de ca ça mettras progréssivement les étoiles rouges
et aussi j'aimerais que chaque membre vote une fois par jour donc il faudras récupére le ip pour évété que les gens vote 2 où 3 fois dans une journée
voilà la page :
http://forum.exemple.free.fr/windows_live_messenger.php
et le code :
mais je ne sais pas comment on fait pour que les gens clique sur 7 par éxemple et progréssivement ça mettras les étoiles rouges
peux etre il faudras rajouté à ma table sql les voté en étoiles vous me direz
voilà la table que j'ai pensé :
merci de votre aide
j'ai fais un petit systéme de vote par étoile
donc j'aimerais que les gens met 1 à 10 tout dépendra de sa note
et en fonction de ca ça mettras progréssivement les étoiles rouges
et aussi j'aimerais que chaque membre vote une fois par jour donc il faudras récupére le ip pour évété que les gens vote 2 où 3 fois dans une journée
voilà la page :
http://forum.exemple.free.fr/windows_live_messenger.php
et le code :
<li><div class="texte_blanc">Votre Note : <img src="images/notes/rouge.gif" id='_1' onclick="valider()" onmouseover="rate(1)" /> <img src="images/notes/rouge.gif" id='_2' onclick="valider()" onmouseover="rate(2)" /> <img src="images/notes/rouge.gif" id='_3' onclick="valider()" onmouseover="rate(3)" /> <img src="images/notes/rouge.gif" id='_4' onclick="valider()" onmouseover="rate(4)" /> <img src="images/notes/rouge.gif" id='_5' onclick="valider()" onmouseover="rate(5)" /> <select id=\"note\" name=\"note\"> <option value="10">10</option> <option value="9">9</option> <option value="8">8</option> <option value="7">7</option> <option value="6">6</option> <option value=\"5">5</option> <option value=\"4">4</option> <option value=\"3">3</option> <option value=\"2">2</option> <option value=\"1">1</option> <option value=\"0">0</option> </select> </div></li></ul>
mais je ne sais pas comment on fait pour que les gens clique sur 7 par éxemple et progréssivement ça mettras les étoiles rouges
peux etre il faudras rajouté à ma table sql les voté en étoiles vous me direz
voilà la table que j'ai pensé :
CREATE TABLE IF NOT EXISTS `logiciels` ( `id_logiciels` bigint(20) NOT NULL auto_increment, `fichier` varchar(255) collate latin1_general_ci NOT NULL, `telechargements` int(10) NOT NULL default '0', `1_etoile` int(10) NOT NULL, `2_etoile` int(10) NOT NULL, `3_etoile` int(10) NOT NULL, `4_etoile` int(10) NOT NULL, `5_etoile` int(10) NOT NULL, `6_etoile` int(10) NOT NULL, `7_etoile` int(10) NOT NULL, `8_etoile` int(10) NOT NULL, `9_etoile` int(10) NOT NULL, `10_etoile` int(10) NOT NULL, PRIMARY KEY (`id_logiciels`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=41 ;
merci de votre aide
A voir également:
- Faie un systéme de vote par étoile
- Restauration systeme windows 10 - Guide
- Vérificateur des fichiers système - Guide
- La zone de données passée à un appel système est insuffisante - Windows 11
- Dans cette présentation, trouvez l'étoile. quel nombre contient-elle ? ✓ - Forum Word
- Vous avez besoin d'une autorisation de la part de système pour modifier ce dossier - Guide
12 réponses
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.
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>
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
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é
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 ?...
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
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 :)
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