Accueil > > > UN SYSTÈME DE SONDAGE POUR VOTRE SITE (A ADAPTER AU VOTRE)
UN SYSTÈME DE SONDAGE POUR VOTRE SITE (A ADAPTER AU VOTRE)
Information sur la source
Description
Bon, comme d'habitude, je vous propose ce script car sur internet on ne trouve jamais EXACTEMENT le script qu'il nous faut ... Ce script n'est pas entier, il est là juste pour vous donner une idée du fonctionnement d'un système de vote/sondage et aussi pour vous poussez à créer le votre ... Quoi ? Quoi ? Non, non, non, ne fermez pas la fenêtre et lisez attentivement ce qui suit, c'est pour votre bien petit flemmard ... Pour un système de vote / sondage ( c la même chose, la même mer** diront certains ...), il vous faut une table mysql ou un fichier texte ou enregistrer les infos (Nous choisirons MYSQL) ... Il vous faut ensuite un champs ID (pid dans mon script), en effet, ce champs servira à repérer votre sondage parmis tout les autres que vous allez prendre un plaisir à faire petit vénard :p Il vous faut un champs TITRE qui est facultatif pour donner un titre au sondage. Il vous faut un champs TEXTE, c'est le champs primordial, celui où vous mettez votre question ... Il vous faut un champs FIELDS, vous répertorierez ici les choix de votre sondage séparés par un point virgule ';', c'est là la chose la plus interessante de ce script : Apprendre à utiliser IMPLODE et EXPLODE ... Ne fuyez pas je vous prie, ce n'est pas fini. Il vous faudra aussi un champs RESULTS, vous y mettrez les résultats du sondage. FNALEMENT, si vous êtes motivé, vous pouvez songer éventuellement à la potencielle possibilité d'ajouter un champ DATE et un champs OK ... Maintenant, la chose la plus importante, la réponse à la question (que vous vous posez, j'en suis sûr :p), "Que fait on de tout ce basard ?". Ce basard va vous aider à comprendre mon script (je l'ai tapé pour vous, pour vous éviter d'éventuelles crampes des doigts qui me mèneront en justice :p)
Source
- <?
- // S y s t è m e d e v o t e :
-
- // S t r u c t u r e d e l a t a b l e ` n e _ v o t e s `
- /*
- CREATE TABLE `ne_votes` (
- `pid` int(9) NOT NULL auto_increment,
- `title` varchar(255) NOT NULL default '',
- `text` varchar(255) NOT NULL default '',
- `fields` text NOT NULL,
- `results` text NOT NULL,
- `datei` datetime NOT NULL default '0000-00-00 00:00:00',
- `ok` tinyint(1) NOT NULL default '0',
- PRIMARY KEY (`pid`)
- ) TYPE=MyISAM AUTO_INCREMENT=1 ;
- */
-
- // P r é s e n t a t i o n d e s c h a m p s d e ` n e _ v o t e s `
- # pid => pool's id
- # title => pool's title
- # text => pool's question
- # fields => pool's fields
- # results => pool's results
- # date => Date of the day
- # ok => the pool is actived
-
- //O p t i m i s é p o u r u n s y s t è m e d o n t l e s v a r i a b l e s g l o b a l e s s o n t à O F F
- $votes = 'ne_votes';
- if(!isset($_GET['op'])){$_GET['op']="";}
- if(!isset($_GET['part'])){$_GET['part']="";}
- mysql_select_db("netwaka emulation", mysql_connect("localhost", "root", ""));
- switch($_GET['op'])
- {
- default:
- echo 'Affichage du sondage et<br>des résultats :';
- $req = mysql_fetch_array(mysql_query('SELECT * FROM `'.$votes.'` WHERE `ok`="1" ORDER BY `pid` DESC'));
- if(is_array($req))
- {
- $fields = explode(';', $req['fields']);
- $results = explode(';', $req['results']);
- unset($results[''],$fields['']);
- echo '<hr width="150" align="left">';
- echo $req['title'];
- echo '<br>';
- echo $req['text'];
- echo '<br>';
- echo '<br>';
- $answers = array_sum($results);
- for($i=0; $i<count($fields); $i++)
- {
- if($answers!=0)
- {
- $percents = (($results[$i]/$answers)*100);
- }
- else
- {
- $percents = "1";
- }
- $percents = floor($percents);
- echo $fields[$i].' ('.$percents.' %)';
- echo '<br>';
- echo '<table border="0" width="100" bgcolor="#CCCCCC" height="15" cellpadding="0" cellspacing="0">';
- echo '<tr>';
- echo '<td>';
- echo '<table border="0" cellpadding="0" cellspacing="0" width="'.$percents.'" bgcolor="#FF0000" height="15">';
- echo '<tr>';
- echo '<td>';
- echo '</td>';
- echo '</tr>';
- echo '</table>';
- echo '</td>';
- echo '</tr>';
- echo '</table>';
- }
- }
- else
- {
- echo '<br>';
- echo 'Aucun sondage pour le moment ...';
- }
- echo '<br>';
- echo '<a href="?op=insert">Insérer un nouveau sondage</a>';
- break;
- case "insert":
- switch($_GET['part'])
- {
- default:
- echo 'Combien de choix possibles pour le sondage ?';
- echo '<form method="post" action="?op=insert&part=1">';
- echo '<input type="text" name="choice" value="5">';
- echo '<input type="submit">';
- echo '</form>';
- break;
- case "1":
- echo 'Création d\'un formulaire à '.$_POST['choice'].' choix :';
- echo '<form method="post" action="?op=insert&part=2">';
- echo '<input type="text" name="title" value="Titre de votre sondage">';
- echo '<br>';
- echo '<input type="text" name="text" value="Question de votre sondage">';
- echo '<br>';
- echo '<br>';
- for($i=0; $i<$_POST['choice']; $i++)
- {
- echo '<input type="text" name="'.$i.'" value="Choix '.$i.'">';
- echo '<br>';
- }
- echo '<br>';
- echo 'Ce sondage est activé : <input type="checkbox" name="ok" value="1">';
- echo '<input type="hidden" name="choice" value="'.$_POST['choice'].'">';
- echo '<br>';
- echo '<br>';
- echo '<input type="submit">';
- echo ' ';
- echo '<input type="reset">';
- echo '</form>';
- break;
- case "2":
- if(isset($_POST['choice'])&&isset($_POST['title'])&&isset($_POST['text']))
- {
- $fields = "";
- $results = "";
- for($i=0; $i<$_POST['choice']; $i++)
- {
- $fields .= $_POST[$i];
- if(isset($_POST[($i+1)]))
- {
- $fields .= ";";
- $results .= ";";
- }
- }
- if(mysql_query('INSERT INTO `'.$votes.'` VALUES("","'.$_POST['title'].'","'.$_POST['text'].'","'.$fields.'","'.$results.'","'.date("Y-m-d H:i:s").'","'.$_POST['ok'].'")'))
- {
- echo 'Création de votre nouveau sondage réussie ...';
- echo '<br>';
- echo '<a href="?ok">Cliquez là</a>';
- }
- else
- {
- echo 'Une erreur interne s\'est produite ...';
- }
- }
- else
- {
- echo 'Une erreur interne s\'est produite ...';
- }
- break;
- }
- break;
- }
- ?>
<?
// S y s t è m e d e v o t e :
// S t r u c t u r e d e l a t a b l e ` n e _ v o t e s `
/*
CREATE TABLE `ne_votes` (
`pid` int(9) NOT NULL auto_increment,
`title` varchar(255) NOT NULL default '',
`text` varchar(255) NOT NULL default '',
`fields` text NOT NULL,
`results` text NOT NULL,
`datei` datetime NOT NULL default '0000-00-00 00:00:00',
`ok` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`pid`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
*/
// P r é s e n t a t i o n d e s c h a m p s d e ` n e _ v o t e s `
# pid => pool's id
# title => pool's title
# text => pool's question
# fields => pool's fields
# results => pool's results
# date => Date of the day
# ok => the pool is actived
//O p t i m i s é p o u r u n s y s t è m e d o n t l e s v a r i a b l e s g l o b a l e s s o n t à O F F
$votes = 'ne_votes';
if(!isset($_GET['op'])){$_GET['op']="";}
if(!isset($_GET['part'])){$_GET['part']="";}
mysql_select_db("netwaka emulation", mysql_connect("localhost", "root", ""));
switch($_GET['op'])
{
default:
echo 'Affichage du sondage et<br>des résultats :';
$req = mysql_fetch_array(mysql_query('SELECT * FROM `'.$votes.'` WHERE `ok`="1" ORDER BY `pid` DESC'));
if(is_array($req))
{
$fields = explode(';', $req['fields']);
$results = explode(';', $req['results']);
unset($results[''],$fields['']);
echo '<hr width="150" align="left">';
echo $req['title'];
echo '<br>';
echo $req['text'];
echo '<br>';
echo '<br>';
$answers = array_sum($results);
for($i=0; $i<count($fields); $i++)
{
if($answers!=0)
{
$percents = (($results[$i]/$answers)*100);
}
else
{
$percents = "1";
}
$percents = floor($percents);
echo $fields[$i].' ('.$percents.' %)';
echo '<br>';
echo '<table border="0" width="100" bgcolor="#CCCCCC" height="15" cellpadding="0" cellspacing="0">';
echo '<tr>';
echo '<td>';
echo '<table border="0" cellpadding="0" cellspacing="0" width="'.$percents.'" bgcolor="#FF0000" height="15">';
echo '<tr>';
echo '<td>';
echo '</td>';
echo '</tr>';
echo '</table>';
echo '</td>';
echo '</tr>';
echo '</table>';
}
}
else
{
echo '<br>';
echo 'Aucun sondage pour le moment ...';
}
echo '<br>';
echo '<a href="?op=insert">Insérer un nouveau sondage</a>';
break;
case "insert":
switch($_GET['part'])
{
default:
echo 'Combien de choix possibles pour le sondage ?';
echo '<form method="post" action="?op=insert&part=1">';
echo '<input type="text" name="choice" value="5">';
echo '<input type="submit">';
echo '</form>';
break;
case "1":
echo 'Création d\'un formulaire à '.$_POST['choice'].' choix :';
echo '<form method="post" action="?op=insert&part=2">';
echo '<input type="text" name="title" value="Titre de votre sondage">';
echo '<br>';
echo '<input type="text" name="text" value="Question de votre sondage">';
echo '<br>';
echo '<br>';
for($i=0; $i<$_POST['choice']; $i++)
{
echo '<input type="text" name="'.$i.'" value="Choix '.$i.'">';
echo '<br>';
}
echo '<br>';
echo 'Ce sondage est activé : <input type="checkbox" name="ok" value="1">';
echo '<input type="hidden" name="choice" value="'.$_POST['choice'].'">';
echo '<br>';
echo '<br>';
echo '<input type="submit">';
echo ' ';
echo '<input type="reset">';
echo '</form>';
break;
case "2":
if(isset($_POST['choice'])&&isset($_POST['title'])&&isset($_POST['text']))
{
$fields = "";
$results = "";
for($i=0; $i<$_POST['choice']; $i++)
{
$fields .= $_POST[$i];
if(isset($_POST[($i+1)]))
{
$fields .= ";";
$results .= ";";
}
}
if(mysql_query('INSERT INTO `'.$votes.'` VALUES("","'.$_POST['title'].'","'.$_POST['text'].'","'.$fields.'","'.$results.'","'.date("Y-m-d H:i:s").'","'.$_POST['ok'].'")'))
{
echo 'Création de votre nouveau sondage réussie ...';
echo '<br>';
echo '<a href="?ok">Cliquez là</a>';
}
else
{
echo 'Une erreur interne s\'est produite ...';
}
}
else
{
echo 'Une erreur interne s\'est produite ...';
}
break;
}
break;
}
?>
Conclusion
Donc, maintenant, raprochez vous de l'écran ... Ce script est composé de PSEUDO FRAMES PHP pour le faire tenir en une seule page et vous faire comprendre aussi comment utiliser SWITCH(){}.
Lorsque la variable $_GET['op'] n'est pas définie (lorsque l'on ne défini aucune frame aussi) l'instruction par défaut est suivie : On affiche le dernier vote et ses résultats : 1°) On séléctionne depuis la table MYSQL (mysql_query() ) les valeurs et on les mets dans un tableau (mysql_fetch_array() ) 2°)Si ces instructions retournent un tableau (is_array()) alors on continue le script, sinon on met un message qui dit qu'il n'y a pas d'instruction donc pas de vote dans la table mysql 3°)Dans notre cas, nous allons dire que le tableau n'est pas vide et que nous avons bien un sondage dans notre mysql's table 4°) On récupère les valeurs des choix, dans la tables ils sont séparés par un point virgule ";" (exemple : Choix1;Choix2;Choix3). Nous allons utiliser explode() qui va séparer la chaine de caractère "Choix1;Choix2;Choix3" en segment, ce qui va donner pour explode(';', $req['fields']) : $req['fields']['1'] = Choix1 $req['fields']['2'] = Choix2 etc. Enfin, nous allons faire de même pour les enregistrements results. 5°) Pour pouvoir faire une sorte d'historique, vous devrez connaitre le nombre de personnes ayant voté ... Pourquoi se casser la tête, nous pouvons facilement obtenir ça en comptant le nombre de réponses. Vous savez que vous avez découpé les enregistrements results avec explode en tableau ... Vous n'avez plus qu'a faire la somme des valeurs du tableau $req['results'] avec ... (allez dites le, vous le savez) ... array_sum() Maintenant, vous pouvez faire un pourcentage ... je ne vous aide plus vous êtes assez grand, et vous savez manipuler le HTML ... :p
Pour le reste, le script qui vous permettra de faire voter vos visiteurs, je ne vous aide pas non plus, à vous de réfléchir, petits flemmards ...
Bon, maintenant, en espèrant que vous avez lu ça jusqu'à la fin ... Je vous lâche, la prochaine leçon devrai pas tarder ... Je pense que ce sera un tutorial sur un forum ou peut etre sur le fonctionnement d'une zone membre ... Envoyez moi des propositions par mail : schiuchu@msn.com (pas de spam ! c ma dernière boite aux lettres ...
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Prise en compte d'un cookie et rafraichissement fenêtre [ par joel64 ]
bonjour,merci à celui ou celle qui me donnera la solution au problème suivant.il s'agit d'un script php de sondage qui affiche la possibilité de vote
sondage [ par 01cod10 ]
Salut à tous,j'ai trouvé un script pour la réalisation d'un sondage sur mon site. J'aimerai modifié l'affichage des résultats en graphique. pouvez vou
sondage en php mysql [ par ghodhban ]
salut tout le monde; j'ai un problème au niveau de compilation d'un code sondage AJAX POLL, mais j'ai rencontré erreurs ( ligne 23), svp quelqu'un m'
Sondage.. [ par syndrael ]
Bonjour les amis, Qui a reçu un message d'amel?? qui fait un PFE et qui aime bien qu'on lui fasse son boulot ? S.
Pbl ac Alex sondage [ par pedro ]
Slt,Je n'arrive pas a faire fonctionner "alex sondage", pourtant j'ai bien mis la balise php ds ma page voila la source de ma page si vous pouvez m'ai
sondage [ par fatNugly ]
bonjour..quelqu'un aurait il une idee ou un srcipt pour empecher qu'une meme personne vote deux fois dans la meme journee le meme sondage?!?mercifatty
System de vote [ par BTAJV ]
Donc bon voila mon probleme J'aimerai pouvoir crée un system de vote pour une parti video que je suis en trin de crée (ici) et donc voila si vous avez
Sondage [ par styleyassine ]
salut a tous : je veux faire un sondage pour mon site web. un simple sondage et sans base de donneé aider moi svp voila mon msn yassine_style@ho
sondage php par email? [ par freednk ]
Bonjourje me prepare a creer un petit sondage avec les choix de reponses mais aussi avec les champs a remplir en text (commentaires ou reponses aux qu
script sondage meilleur image [ par Manu_Corp ]
Bonjour, Je voulu testeé ce script > sondage " meilleur image " ss bd mé sans resultat positif ! Pourtant g bien suivi la façon de l'appeler et
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|