begin process at 2012 02 12 11:37:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > SONDAGE PHP (STOCKAGE DES RÉSULTATS DANS UN FICHIER TEXTE --> SANS BASE DE DONNÉES)

SONDAGE PHP (STOCKAGE DES RÉSULTATS DANS UN FICHIER TEXTE --> SANS BASE DE DONNÉES)


 Information sur la source

Note :
6 / 10 - par 9 personnes
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Classé sous :sondage, vote, question, réponse Niveau :Débutant Date de création :16/04/2005 Date de mise à jour :28/01/2006 18:51:30 Vu / téléchargé :14 912 / 1 999

Auteur : Yvan0u

Ecrire un message privé
Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • <?
  • // 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|_| ==///?>
<?
			// 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.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

28 janvier 2006 18:51:30 :
01/2006 * ajout d'un nombre maximal de votes optionnel * amélioration du script * suppression de code inutile * fichier .zip disponible contenant un fichier index.php permettant de voir le sondage mis en forme (sobrement) en XHTML + CSS.

 Sources de la même categorie

Source avec Zip TAPI : METTRE EN RELATION DEUX POSTES TELEPHONIQUES par ravery
Source avec Zip CLIENT / SERVEUR : LES SOCKETS par Morphinof
Source avec Zip VALIDATEUR_3WC par lezj
Source avec Zip MYGGL GOOGLE API CLASS FOR BEGINERZ par lezj
CLASSE WIKILOC par aKheNathOn

 Sources en rapport avec celle ci

Source avec Zip PDS-PERTINENCE par bcmfr
Source avec Zip PDS-SONDAGES par bcmfr
Source avec Zip CAPTCHA (ANTI-SPAM) par leviathan516
Source avec Zip CLASS QCM / SONDAGES PHP5 par coucou747
UN SYSTÈME DE SONDAGE POUR VOTRE SITE (A ADAPTER AU VOTRE) par Chiuchu

Commentaires et avis

Commentaire de juki_webmaster le 16/04/2005 19:35:55

Salut,

$choix = 3; // nombre de possibilités de réponses (si modif, penser à changer la calcul du tot des votes) --> ligne 49
$question = 'Comment trouvez-vous ce site ?';
$reponse[1] = 'Bien';
$reponse[2] = 'Moyen';
$reponse[3] = 'Mauvais';

- Sa peut être plus modulable, remplace $choix = 3 par $choix = count($reponse) en le plaçant àprés (ont ce comprend).

- Ensuite tu pourais redonner le tableau 0 de $reponse, et donc retirer 1 à chaque fois que nessesaire (sur les pointeurs de $reponse).

Sinon, sa reste un bon code à utiliser lorsqu'ont ne dispose pas toujour d'une db sql ou qu'ont desire la simplicité et la rapidité.

Commentaire de Anthomicro le 16/04/2005 23:09:02

Salut,

remplace <? par <?php

ensuite le if($variable==NULL) > remplace par if(!isset($variable))

a +

Commentaire de juki_webmaster le 16/04/2005 23:32:51

A oui! j'ai oublier de te posser la question :

Pourqoui ne pas avoir fait une interdiction de revoter ? (cookie+ip stoquer dans un txt).

Commentaire de Yvan0u le 17/04/2005 08:54:28

C'est vrai que j'aurais pu mettre une interdiction de revoter (bien que ça ne soit pas infaillible)... Y a pas de raison bien précise en fait.

Commentaire de nexus8 le 17/04/2005 11:21:48

Pour le valider XHTML,

- Vire les "&nbsp" ou met "&nbsp;"
- Ferme les tags avec />

et c'est parfait ;-)

Commentaire de SabbatoR le 13/05/2005 20:29:28

super!! ca marche vraiment bien!! Mais moi qui suis nul en php, je ne sais pas comment mettre un image de fond .... quelqun pourrait me dire ?

Commentaire de tipexx94 le 17/06/2005 17:42:22

vraiment c'est bien fait c'est clair et sa marche bravo :)

Commentaire de simgui le 20/12/2005 13:21:20

Ce code est très clair....bravo mais chez moi il ne fonctionne pas :(  Warning sur la ligne 41 : Cannot use a scalar value as an array.
Quelqu'un sait il d'ou vient l'erreur ? Merci de me répondre

Commentaire de malalam le 20/12/2005 14:42:02 administrateur CS

Hello,

cela veut dire qu'il manque une vérification ici.
Le script tente d'utiliser une variable scalaire (un entier, une chaîne etc...) comme un tableau. Donc, il faut un is_array () quelquepart.

Commentaire de samurai741 le 31/01/2006 19:31:07

Pourqoui ne pas avoir fait une interdiction de revoter ? (cookie+ip stoquer dans un txt).
merci bcp pour cette question moi aussi je veux savor comment faire pour ke on pe pas revoter ? svp

Commentaire de cikky le 07/04/2006 14:16:43

Salut! super ton script.bravo.j'sui débutant en php et j'aimerais savoir cmt éviter k'on puisse revoté?merci

Commentaire de tutoandco le 16/04/2006 16:56:10

Ttrop bien ton script je confirme il marche tres bien :)

