Sondage php

Résolu
baujerome Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -  
pyschopathe Messages postés 1974 Date d'inscription   Statut Membre Dernière intervention   -
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 ...
A voir également:

3 réponses

pyschopathe Messages postés 1974 Date d'inscription   Statut Membre Dernière intervention   135
 
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.
0
baujerome Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   5
 
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
0
pyschopathe Messages postés 1974 Date d'inscription   Statut Membre Dernière intervention   135
 
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.
0
baujerome Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   5
 
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 ...
0
pyschopathe Messages postés 1974 Date d'inscription   Statut Membre Dernière intervention   135
 
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.
0