TYBMHI Posté 29 Septembre 2008 Posté 29 Septembre 2008 Bonjour à tous, Je poste sur ce forum car j'ai déjà essayé de trouver une solution en JS mais en vain. Alors on m'a orienté vers le PHP. J'ai fais mon premier site et maintenant je buche sur un problème. Sur mon site des internautes viennent poster des messages et on peut ensuite voter pour ces messages. Le vote se fait grâce à un lien qui incrémente de +1 un champs d'une base de donnée : <a href="index.php?page=<?echo "$page"?>&votecuncon=r&categorie=<?php echo "$categorie" ?>&souscategorie=<?php echo "$souscategorie" ?>&id=<?php echo $donnees['id'];?>" >voter</a> La partie sql : if (isset($_GET['id']) AND isset($_GET['votecuncon'])){$id=$_GET['id'];if(true){//true c-à-d si votre formulaire est validé}mysql_query("UPDATE tousdescons SET votecuncon=votecuncon+1 WHERE id='$id'");} tout cela fonctionne mais j'aimerais que chaque visiteurs ne puisse voter qu'une fois. Le problème c'est que j'ai déjà essayé en désactivant le lien quand on clique dessus(en javascript) mais comme la page se recharge , le lien se réactive de suite. Merci d'avance pour votre aide.
captain_torche Posté 29 Septembre 2008 Posté 29 Septembre 2008 Le souci, c'est que tu ne sembles pas enregistrer de données quant à la provenance de l'utilisateur : il n'est pas nécessaire d'être inscrit pour pouvoir voter. Il va donc falloir que tu enregistres l'adresse IP du votant en base, puis que tu vérifies pour un vote, que cette adresse IP n'a pas déjà voté.
TYBMHI Posté 29 Septembre 2008 Auteur Posté 29 Septembre 2008 merci beaucoup pour ton aide mais pourrais-tu me donner un peu plus de détail. Ca ne fait pas longtemps que je me suis mis au PHP. comment faire pour enregistrer l'ip (en me creusant la tête je devrais y arriver) et surtout une fois qu'il est enrgistrer comment faire pour qu'il ne puisse plus voter ?
captain_torche Posté 29 Septembre 2008 Posté 29 Septembre 2008 Tu vas être obligé de créer une table intermédiaire de votes. Dans cette table, tu enregistres l'ID du vote, ainsi que l'adresse IP du votant (que tu obtiens avec $_SERVER['REMOTE_ADDR']. Ensuite, pour chaque vote, il te suffit de vérifier avec une requête SQL s'il existe déjà une entrée qui correspond au couple ID/IP. Si tu as une réponse, tu ne comptabilises pas de vote supplémentaire.
TYBMHI Posté 29 Septembre 2008 Auteur Posté 29 Septembre 2008 Merci bien je vais essayer ça. Je te tiens au courant.
Leonick Posté 29 Septembre 2008 Posté 29 Septembre 2008 Le souci, c'est que tu ne sembles pas enregistrer de données quant à la provenance de l'utilisateur : il n'est pas nécessaire d'être inscrit pour pouvoir voter.Il va donc falloir que tu enregistres l'adresse IP du votant en base, puis que tu vérifies pour un vote, que cette adresse IP n'a pas déjà voté. pas vraiment besoin, un simple cookie ferait l'affaire, voire même juste dans ton formulaire de saisie, ton if valide dans la base et à la suite ne devrait afficher qu'une partie du formulaire (sans le lien), le else ayant l'intégralité du formulaire
TYBMHI Posté 29 Septembre 2008 Auteur Posté 29 Septembre 2008 Voilà où j'en suis : J'ai juste réussi a faire enregistrer l'ip du visiteur et l'id du message. Mais maintenant je ne vois pas comment faire la condition si l'ip et l'id du message sont déjà enregistré ne pas prendre en compte le vote. if (isset($_GET['id']) AND isset($_GET['votetranquille'])){$id=$_GET['id'];$ip=$_SERVER['REMOTE_ADDR'];if(true){//true c-à-d si votre formulaire est validé}mysql_query("UPDATE monsite SET votetranquille=votetranquille+1 WHERE id='$id'");[b]mysql_query("INSERT INTO vote VALUES('" . $id . "', '" . $ip . "')");[/b]}
TYBMHI Posté 29 Septembre 2008 Auteur Posté 29 Septembre 2008 pas vraiment besoin, un simple cookie ferait l'affaire, voire même juste dans ton formulaire de saisie, ton if valide dans la base et à la suite ne devrait afficher qu'une partie du formulaire (sans le lien), le else ayant l'intégralité du formulaire Je n'ai pas de formulaire, c'est juste un lien. Mais si c'est possible et surtout plus simple, je suis preneur. Comment crée un cookie. et comment interdire le vote pour le message déjà voté et pas l'ensemble des messages avec ce cookie
TYBMHI Posté 29 Septembre 2008 Auteur Posté 29 Septembre 2008 Merci à tous je suis passé par les cookies et ca marche très bien et en plus je peux choisir la durée. Encore merci !
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant