Sondage php

Résolu/Fermé
baujerome Messages postés 11 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 10 mars 2009 - 3 mars 2009 à 23:13
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 - 6 mars 2009 à 18:21
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 dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
3 mars 2009 à 23:40
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 mardi 28 juin 2005 Statut Membre Dernière intervention 10 mars 2009 5
4 mars 2009 à 22:44
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 dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
4 mars 2009 à 23:55
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 mardi 28 juin 2005 Statut Membre Dernière intervention 10 mars 2009 5
5 mars 2009 à 19:18
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 dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
6 mars 2009 à 18:21
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