Voter pour un site une seule fois

Contenu du snippet

Nous allons réaliser une liste à selection contenant des notes de un à dix pour noter/voter ou valoriser un site sans permettre au visiteur de le faire plus qu'une fois

Avant tout nous allons créer une table avec 4 champs au mieux:

$request="CREATE TABLE `vote` (
`id` TINYINT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`note` SMALLINT NOT NULL,
`ip` VARCHAR(10) NOT NULL,
`date` DATE NOT NULL
)";
mysql_query($request) or die ("impossible de créer la table");

Source / Exemple :


<html>
<head>
<body>
//Vous pouvez mettre tant de chose que vous voulez dans body
//Ce formulaire va etre traité dans la meme page "test.php"
<form name="form" method="post" action="test.php">
    <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="submit" value="Votez "></p>
</form>
</body>
</html>
<?
//Remplacez les: hote, compte et mot de passe par les votres fournis par votre hébergeur
$conecter=mysql_connect('localhost','root','')or die ("erreur de connexion");
//Changez database par le nom de votre base de données
mysql_select_db(database,$conecter) or die ("erreur de selection");
//Vous pouvez mettre à la place des lignes précédents:
//include("votre fichier connexion contenant ces informations.inc.php");

//La date au format américain date("y-m-d")parce qu'on a optimisé le quatrième champ `date`, si //on le met en autre forma la date deviendra 0000-00-00, si on veut un autre format, français //par éxemple date("d-m-y")on sera forcer d'optimiser le 4ème champ varchar...etc pour éviter //le 0000-00-00.

$date=date("y-m-d");

// On definit la variable ip adresse 
$ip = $REMOTE_ADDR; 

//submit c'est le nom du bouton d'envoie de formulaire "il peut etre de n'importe type "select, //zone de texte, buton radio...etc. Ce truc ce fait pour traiter le formulaire HTML dans la //meme page que se trouve le code PHP traiteur.On récapitule cela
//if($le nom du bouton d'envoie){
//Le code PHP traiteur
//}
if($submit){

//On cherche si quelqu'un à déjà donné son avis grace à son adresse ip
$ipeexists = "SELECT ip FROM vote WHERE ip='$ip'";   
   $req = mysql_query($ipeexists); 

   if (mysql_num_rows($req) > 0) {
   echo "<body bgcolor=F7F5F5><br><br><br><br><br><b><p align=center><span style=font-size:10pt;><font color=red face=verdana>Votre avis a déjà été donné, merci.</p></font></b>";
//ATTENTION: La ligne print qui suit ne doit etre ici seulement dans le cas ou ce code PHP est //mis séparément de la page HTML c'est à dire dans une page PHP cible du formulaire HTML
   print "<p align=center><span style=font-size:10pt;><font face=verdana><a href=javascript:history.back();>Retour</a>";
 //exit;c'est essentiel dans les deux cas  
exit;
}

mysql_query("insert into `vote` values('','$ip','$note','$date')");
 //Ligne de remerciément 
echo "<b><p align=center><span style=font-size:12pt;><font color=navy face=verdana>Votre avis a bien été ajouté, merci.</p></font></b><br><br><br>";
 
//Une requete pour compter le nombre de voix valide (une seule fois pour chaque visiteur) dans //la base puisque l'id s'incrémente à chaque fois et ne se répète jamais:
$sql = "select id from vote";
$requete = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$nombre= mysql_num_rows($requete);
echo "<font color=black face=Verdana size=2>Maintenant, on a<b>$nombre</b>voix valides .<br>";

// On ferme la connection à mysql 
mysql_close(); 
}

//Ce code (PHP/MYSQL) est testé sous Apache/Windows XP , Il fonctionnait avec succès
//Pour tout commentaire ou remarque prière de me contacter à:  sidoummoudz@yahoo.fr
//Bon usage à tous,  a++

?>

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.