Rechercher : dans
Par :

Sondage php

Dernière réponse le 6 mar 2009 à 18:21:37 baujerome, le 3 mar 2009 à 23:13:21 
 Signaler ce message aux modérateurs

Bonjour,
j'ai repris un script php (sans base de donnée) et je l'ai intégré dans ma page. Tout fonctionne très bien sauf que j'ai remarqué qu'à l'affichage des résultats, les cases à cocher étaient toujours là, et aussi qu'avant de voter, les barres de résultat étaient déjà affichées.

Je suis nul en php et je me demandais s'il y avait moyen d'arranger ce script pour que l'affichage des résultats ne se fasse qu'après un vote et qu'il n'y ait plus que ça d'affiché. Et aussi qu'avant le vote, les résultats ne soient pas visibles. En espérant être clair ^^ ...

Voici le script :

<?

$titre = 'sondage'; // = nom du fichier dans lequel est stocké les votes
$question = 'Vous supportez Kimi depuis :';
$reponse[1] = 'qu\'il est en F1';
$reponse[2] = 'qu\'il est chez McLaren';
$reponse[3] = 'qu\'il est chez Ferrari';
$reponse[4] = 'qu\'il est champion';
$reponse[5] = 'toujours';
$reponse[6] = 'jamais';
$nb_max_votes = 1; // 0 si illimité
// MODIFICATION DU SONDAGE
$choix = count($reponse);
if (isset($_GET['vote']))
{
$resultats = fopen("$titre.txt", "r+");
$vote = $_GET['vote'];
for ($numero = 1; $numero <= $choix; $numero ++)
{
$ligne[$numero] = (int) fgets($resultats);
if ($numero == $vote)
{
$ligne[$numero] ++;
}
if (isset($donnees_votes))
{
$donnees_votes = $donnees_votes . "\n" . $ligne[$numero];
$nb_votes += $ligne[$numero]; // comptage du nombre de votes
}
else
{
$donnees_votes = $ligne[$numero];
$nb_votes = (int) $ligne[$numero];
 }
}
 fseek ($resultats, 0);
if($nb_votes<=$nb_max_votes OR $nb_max_votes==0)
 fputs ($resultats, $donnees_votes); // écriture des données

 fclose($resultats);
 }
 // LECTURE DU SONDAGE
 $resultats = fopen("$titre.txt", "r");

 $numero = 1;
 while ($numero <= $choix) // attribution d'un nombre pour chaque vote à l'array $resultat[]
 {
 $resultat[$numero] = fgets($resultats);
 if ($resultat[$numero] == NULL) // on remplace les lignes vides du fich txt par 0
 {
 $resultat[$numero] = 0;
 }
 $numero ++;
 }

 $total_votes = 0; // calcul du total des votes
 foreach($resultat as $nb_resultat) $total_votes += $nb_resultat;
 if ($total_votes == 0) // éviter la division par 0
 {
 $total_votes = 1;
 }
 $numero = 1;
 while ($numero <= $choix) // transformation du nombre de vote en pourcentages
 {
 $pourcentage[$numero] = $resultat[$numero] / $total_votes * 100;
 $numero ++;
 }

 $long_max_bloc = 120; // longueur maximale du curseur pour un vote en pixels

 // affichage des barres et du nombre de votes
 $numero = 1;
 echo ('<div class="Style3" align="center">'. $question . '</div><br /><form action=""> ');
 while ($numero <= $choix)
 {
 echo ('<div class="choix"><label><input type="radio" name="vote" value="' . $numero . '" />'. $reponse[$numero] .'</label>
 <br /> <img src="images/sondage_barre.jpg" height="10"width="' . $pourcentage[$numero] / 100 * $long_max_bloc . '"
 alt="'.round($pourcentage[$numero]).'%" />
 <span style="font-size:80%;"><strong>' . $resultat[$numero] . ' votes</strong></span></div>');

 // echo ($pourcentage[$numero] . '%');
 $numero ++;
 }
 echo ('<div align="center"><input type="image" src="images/bouton.jpg" value="envoyer">');
 echo ('</div></form>');
 fclose($resultats);
 ?>


Et le voici placé (vite fait bien fait) dans une page : http://www.icemanf1.com/sondage.php

Merci d'avance pour votre aide ...
Configuration: Windows XP
Firefox 3.0.6

Meilleures réponses pour « Sondage php » dans :
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
[PHP] Notice: Undefined index: VoirSi vous utilisez les tableaux $_POST ou $_GET pour récupérer les variables de vos formulaires ou autres, il se peut que vous tombiez sur cette erreur: Notice: Undefined index 'champs du tableau' in 'chemin du fichier php en cours d'execution' on line...
[PHP] Parse error, unexpected T_STRING, expecting ',' or ';' VoirCette erreur, fréquente, se produit notamment lorsqu'un guillemet est présent dans une chaîne délimitée par ce même type de guillemets, par exemple :
Télécharger PHP Edit VoirPHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de fonctionnalités permettant de développer plus efficacement : Coloration syntaxique Auto-complétion des fonctions Débuggeur...
Télécharger PHP FTP Synchronizer VoirLa mise à jour de site web est aussi complexe que sa conception. Alors il faut utiliser le bon outil avec les bon paramètres et une bonne connaissance de programmation pour mettre à jour un site. PHP FTP Synchronizer est une application vous...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...

1

pyschopathe, le 3 mar 2009 à 23:40:45

Tourne-toi vers les cookies : tu place un cookie au moment du vote et tu n'affiches les résultats que si le cookie est présent.

Répondre à pyschopathe

2

baujerome, le 4 mar 2009 à 22:44:06

Euh merci pour ta réponse, mais je n'y connais strictement rien et je ne sais pas comment faire ... Qqn pourrait m'expliquer ? Merci

Répondre à baujerome

3

pyschopathe, le 4 mar 2009 à 23:55:34

Salut, ce site explique bien mieux que je pourrais le faire comment utiliser le cookies en PHP : http://phpcodeur.net/articles/php/cookies.

Si tu as d'autres questions n'hésite pas.

Répondre à pyschopathe

4

baujerome, le 5 mar 2009 à 19:18:05

Merci ...
je comprends mieux ce qu'est un cookie, mais je ne vois pas comment je pourrai l'utiliser pour effectuer ce que je souhaite ...

Répondre à baujerome

5

 pyschopathe, le 6 mar 2009 à 18:21:37

Relis ma première réponse : le cookie est envoyé au serveur à chaque fois que la page est chargée. Dans ton script, tu vérifies la présence du cookie et tu affiches ce que tu veux en fonction. Voilà ce que ça donnerait en pseudo-code, à toi de l'adapter en PHP :

si le cookie est présent alors
    afficher synthèse des résultats
sinon
    afficher formulaire de vote
finsi

Et une fois que le formulaire de vote a été validé (donc dans le code du script qui reçoit ce formulaire), tu positionne le cookie.

Répondre à pyschopathe