La Homepage de Floppy
v3.00 - Tutoriaux PHP + MySQL



Sondage
(PHP4 uniquement)

 


Vous pouvez accèder directement à la partie qui vous intéresse en cliquant ci-dessous :
  • Paramétrage du tutorial
  • Information sur le tutorial
  • Création de la table dans MySQL
  • Création du fichier globale.inc.php
  • Création du fichier fonction.inc.php
  • Création du fichier sondage.php
  • Conclusion



  • Paramétrage du tutorial
     


    Ce tutorial utilise des Valeurs par défaut
    Si vous n'utilisez pas les mêmes valeurs, veuillez les changer et appuyer sur le bouton de validation des modifications
    Pour remettre un champ à sa valeur initiale, cliquez sur sa description
    Modification des paramètres
    Nom de la base de données  : 
    Nom de la table dans la base  : 
    Remarque : ces valeurs apparaitront dans le tutorial sous cette forme : lfa



    Information sur le tutorial
     


    Ce tutorial explique comment créer et mettre à jour une table de la base mySQL, permettant de gérer un sondage

    Pour illustrer le tutorial, nous allons créer
  • 1 table dans la base MySQL pour stocker les votes du sondage associés à chacunes des réponses possibles (ici 4 réponses),
  • 1 fichier include contenant les variables globales au tutorial
  • 1 fichier include contenant les fonctions utilisées dans le tutorial
  • 1 page qui affichera le sondage et ses résultats

    Vous pouvez vous rendre compte du résultat en cliquant ici : résultat du tutorial

    Au préalable, vous devez avoir installé Apache, PHP 4 et MySQL (cf. tutorial sur l'installation d'apache + PHP 4 + MySQL)
    Eventuellement, vous devez avoir installé phpMyAdmin (cf. tutorial sur l'installation de phpMyAdmin)
    Vous devez également avoir un minimum de connaissances sur les bases de données et le SQL (sujets non abordés dans ce tutorial)

    Pour tout complément d'information ou pour toutes questions, vous pouvez me laisser un mail ou poster un message dans le forum

    Merci de ne pas réutiliser ce tutorial sans citer mon site : La homepage de Floppy

    Bonne lecture...



    Création de la table dans MySQL
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier de création de la table, il se trouve dans l'archive sondage.zip (fichier sondage.sql)
    2 Créez une base de donnée lfa à l'aide de phpMyAdmin
    3 Créez la table sondage dans votre base de données lfa, à l'aide de phpMyAdmin
    Cette table est définie ainsi :
    #
    # Structure de la table 'sondage'
    #
    CREATE TABLE sondage (
        reponse tinyint(4) NOT NULL default '0',
        compteur bigint(20) NOT NULL default '0',
        libelle varchar(255) NOT NULL default '',
        PRIMARY KEY (reponse)
    ) TYPE=MyISAM;

    #
    # Contenu de la table 'sondage'
    #
    INSERT INTO sondage VALUES (1, 0, 'Débutant');
    INSERT INTO sondage VALUES (2, 0, 'Initié');
    INSERT INTO sondage VALUES (3, 0, 'Confirmé');
    INSERT INTO sondage VALUES (4, 0, 'Expert');
    Explication : voici l'explication des champs de la table :
  • reponse : clé primaire (unique) de la table, identifiant 1 enregistrement unique
  • compteur : champ contenant le nombre de votes pour cette catégorie (par défaut, on le met à '0')
  • libelle : libellé de la catégorie Remarque : on insère 4 enregistrements dans la table mais vous pouvez en mettre autant que vous le souhaitez
  • 4 Vous n'aurez plus besoin de phpMyAdmin pour la suite du tutorial




    Création du fichier globale.inc.php
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier globale.inc.php, il se trouve dans l'archive sondage.zip
    2 Créer un fichier d'include globale.inc.php, contenant les variables globales d'accès à votre base
    Ce fichier est prévu pour un usage en local et un usage sur le serveur de votre hébergeur (Free par exemple), d'où le test sur le HTTP_HOST
    Ce fichier contient ces lignes :
    <?
    if (getenv("HTTP_HOST") == "localhost") {
        // variables globales localhost
        $host = "localhost";
        $base = "lfa";
        $login = "";
        $pass = "";
    } else {
        // variables globales Free
        $host = "sql.free.fr";
        $base = "laurent.fagot";  // à changer
        $login = "laurent.fagot"; // à changer
        $pass = "xxxxxxxx";       // à changer
    }
    ?>
    Explication : voici l'explication des variables utilisées :
  • $host : nom du host (serveur) hébergeant la base
  • $base : nom de la base sur le serveur
  • $login : login pour accèder à la base
  • $pass : mot de passe pour accèder à la base
    Attention : selon si vous utilisez le fichier en local ou sur le serveur, vous devez faire des modifications :
  • Pour la partie variables globales localhost, il ne devrait pas y avoir de modification à effectuer (mise à part $base)
  • Pour la partie variables globales Free, il vous faut modifier les valeurs des lignes marquées par '// à changer' comme suit :
        - $base : votre identifiant de connexion sur Free
        - $login : votre identifiant de connexion sur Free (le même que $base)
        - $pass : votre mot de passe sur Free
    Remarque : si vous utilisez un autre fournisseur d'accès que Free, veuillez adapter les valeurs aux variables




  • Création du fichier fonction.inc.php
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier fonction.inc.php, il se trouve dans l'archive sondage.zip
    2 Créer un fichier d'include fonction.inc.php, contenant les fonctions d'accès à votre base
    Ce fichier est découpé en fonctions (d'où son nom), et il ne contient que du code PHP
    Ajoutez donc la ligne en début de fichier :
    <?
    3 Fonction connecte() : connexion à la base
    Ajoutez ces ligne au fichier :
    function connecte() {
        global $base, $host, $login, $pass;
        $conn = mysql_connect($host, $login, $pass);
        mysql_select_db($base);
        return $conn;
    }
    Utilise les variables globales $base, $host, $login et $pass, définies dans le fichier globale.inc.php
    Sélectionne la base sur laquelle on va travailler et retourne l'identifiant de la connecion ($conn)
    4 Fonction deconnecte($conn) : déconnexion de la base
    Ajoutez ces ligne au fichier :
    function deconnecte($conn) {
        mysql_close($conn);
    }
    Utilise la variable de connexion $conn, passée en argument et issue de la fonction connecte()
    5 Fonction incCompteur($reponse) : incrémente de 1 le compteur de la réponse passée en paramètre ($reponse)
    Ajoutez ces ligne au fichier :
    function incCompteur($reponse) {
        mysql_query("update sondage set compteur = compteur + 1 where reponse = $reponse");
    }
    Incrément le compteur de 1 dans la table sondage dont le champ réponse contient la valeur du paramètre $reponse
    6 Fonction getCompteur($reponse) : récupère le nombre de votes de la réponse passée en paramètre ($reponse)
    Ajoutez ces ligne au fichier :
    function getCompteur($reponse) {
        $result = mysql_query("select * from sondage where reponse = $reponse");
        $row = mysql_fetch_object($result);
        if ($row)
            $cpt = $row->compteur;
        else
            $cpt = 0;
        mysql_free_result($result);
        return $cpt;
    }
    Accède à l'enregistrement dans la table sondage dont le champ réponse contient la valeur du paramètre $reponse
    Si l'enregistrement est trouvé, on retoune la valeur du champ compteur, sinon on retourne la valeur zéro (0)
    7 Fonction getTotalCompteurs() : retourne le nombre total de votes
    Ajoutez ces ligne au fichier :
    function getTotalCompteurs() {
        $result = mysql_query("select sum(compteur) as total from sondage");
        $row = mysql_fetch_object($result);
        if ($row)
            $total = $row->total;
        else
            $total = 0;
        mysql_free_result($result);
        return $total;
    }
    Accède à la somme des champs compteur des enregistrements de la table sondage
    Si une somme a pu être trouvée, on retourne cette somme, sinon on retourne la valeur zéro (0)
    8 Fermez le fichier PHP en ajoutant cette ligne en fin de fichier :
    ?>




    Création du fichier sondage.php
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier sondage.php, il se trouve dans l'archive sondage.zip
    2 Créer un fichier PHP sondage.php, permettant de gérer votre sondage.
    Ce fichier comporte les lignes suivantes :
    <?
    include "globale.inc.php";
    include "fonction.inc.php";
    $conn = connecte();
    if (isset($reponse)) incCompteur($reponse);
    ?>
    Explication : voici l'explication de ces lignes
  • Chargement du fichier d'include globale.inc.php contenant les variables de l'application
  • Chargement du fichier d'include fonction.inc.php contenant les fonctions de l'application
  • Connexion à la base
  • si il y a eu un vote, on incrémente le compteur correspondant
  • 3 Voici la suite du fichier :
    <html>
    <head>
    </head>
    <body>
    <center>
    <br>
    Ci-dessous se trouve le <b>sondage</b> du tutorial
    <br><br><br>
    Explication : voici l'explication de ces lignes
  • Début du fichier HTML
  • 4 Voici la suite du fichier :
    <b>Quel est votre niveau en PHP ?</b>
    <br><br>
    <form action=sondage.php method=post name=vote>
    <table>
    <tr>
        <td>
        <?
        $result = mysql_query("select * from sondage order by reponse");
        while ($row = mysql_fetch_object($result)) {
            $libelle = $row->libelle;
            $reponse = $row->reponse;
            ?>
            <input type=radio name=reponse value="<? echo $reponse ?>"><? echo $libelle ?></input><br>
            <?
        }
        mysql_free_result($result);
        ?>
        </td>
    </tr>
    </table>
    <br>
    <input type=submit value="Voter">
    </form>
    <br>
    <hr width=300>
    <br>
    Explication : voici l'explication de ces lignes
  • Mise en place du formulaire permettant de voter (le formulaire se rappel lui-même)
  • On affiche la liste de toutes les réponses possibles à l'intérieur du formulaire
  • 5 Voici la suite du fichier :
    <? $total = getTotalCompteurs(); ?>
    <b>Résultats</b><br>
    (sur <? echo $total; ?> vote<? if ($total > 1) echo "s"; ?>)
    <br><br>
    <table cellspacing=0 cellpadding=3 border=1>
    <tr bgcolor="EFF9FF"><td>Position</td><td>Libellé</td><td>Pourcentage</td><td>Votes</td></tr>
    <?
    $pos = 1;
    $result = mysql_query("select * from sondage order by compteur desc");
    while ($row = mysql_fetch_object($result)) {
        $libelle = $row->libelle;
        $compteur = $row->compteur;
        if ($total == 0)
            $pourcentage = "0.00";
        else
            $pourcentage = 100 * $compteur / $total;
        ?>
        <tr>
            <td align=center><? echo $pos ?></td>
            <td><? echo $libelle ?></td>
            <td align=right><? echo sprintf("%.2f", $pourcentage) ?> %</td>
            <td align=center><? echo $compteur ?></td>
        </tr>
        <?
        $pos++;
    }
    mysql_free_result($result);
    ?>
    </table>
    Explication : voici l'explication de ces lignes
  • On récupère le nombre total de votes (getTotalCompteurs)
  • On affiche les résultats en triant par ordre de nombre de votes (compteur) décroissant
  • Pour tous les résultats, on calcule le % que représente chaque partie (100 * nombre de votes de la partie / nombre de votes total) et on l'affiche avec 2 chiffres après la virgule ("%.2f")
  • 6 Voici la fin du fichier :
    </center>
    <?
    deconnecte($conn);
    ?>
    </body>
    </html>
    Explication : voici l'explication de ces lignes
  • Déconnection de la base
  • Fermeture du fichier HTML




  • Conclusion
     


    Vous avez maintenant tous les exemples pour gérer un sondage grace à une base de données MySQL :
  • accès à la base de données (connexion et deconnexion)
  • accès à des enregistrement d'une table
  • mise à jour de champs dans une table...

    Résumé : voici la méthode résumé pour utiliser un sondage
  • au début du fichier,
        - chargez le fichier globale.inc.php (include)
        - chargez le fichier fonction.inc.php (include)
        - connectez-vous au serveur
        - si il y a lieu, mettre à jour le vote
        - afficher la liste des propositions de vote dans un formulaire
        - afficher les résultats des votes
  • en fin de fichier, déconnectez-vous du serveur

    Rappels :

    Avant de commencer votre développement :
  • Lancez le serveur Apache
  • Lancez le serveur MySQL

    Pendant le développement :
  • Déposez vos sources dans la racine de votre site web ou dans un sous-répertoire de cette racine

    Avant de quitter :
  • Arrêtez le serveur MySQL
  • Arrêtez le serveur Apache


    © Floppy /AD - 09/2003