IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Créer un sondage avec PHP à l'aide de fichiers texte


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Par défaut Créer un sondage avec PHP à l'aide de fichiers texte
    bonjour à tous, voilà je suis nouvelle en terme de PHP, et je voudrais concevoir un sondage simple pour mon site Intranet, sans avoir à utiliser de base de données, alors j'ai commencer par créer un formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <div class="round-border-topleft"></div><div class="round-border-topright"></div>
              <h1 class="blue">Quel est votre avis?</h1>
              <p>Que pensez vous du Portail d'RA1K?</p>
              <form name="formulaire" method="post" action="<?$PHP_SELF;?>">
                <p><input type="radio" name="choix"  value="rate">Raté</p>
                <p><input type="radio" name="choix" value="moyen">Moyen</p>
                <p><input type="radio" name="choix" value="bon">bon</p>
                <div align="center">
                  <input type="submit" value="Votez">
                </div>
              </form>
            </div>
    puis j'ai crée 3 fichiers textes correspondants aux choix du sondage.
    ensuite j'ai rajouté ce bout de code à mon fichier index.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?
    switch($choix)
    {
    case "rate":
    $fichier = fopen("rate.txt","r+");
    $sond = fgets($fichier,255);
    $sond++;fclose($fichier);
    $fichier = fopen("rate.txt","w");
    fwrite($fichier,$sond);
    fclose($fichier);break;
     
    case "moyen":
    $fichier = fopen("moyen.txt","r+");
    $sond = fgets($fichier,255);
    $sond++;fclose($fichier);
    $fichier = fopen("moyen.txt","w");
    fwrite($fichier,$sond);
    fclose($fichier);break;
     
    case "bon":
    $fichier = fopen("bon.txt","r+");
    $sond = fgets($fichier,255);
    $sond++;fclose($fichier);
    $fichier = fopen("bon.txt","w");
    fwrite($fichier,$sond);
    fclose($fichier);break;
    }
    ?>
    ensuite pour afficher les résultats:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?
    $fichier = fopen("rate.txt","r");
    $sonda = fgets($fichier,255);
    fclose($fichier);
     
    $fichier = fopen("moyen.txt","r");
    $sondb = fgets($fichier,255);
    fclose($fichier);
     
    $fichier = fopen("bon.txt","r");
    $sondc = fgets($fichier,255);
    fclose($fichier);
     
    $tot_sond=($sonda+$sondb+$sondc);
    echo "Nombre de \"rate\" : ",$sonda;
    echo "Nombre de \"moyen\" : ",$sondb;
    echo "Nombre de \"bon\" : ",$sondc;
    echo "Nombre total de votes : ",$tot_sond;
    ?>
    mais lors de l'exécution, c'est a dire à la validation du vote (click bouton "votez", le navigateur m'affiche ce message d'erreur:

    Accès interdit!
    Vous n'avez pas le droit d'accéder à l'objet demandé. Soit celui-ci est protégé, soit il ne peut être lu par le serveur.

    Si vous pensez qu'il s'agit d'une erreur du serveur, veuillez contacter le gestionnaire du site.
    Accès interdit!
    Vous n'avez pas le droit d'accéder à l'objet demandé. Soit celui-ci est protégé, soit il ne peut être lu par le serveur.
    Si vous pensez qu'il s'agit d'une erreur du serveur, veuillez contacter le gestionnaire du site.

    Error 403
    localhost
    10/28/09 08:29:55
    Apache/2.2.11 (Win32) PHP/5.2.8

    je précise que je suis entrain de travailler en local (Easyphp).

    Merci !!!

  2. #2
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Bonjour,

    Tout d'abord,
    il vaut mieux utiliser la balise d'ouverture "<?php".
    L'utilisation de la balise "<?" peut créer des problèmes avec les fichiers XHTML.

    Ensuite,
    et c'est la cause de ton erreur,
    l'action à appeler en cas de soumission du formulaire est mal codée (balise, pas d'echo, superglobale erronée). Voilà qui serait mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="formulaire" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
    Enfin,
    lors du premier vote,
    le fichier n'existe pas, $sound va donc être égal à ''.
    Et $sound++ restera égal à ''.
    Bref, tu ne parviendras pas à incrémenter ton compteur.

    Fred

  3. #3
    Membre éclairé Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Par défaut
    Citation Envoyé par micetf Voir le message
    Bonjour,

    Tout d'abord,
    il vaut mieux utiliser la balise d'ouverture "<?php".
    L'utilisation de la balise "<?" peut créer des problèmes avec les fichiers XHTML.

    Ensuite,
    et c'est la cause de ton erreur,
    l'action à appeler en cas de soumission du formulaire est mal codée (balise, pas d'echo, superglobale erronée). Voilà qui serait mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="formulaire" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
    Enfin,
    lors du premier vote,
    le fichier n'existe pas, $sound va donc être égal à ''.
    Et $sound++ restera égal à ''.
    Bref, tu ne parviendras pas à incrémenter ton compteur.

    Fred
    Voilà j'ai rectifié ce qui devait l'être! maintenant le navigateur m'affiche ce qui suit en haut de ma page (à son ouverture):
    Notice: Undefined variable: choix in C:\Program Files (x86)\EasyPHP 3.0\www\index.php on line 15
    Notice: Undefined variable: choix in C:\Program Files (x86)\EasyPHP 3.0\www\index.php on line 23
    Notice: Undefined variable: choix in C:\Program Files (x86)\EasyPHP 3.0\www\index.php on line 31
    en plus les résulats s'affichent comme suit:
    Nombre de "raté" : Nombre de "moyen" : Nombre de "bon" : Nombre total de votes : 0
    et ça ne marche toujours pas!! même si j'effectue et un choix et je valide par le bouton !!!

    Merci beaucoup de m'aider

  4. #4
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Aux lignes 15, 23 et 31 du script index.php, tu dois utiliser $choix alors que tu ne l'as pas initialisée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $choix = (isset($_POST['choix'])) ? $_POST['choix'] : null;
    Fred

  5. #5
    Membre éclairé Avatar de souminet
    Inscrit en
    Novembre 2006
    Messages
    351
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 351
    Par défaut
    Citation Envoyé par micetf Voir le message
    Aux lignes 15, 23 et 31 du script index.php, tu dois utiliser $choix alors que tu ne l'as pas initialisée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $choix = (isset($_POST['choix'])) ? $_POST['choix'] : null;
    Fred
    Oui, effectivement, j'avais remedier à ça!! mais même comme ça, les résulats ne s'affichent pas !!!

    j'ai ouvert les 3 fichiers textes pour vérifier, et ils sont vides!!

    le nombre de vote reste à zero malgré l'utilisation du sondage

    je n'ai pas compris, si le problème se situe au niveau du script lui même ou au niveau de l'affichage???

  6. #6
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Les fichiers sont vides ou ils contiennent 0.
    S'ils sont vides, lorsque tu fais $sond++, $sond ne passe pas à 1, mais reste à ''.

    Fred

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. créer un dossier avec php chez free
    Par stars333 dans le forum Langage
    Réponses: 1
    Dernier message: 04/05/2007, 19h25
  2. [Mail] envoi d'email avec php à l'aide de blat
    Par lahlousimo dans le forum Langage
    Réponses: 3
    Dernier message: 28/02/2007, 11h30
  3. Réponses: 2
    Dernier message: 15/12/2006, 14h22
  4. [Conception] Créer une table avec php
    Par freezerhm dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 29/10/2006, 12h15
  5. Créer un repertoire avec php
    Par cout dans le forum Langage
    Réponses: 3
    Dernier message: 23/01/2006, 17h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo