Extensions et tutorials gratuits disponibles sur internet pour Dreamweaver. PHP et ASP. Classement thématique. Blog référencé par Adobe Communauté Dreamweaver.

Dreamweaver gratuit

Créer un sondage en PHP avec Dreamweaver – 1re partie

31 mars 2008 | Posté par caroder à 07:36

Bookmark and Share

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 :

sondage1

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 :

sondage2

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 :

sondage3

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


Commentaires

    Sondage

    Super, tu m'as coupé l'herbe sous le pied, je pensais faire un tuto sur ce sujet, très bien,je suivrais avec plaisir la suite.
    JPierre / Asp-php.net / Ultradream.com

    Posté par JPierre | 31 mars 2008 à 14:00
  • Merci JPierre

    Merci Jean-Pierre !
    Je suis désolée de t'avoir grillé la priorité d'autant que tes tutos sont souvent plus pédagogiques que les miens )
    Et je recommande à tous de visiter ton site Ultradream et tes autres tutoriels sur ASP-PHP.net !!

    Posté par caroder | 31 mars 2008 à 19:51
  • modif d'insertion

    Bonjour, je suis en train de faire le tuto, mais le fait de modifier la requete update, ne donne rien dans la base, je l'ai refait deux fois sans succès le compteur ne s'incrémente pas dans la table. Que peut il se passer merci

    Posté par reymac | 23 mai 2008 à 19:49
  • re modif insertion

    re bonjour,
    j'ai finalement trouvé l'erreur à savoir la non incrémentation du compteur, il y a une erreur dans votre code.

    Posté par reymac | 24 mai 2008 à 11:14
  • Ce serait utile...

    ... de donner le contenu de l'erreur s'il y a en a une. Cela pourrait aider d'autres internautes.
    Quant à moi, ce code fonctionne très bien sur un de mes sites.
    Merci par avance.

    Posté par dreamweaver | 24 mai 2008 à 19:11
  • infos

    Bonjour, pouvez-vous expliquer l'erreur du code merci

    Posté par bbshetan | 11 juin 2008 à 13:32
  • modif insertion

    Bonjour,
    Je confirme que le fait de modifier la requête ne donne pas l'incrémentation du compteur.
    J'ai vérifié le code plusieurs fois tout est identique au vôtre et rien ne fonctionne comme prévu.
    Pouvez-vous me donner la solution ?
    Merci beaucoup

    Posté par dandey | 15 juillet 2008 à 10:04
  • rectification du code

    if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "vote")) {
    $insertSQL = sprintf("UPDATE tb_sondage set compteur = (%s)+1 WHERE id_reponse =%s",
    GetSQLValueString($_POST['id_reponse'], "int"));


    Normalement sa doit fonctionner.

    Pas besoin de créer "insérez un enregistrement",faire directement 'mettre à jour un enregistrement' et rajouter les parenthèses et le +1 ce qui donne (%s)+1 ensuite vous donnez à la boite de dialogue la direction pour aller à la page suivante.
    Je vous rassure ça marche très bien et il n'y a que 3 lettres a rajouter pas besoin d'extension.

    Posté par fatah | 18 octobre 2008 à 15:03
  • toujours problème

    J'ai bien fait la modification du code en UPDATE mais rien ne marche . . . pourriez m'aider, merci

    Posté par Alain | 27 octobre 2010 à 18:44
  • Attention à votre version de Dream !weaver

    J'attire l'attention des lecteurs sur le fait que ce tutoriel a été créé avec la version CS3 de Dreamweaver et que le passage à la version CS4 modifie effectivement la rédaction des requêtes.

    Posté par caroder | 28 octobre 2010 à 17:57
  • Merci mais quel est le code ?

    Oui effectivement j'utilise la version 8 de Dreamwaver, alors serait il possible que vous me donniez le code adapté svp ? merci de votre aide

    Posté par Alain | 29 octobre 2010 à 07:17
  • idem ca entre pas dans la base de donnée

    Posté par Mapomme | 16 janvier 2014 à 18:30
 

Poster un commentaire