Sondage php (stockage des résultats dans un fichier texte --> sans base de données)

Description

Ce sondage affiche les résultats directement en dessous des possibilités de réponse. Pour ne pas "utiliser un canon pour tuer une mouche" je n'ai pas fait intervenir de base de données mais les résultats sont tout simplement stockés dans un fichier texte. Possibilité de personnaliser le sondage en modifiant les variables en début de fichier (question, réponses, nombre max de votes, ...).

Source / Exemple :


<?
			// INFORMATIONS SUR LE SONDAGE
			$titre = 'sondage'; // = nom du fichier dans lequel est stocké les votes
			$question = 'Comment trouvez-vous ce site ?';
			$reponse[1] = 'Bien';
			$reponse[2] = 'Moyen';
			$reponse[3] = 'Mauvais';
			$reponse[4] = 'Pitoyable';
			$nb_max_votes = 0; // 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="titresondage" 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="sondage_barre.jpg" height="10"width="' . $pourcentage[$numero] / 100 * $long_max_bloc . '"
        alt="'.round($pourcentage[$numero]).'%" /><br />
        <span style="font-size:80%;"><strong>' . $resultat[$numero] . ' votes</strong></span></div>');

//				echo ($pourcentage[$numero] . '%'); 
				$numero ++;
			}
			echo ('<div align="center"><input type="submit" value="envoyer">');
			echo ('</div></form>');
			fclose($resultats);
///== Par Yvan0|_| ==///?>

Conclusion :


--> Penser à créer le fichier texte du même nom que le titre du sondage.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.