IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Créer un sondage


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 199
    Par défaut Créer un sondage
    Bonjour à tous.
    Voilà, sur mon site, je voudrai créer un sondage tout simple.
    J'ai vu ce modèle sur ce site : http://www.lephoceen.fr/
    Il est simple et j'aime bien.
    Son code san sa page index est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <div class="sondage">
     
    								<table width="323" cellpadding="1" cellspacing="0">
    									    <tr>
     
    									    <td>
    									    <center>
    									    <img src="/images/structure/sondage_titre.jpg" width="323" height="17" border="0">
    									    <table width="100%" border=0 bgcolor="#9999FF" cellpadding="0" cellspacing="1">
    									    <tr>
    									    <td>
    									        <table width="100%" border=0  bgcolor="#CFDFEE" cellpadding="2" cellspacing="2">
    									            <tr>
    				                                    <td align="left">
     
    									                <form method="post" action="">
    														<font face="Verdana, Arial, Helvetica, sans-serif" color="#000000" size="1"><b>Quel est votre favori pour la victoire finale à l'Euro ?</b></font><br><input type="radio" name="option_id" value="1">
    														<font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#000000">L'Allemagne</font><br><input type="radio" name="option_id" value="2">
    														<font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#000000">La Turquie</font><br><input type="radio" name="option_id" value="3">
    														<font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#000000">La Russie</font><br><input type="radio" name="option_id" value="4">
    														<font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#000000">L'Espagne</font><br><br><center>
    																<input type="hidden" name="action" value="vote">
    																<input type="hidden" name="poll_ident" value="447">
    																<input type="submit" value="Vote" class="input">          </td>
     
    													</tr>
    											</table>
    										</td>
    										</tr>
    									    </table>
    										</td>
    										</tr>
    								</table>
    							</div>

    Et son CSS est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    .sondage {	
     float: left ;
     margin-top : 14px;
     width: 323px;	
     padding-left : 8px ;
    }
    Cependant, je ne trouve pas à quel fichier fait-il référence pour le calcul ?
    J'ai essayé d'analyser le code source de la page, mais je vois pas à quel fichier PHP, ou autre fait il référence.
    Merci à vous.

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Par défaut
    c'est effectivement surement traité en php, qui est un langage serveur, tu ne peut donc pas voir le code source.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 199
    Par défaut
    Bon ben temps pis alors.
    Merci quand même.
    ++

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 983
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 983
    Par défaut
    Tu peux gérer ça avec du php et un simple fichier texte.

    Explication dans les grandes lignes :

    tu creer un fichier sondage.txt et tu places des 0 séparés par des points virgules ou un autre caractère non numérique .Tu met autant de 0 que tu as d'option dans ton sondage (ex : Oui, Non, Je ne sais pas tu ecrit 0;0;0)

    tu fais ton formulaire en HTML tout à fait normalement en faisant pointer l'attribut action de celui-ci sur le nom de ta page (ou une autre ça n'en sera que plus simple à gérer) et tu donne bien le meme nom à tout tes boutons radio en leur affectant une valeur differente dans le value (0 à n par exemple). Sur le bouton submit tu n'oublie pas le nom.

    Dans la page pointée par l'attribut action de ton formaire, tu test le isset($_POST["Nom du submit"]).

    Ensuite tu récupère les valeurs placés dans ton fichier avec la fonction implode en reprenant ton caractère de séparation bien entendu et tu le place dans un array

    Tu récupère la réponse de l'internaute et tu l'ajoute au résultat correspondant dans ton tableau (ici à 0, donc tu aura 1 pour la réponse Oui et 0 pour les autre par exemple) .

    Après tu efface le contenu du fichier et tu y place les nouvelle donnée avec explode et toujours le même caractère de séparation.

    Pour afficher le résultat tu relit les données de ton fichier et tu les affiches de la même façon que dans l'exemple que tu as mis.

    j'espère avoir été assez précis.
    Sinon je repasserai avec du code

  5. #5
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 983
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 983
    Par défaut
    Voici, 2 script que j'ai écrit pour l'un de mes sites. Il n'y a que deux réponses possibles mais tu peux l'adapter comme tu veux.

    Tout d'abord il te faut :
    - 1 ficher pour stocker les résultats (sondage.txt) où il est écrit "1,1" (sans les guillemets) (pas à zéro, sinon tu aura une division par 0 au deuxième script)
    - fichier contenant le formulaire et la gestion du vote (sondage.php), j'y ai rajouté un cookie au début pour éviter que quelqu'un vote fois
    - fichier pour afficher les résultat.

    Tu auras un résultat très sobre car il te manque ma feuille de style CSS dont je garde jalousement le secret ! Mais déjà tu auras un résultat et ce sera à toi de paufiner.

    contenu du fichier sondage.txt
    contenu de sondage.php
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <?php
    	// Un cookie pour savoir si l'internaute a déjà voté
    	if (isset($_POST["envoi"])) {
    		setcookie("vote","oui");
    	}
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/dTD/html1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head><title>Sondage</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    </head>
    <body>
    <h1>Sondage</h1>
    <p>Trouver vous ce site utile ?</p>
    <form action="sondage.php" method="post">
    <input type="radio" name="reponse" value="0" checked="checked"/>Oui<br/>
    <input type="radio" name="reponse" value="1"/>Non<br/>
    <?php
    	// C'est vide si l'internaute n'a pas voté.
    	if (empty($_POST["envoi"]) && empty($vote) && empty($_POST["reponse"])){
    		echo "<input type='submit' name='envoi' value='Voter'/>";
    	}
    	else {
    		echo "Merci pour votre vote.";
    		if (isset($_POST["envoi"]) && isset($_POST["reponse"]) && empty($vote)){
    			$rep=$_POST["reponse"];
    			$fichier="sondage.txt";
    			// Ouverture en mode lecture-écriture
    			$pointeur=fopen($fichier,"r+");
    			$sondage=fread($pointeur,filesize($fichier));
    			$sondage=explode(",",$sondage);
    			// réponse contient 0 ou 1
    			$sondage[$rep]++;
    			//reconstruction de la chaîne
    			$sondage=$sondage[0].",".$sondage[1];
    			rewind($pointeur);
    			fputs($pointeur,$sondage);
    			fclose($pointeur);
    		}
    	}
    ?>
    </form>
    <a href="exploitation.php">Voir les résultats</a>
    </body>
    </html>

    contenu de exploitation.php
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/dTD/html1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head><title>Sondage</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    </head>
    <body>
    <h1>Résultat du sondage</h1>
    <?php
    	$fichier="sondage.txt";
    	//Lecture seule
    	$pointeur=fopen($fichier,"r");
    	$sondage=fread($pointeur,filesize($fichier));
    	fclose($pointeur);
    	$sondage=explode(",",$sondage);
    	//total des votes
    	$total=$sondage[0]+$sondage[1];
    	//longueur max de la barre du "graphique"
    	$longueur=400;
    	//partie OUI
    	$oui=$sondage[0]*$longueur/$total;
    	$non=$sondage[1]*$longueur/$total;
    	// Nous allons nous servir d'un tableau pour afficher les barres du "graphique"
    	// Il faut donc arrondir le résultat pour l'attribut width
    	$oui=round($oui);
    	$non=round($non);
    ?>
    	<!-- bordure à zéro et un TD pour espacer sinon c'est pas beau //-->
    	<table border="0"><tr>
    		<!-- Il faut un espace pour que la longueur s'adapte et qu'on voie le résultat //-->
    		<td>Oui&nbsp;</td><td>&nbsp;</td><td width="<?php echo $oui; ?>" bgcolor="red">&nbsp;</td>
    	</table>
    	<table border="0"><tr>
    		<td>Non</td><td>&nbsp;</td><td width="<?php echo $non; ?>" bgcolor="blue">&nbsp;</td>
    	</table>
    </body>
    </html>

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 199
    Par défaut
    Salut popo !
    Merci déjà de nous faire partager ton code.
    Par contre j'ai tout de même du mal mettre en place, car :
    1- J'ai fait exactement ce que tu m'as dis, à savoir j'ai créé 3 fichiers ( sondage.php - exploitation.php - sondage.txt )
    Mais ce que je ne comprends pas c'est que ce sont des fichiers c'est à dire des fichiers à part et non sur une page index ou une page HTML tout court.
    Car quand je clic sur le fichier sondage.php, y a rien qui se passe, j'ai une page blanche qui apparait et qui me demande avec quel programme ouvrir ce fichier. Chose que je trouve normal puisque le sondage ne se trouve pas dans un fichier HTML, donc ce fichier PHP ne s'ouvre avec aucun navigateur.

    2- Ma question c'est comment appliquer ce sondage dans une page HTML ?

    3- Est ce que le résultat de ce sondage s'affiche dans la même page ou il va ouvrir une autre page ? Pour l'instant comme je n'arrive pas à le mettre en place dans une page HTML, je ne sais pas vraiment ?

    4- Peux tu nous montrer ton site pour voir ce que çà peut donner. ( Sinon par MP ) mais bien sûr si çà ne te dérange pas.

    En tout cas c'est sympa à toi.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Par défaut
    Citation Envoyé par popo Voir le message
    Voici, 2 script que j'ai écrit pour l'un de mes sites. Il n'y a que deux réponses possibles mais tu peux l'adapter comme tu veux.

    Tout d'abord il te faut :
    - 1 ficher pour stocker les résultats (sondage.txt) où il est écrit "1,1" (sans les guillemets) (pas à zéro, sinon tu aura une division par 0 au deuxième script)
    - fichier contenant le formulaire et la gestion du vote (sondage.php), j'y ai rajouté un cookie au début pour éviter que quelqu'un vote fois
    - fichier pour afficher les résultat.

    Tu auras un résultat très sobre car il te manque ma feuille de style CSS dont je garde jalousement le secret ! Mais déjà tu auras un résultat et ce sera à toi de paufiner.

    contenu du fichier sondage.txt
    contenu de sondage.php
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <?php
    	// Un cookie pour savoir si l'internaute a déjà voté
    	if (isset($_POST["envoi"])) {
    		setcookie("vote","oui");
    	}
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/dTD/html1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head><title>Sondage</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    </head>
    <body>
    <h1>Sondage</h1>
    <p>Trouver vous ce site utile ?</p>
    <form action="sondage.php" method="post">
    <input type="radio" name="reponse" value="0" checked="checked"/>Oui<br/>
    <input type="radio" name="reponse" value="1"/>Non<br/>
    <?php
    	// C'est vide si l'internaute n'a pas voté.
    	if (empty($_POST["envoi"]) && empty($vote) && empty($_POST["reponse"])){
    		echo "<input type='submit' name='envoi' value='Voter'/>";
    	}
    	else {
    		echo "Merci pour votre vote.";
    		if (isset($_POST["envoi"]) && isset($_POST["reponse"]) && empty($vote)){
    			$rep=$_POST["reponse"];
    			$fichier="sondage.txt";
    			// Ouverture en mode lecture-écriture
    			$pointeur=fopen($fichier,"r+");
    			$sondage=fread($pointeur,filesize($fichier));
    			$sondage=explode(",",$sondage);
    			// réponse contient 0 ou 1
    			$sondage[$rep]++;
    			//reconstruction de la chaîne
    			$sondage=$sondage[0].",".$sondage[1];
    			rewind($pointeur);
    			fputs($pointeur,$sondage);
    			fclose($pointeur);
    		}
    	}
    ?>
    </form>
    <a href="exploitation.php">Voir les résultats</a>
    </body>
    </html>

    contenu de exploitation.php
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/dTD/html1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head><title>Sondage</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    </head>
    <body>
    <h1>Résultat du sondage</h1>
    <?php
    	$fichier="sondage.txt";
    	//Lecture seule
    	$pointeur=fopen($fichier,"r");
    	$sondage=fread($pointeur,filesize($fichier));
    	fclose($pointeur);
    	$sondage=explode(",",$sondage);
    	//total des votes
    	$total=$sondage[0]+$sondage[1];
    	//longueur max de la barre du "graphique"
    	$longueur=400;
    	//partie OUI
    	$oui=$sondage[0]*$longueur/$total;
    	$non=$sondage[1]*$longueur/$total;
    	// Nous allons nous servir d'un tableau pour afficher les barres du "graphique"
    	// Il faut donc arrondir le résultat pour l'attribut width
    	$oui=round($oui);
    	$non=round($non);
    ?>
    	<!-- bordure à zéro et un TD pour espacer sinon c'est pas beau //-->
    	<table border="0"><tr>
    		<!-- Il faut un espace pour que la longueur s'adapte et qu'on voie le résultat //-->
    		<td>Oui&nbsp;</td><td>&nbsp;</td><td width="<?php echo $oui; ?>" bgcolor="red">&nbsp;</td>
    	</table>
    	<table border="0"><tr>
    		<td>Non</td><td>&nbsp;</td><td width="<?php echo $non; ?>" bgcolor="blue">&nbsp;</td>
    	</table>
    </body>
    </html>
    je déterre se post que je trouve super intéressant et qui réponds à ce que je cherche depuis un moment. Par contre j'aimerais rajouter le nombre de votant ou le pourcentage, pouvez-vous m'indiquez se que l'ont doit rajouter.
    Encore merci à popo pour le partage.

Discussions similaires

  1. Créer un sondage
    Par FaridM dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 10/06/2014, 11h15
  2. Créer un sondage en JSF
    Par Gyles92 dans le forum JSF
    Réponses: 2
    Dernier message: 24/01/2010, 17h55
  3. Créer un sondage avec PHP à l'aide de fichiers texte
    Par souminet dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 10
    Dernier message: 02/11/2009, 09h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo