Créer un sondage en PHP avec Dreamweaver – 1re partie
Dans ce tutoriel en 5 parties, nous allons créer un petit sondage avec bouton radio (choix multiple, réponse unique) qui présentera à l’utilisateur les résultats du sondage une fois qu’il aura voté. Merci à Floppy dont je me suis inspirée...
La question de notre sondage portera sur l’éditeur de code utilisé par le sondé :)
On suppose que votre base de données (dans ce tuto appelée ma_base) existe déjà et que ce fonctionnel s’insère dans un site existant possédant une connexion nommée ma_Connexion.
Tout d’abord allez dans PHPMyAdmin afin de créer la table contenant le sondage :
#
# Structure de la table 'sondage'
#
CREATE TABLE tb_sondage (
id_reponse tinyint(4) NOT NULL default '0',
compteur bigint(20) NOT NULL default '0',
libelle varchar(255) NOT NULL default '',
PRIMARY KEY (id_reponse)
) TYPE=MyISAM;
#
# Contenu de la table 'sondage'
#
INSERT INTO tb_sondage VALUES (1, 0, 'Dreamweaver');
INSERT INTO tb_sondage VALUES (2, 0, 'Ultra Edit');
INSERT INTO tb_sondage VALUES (3, 0, 'Notepad++');
INSERT INTO tb_sondage VALUES (4, 0, 'Autres');
Nous allons maintenant réaliser la page qui contient le sondage. Faites Fichier >> Nouveau >> Page vierge >> PHP >> Mise en forme Aucune.
Vérifiez en mode code, que la 1re ligne de votre document est bien :
<?php require_once('Connections/ma_Connexion.php'); ?>
Nous allons tout d’abord créer le squelette du formulaire contenant le sondage. Pour cela, nous respectons les standards W3C :
<form name="vote" id="vote" >
<fieldset>
<legend>Sondage</legend>
<p>Quel éditeur de code utilisez-vous ?</p>
<label for=""></label>
<input name="reponse" id="" type="radio" value="" />
<br />
</fieldset>
<p>
<input id="button1" type="submit" value="Voter" />
</p>
</form>
Voici pour info la CSS que j’utilise dans ce tutorial :
<style media="screen" type="text/css">
form { font-size:0.8em; background:#e0e0e0; width:250px; padding:10px; margin:0 auto; border:1px solid #e1e1e1; font-family: Arial, Helvetica, sans-serif; }
form fieldset {width:230px; display:block; padding:5px; line-height:1.5em; border:1px solid #fff; margin:15px 0 0 5px;}
form legend { border:1px solid #666; color:#f00; font-size:1em; margin-bottom:0; padding:3px; width:60px; background:none; font-weight:bold;}
form label {clear:left; display:block; float:left; width:120px; text-align:right; padding-right:10px; color:#000; margin-bottom:0.5em; font-size:1em; line-height:1.5em; }
form input {padding:0; margin-bottom:0.8em;}
form #button1 { background:#ff6600; border:1px solid #333; color:#fff; padding-right:0.5em; cursor:pointer; width:100px; margin-left:75px; font-weight:bold;}
</style>
Vous constatez ici qu’il n’y a qu’un seul bouton radio sans libellé ni valeur. Nous allons pour cela utiliser un jeu d’enregistrement et un comportement serveur.
Pour le jeu d’enregistrement, nous allons paramétrer la fenêtre comme suit :
Une fois validé cette fenêtre, mettez-vous en mode code et ouvrez le panneau de liaison. Faites cliquer-glisser les items « id_reponse » et « libelle » comme indiqué dans la portion de code ci-dessous :
<label for="<?php echo $row_RS_reponse['libelle']; ?>"><?php echo $row_RS_reponse['libelle']; ?></label>
<input name="reponse" id="<?php echo $row_RS_reponse['libelle']; ?>" type="radio" value="<?php echo $row_RS_reponse['reponse']; ?>" />
<br />
Maintenant sélectionnez le code ci-dessus et appliquez le comportement serveur « Région répétée » que vous paramétrez bien évidemment à « tous les enregistrements ».
Si vous affichez la page dans votre navigateur, vous devez obtenir ceci :
Pour mettre à jour le compteur dans la table, il faut maintenant insérer la réponse faite par l’utilisateur dans le compteur de la table tb_sondage. Pour cela, nous allons utiliser le comportement serveur « insérer un enregistrement » que nous allons remanier. Voici le paramétrage de cette fenêtre :
Mettez la fenêtre principale en mode code si ce n’est déjà fait et modifier les lignes suivantes :
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "vote")) {
$insertSQL = sprintf("INSERT INTO tb_sondage (reponse) VALUES (%s)",
GetSQLValueString($_POST['reponse'], "int"));
comme suit (en gras ci-dessous) :
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "vote")) {
$insertSQL = sprintf("UPDATE tb_sondage set compteur = compteur + 1 WHERE id_reponse =%s",
GetSQLValueString($_POST['id_reponse'], "int"));
Tester votre fonctionnel dans votre navigateur : si tout se passe bien vous devriez voir le compteur s’incrémenter à chaque vote !
Nous verrons donc bientôt comment afficher en ligne les résultats du vote.
(disponible ici : http://dreamgratuit.canalblog.com/archives/2008/04/03/8589836.html )
---------------------------------------------------------------------------------------
This tutorial is about building a poll (vote / survey) system with Dreamweaver / PHP - MySQL