Commentaire de tutoandco le 16/04/2006 17:05:02

en fin de compte le script ne marche pas j avias pas essayer de voter :/

Commentaire de sexy_developpeuse le 11/05/2006 15:37:38

c'est tres bien le script mais on doit pas revoter :(

Commentaire de Yvan0u le 30/05/2006 18:09:34

> en fin de compte le script ne marche pas j avias pas essayer de voter :/

C'est peut-être une question d'autorisations sur le fichier texte. Que dit le message d'erreur (éventuel) ?

Commentaire de flofloflo58 le 12/07/2006 15:40:04

Ce script est très bien ! Bravo.
Mais il faudrait interdire une personne de revoter plusieurs fois sur le même sondage.

Commentaire de gnigaud le 14/11/2007 18:39:53

Le script fonctionne pour moi...

J'essaye de trouver un moyen d'inclure plusieurs fois ce script dans une même page (3 sondages, 3 txt, 3php apellés par l'index). Test visible à  http://gnigaud.free.fr/index_test.php

Le problème est alors que si l'on vote à 1 sondage, le vote est écrit sur l'ensemble des fichiers txt que j'ai mis en place. Problème d'écriture du au valeur des réponses ([1], [2], etc.)a priori.

Selon vous, est-il possible de résoudre ce problème (en différenciant les valeurs des réponses ou en forçant l'écriture vers un txt plutôt qu'un autre? Merci de votre support.

Guillaume.

Commentaire de lassad_haddaji le 02/08/2008 02:44:41

salut,
exelant script, ca marche bien mais une chose qui me plais de savoir comment interdir de revoter,

merci de me repondre parce que m'interesse
a+

Commentaire de codestim le 09/11/2010 09:01:43

bjr Ouaip, script très sympa est accessible si même pas débutant !! BravoYvan0u pour l'idée.

== @SabbatoR image de fond ? ce n'est pas du PHP c'est html et css. Personnaliser les <div>. Tu peux déjà t'appuyer sur leur id"" et class""
== @gnigaud
- reprend le script en remplaçant toutes les variables
par Avariable (exemple : titre devient Atitre ...,)
- refait la même manip (dans un dexuième fichier avec B (exemple : titre devient Btitre ...,)
fusionne les deux.
== @lassad_haddaji crée une variable de session avec le submit, qui masquera le bouton lors de l'affichage du résultat.
En pratique ce sera aussi fiable qu'un test de l'IP qui peut varier, involontairement ou volontairement(si tu as affaire à un mauvais plaisant)
A+ et bon sondage  

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

SONDAGE SUR MySQL [ par NicoWatt ] bonjour à tous !Je fais un petit sondage, i lfaut répondre à la question suivante:Comment (d'après vous) enregistreriez-vous un tableau multidimension une petit sondage [ par paulschnell ] BonjourUne amie m'a demandé de répondre à un sondage.Comme c'est vraiment une très bonne amie, j'aimerai beaucoup que son formulaire obtienne le maxim toujours pas de réponse pour mon question :-( [ par kia2112 ] je viens de creer une animation flash dynamique que je veux modifier son contenue sans retourner &#224; son code source,cela doit etre &#224; travers lister question + réponse dans une meme page [ par medicair ] Bonjour, J'ai deux tables 1 "questions" et 1 "r&#233;ponses", je voudrais lister les r&#233;ponses corespondantes&nbsp;&#224; chaque&nbsp;question, et petite question [ par biloutte33 ] bonjour,j'aimerais savoir un truc:dans certain site internet, il y a une liste de question qui renvoies chacune &#224; sa r&#233;ponse &#224; un endro affichage avant de changer de page [ par marco1981 ] Bonjour a tous, je fais un genre de questionaire en php, j'ais mes questions et mes réponse dans un base de donnée, j'affiche question par question, m Ocaml [ par nicomilville ] Salut,J'ai une petite question qui me trote dans la tête donc je me suis dit pourquoi ne pas la poser ici...Cette question, la voici :A quoi peut serv Prise en compte d'un cookie et rafraichissement fenêtre [ par joel64 ] bonjour,merci à celui ou celle qui me donnera la solution au problème suivant.il s'agit d'un script php de sondage qui affiche la possibilité de vote vote et classement... [ par tombondoff ] Bonjour , je sois un nouveau gars qui d&#233;bute dans le html , php ect...J'avoue que j&#233; beaucoup chercher pour la question suivante au quel je vote et classement... [ par tombondoff ] Bonjour , je suis un nouveau gars qui d&#233;bute dans le html , php ect...J'avoue que j&#233; beaucoup chercher pour la question suivante au quel je


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,054 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales