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