formulaire intelligent ???

Eléphanteau du PHP | 19 Messages

24 oct. 2005, 11:03

Je vous remercie beaucoup, je m'y plonge sur le champ.
Cdlt,

Eléphanteau du PHP | 19 Messages

24 oct. 2005, 11:30

Je comprends le mode d'utilisation de PHP_SELF, mais j'ai peur que cette solution ne soit pas adaptée à ma situation (ou du moins je pense que je n'y arriverai pas)
Je suis vraiment très embêté et désolé de vous déranger.
Si malgré tout j'essaie avec PHP_SELF, il va falloir que je mette des if imbriqués les uns aux autres selon la réponse envoyée afin d'afficher correctement le questionnaire suivant, n'est-ce pas ?
Cdlt,

Edit :
Avant d'aller plus avant, j'aimerais avoir votre avis sur ceci :
<?
if(isset($_POST['reponse']))
	{
	// Si réponse = 2 alors envoi vers question1b, sinon envoi vers question2
	if ($_POST['reponse'] == 2)
		{
		$Destination = $_SERVER['PHP_SELF'] ;
		// formulaire de la question 1b
		}
	else
		{
		$Destination = 'question2.php' ;
		}
	}

/* Si cette page s'ouvre pour la première fois sans que le bouton soumettant le formulaire n'ait 
   été cliqué, alors on affiche le formulaire normalement */
else
	{
	$destination = $_SERVER['PHP_SELF'] ;
	?>
	<form method="post" action="<?php $Destination ; ?>">
	<p> Question <? echo $numero ; ?> : Vous êtes vous installé avant le 1er janvier 2000 ?<br><br>
	<INPUT type=radio name="reponse" value="1"> oui<br><br>
	<INPUT type=radio name="reponse" value="2"> non<br><br>
	<INPUT type="submit" value="Envoyer">

cette solution peut-elle fonctionner ?
Cdlt,[/i][/color]

Eléphanteau du PHP | 19 Messages

02 nov. 2005, 16:25

Bonjour,

Après moultes péripéties, j'ai (enfin) réussi à créer le formulaire.
Merci donc à toutes et tous pour votre aide.
J'ai toutefois un petit souci : je n'arrive pas à vérifier si la personne a coché un bouton radio. J'ai regardé sur divers posts, mais les solutions proposées ne fonctionnent pas pour mon cas ...
Je vous mets le code de questionnaire.php au cas où vous auriez une idée :
<?
	session_start() ;
	$_SESSION['comment'] = 0 ;
	require('fonctions.inc.php'); // chargement des fonctions de pdf : titre, paragraphe, ...
	// Définition des variables du POST
	if (isset($_POST['comptable']))
		{
		$_SESSION['comptable']=$_POST['comptable'] ;
		$_SESSION['adherent']=$_POST['adherent'] ;
		$comptable = $_SESSION['comptable'] ;
		$adherent = $_SESSION['adherent'] ;
		$date=$_SESSION['date'] ;
		$heure=$_SESSION['heure'] ;
		$_SESSION['nom_fichier'] = $comptable."_".$adherent."_".$date."_".$heure ;
		}
	$nom_fichier = './resultat/'.$_SESSION['nom_fichier'] ;
?>
<html>
    <head><link rel="stylesheet" type="text/css" href="style.css">
        <title>Test formulaire PAC : question 1</title>
    </head>
    <body>
<?
if(isset($_POST['reponse']))
	{
	$comptable = $_SESSION['comptable'] ;
	$adherent = $_SESSION['adherent'] ;
	$reponse = $_POST['reponse'] ;
	//affichage comptable & adhérent en haut de chaque page
	if ($reponse < 26) { require ('commun.inc.php') ; }
	else { require ('commun2.inc.php') ; }
	// Si réponse = 1 ou 3 alors question 2 & création du fichier txt comptable-adhérent
	// sinon si réponse = 2 question 1b
	if ($reponse <= 3)
		{
		if ($reponse == 1 || $reponse == 3) // réponse = 1 ou 3 : Question 2
			{
			$fp = fopen($nom_fichier.".txt","w"); //écriture depuis le début du fichier
			fputs($fp, "question01\n"."0$reponse\n"); // on ajoute la réponse à la question précédente
			fclose($fp) ; // on ferme le fichier
			$fp2 = fopen("./resultat/resume.txt","a"); //écriture depuis le début du fichier
			fputs($fp2, "$comptable;$adherent;"); // on ajoute le comptable et l'adhérent
			fputs($fp2, "question01;$reponse;"); // on ajoute la réponse à la question précédente
			fclose($fp2) ; // on ferme le fichier résumé
			?>
			<form method="post" action="<?php $_SERVER['PHP_SELF'] ; ?>">
			<h3 align=center>Question 2 :<br><br></h3>
			<p align=center>Avez-vous réalisé entre le 01/01/2000 et le 15/05/2004 un 
			investissement prévu dans la liste suivante :<br>
			<p align=center><I>Bâtiment d'élevage bovin, cheptel bovin ou ovin, matériel d'irrigation,
			achat quota tabac</I><br><br>
			<INPUT type=radio name="reponse" value="7"><font color="orange"><b> oui</b></font><br>
			<INPUT type=radio name="reponse" value="8"><font color="green"><b> non</b><br></font>
			<INPUT type="submit" value="Envoyer">
			<?
			}
		else // réponse = 2 : question 1b
			{
			// ****** pas d'écriture de la réponse ******
			// formulaire de la question 1b
			?>
			<form method="post" action="<?php $_SERVER['PHP_SELF'] ; ?>">
			<h3 align=center>Question 1 :<br><br></h3>
			<p align=center>Vous êtes vous installé avant le 1er janvier 2000 ?<br><br>
			<INPUT type=radio disabled name="pasgrave" value="0" checked><font color="orange"><b> non</b></font><br>
			<h4 align=center>Partie 2 :</h4>
			<p align=center>Vous êtes-vous installé entre le 01/01/2000 et le 31/12/2002 ?<br><br>
			<INPUT type=radio name="reponse" value="3"><font color="green"><b> oui </font><br>
			<INPUT type=radio name="reponse" value="4"><font color="orange"> non </b></font><br>
			<INPUT type="submit" value="Envoyer">
			<?
			}
		}
	// Si réponse = 4 : question 1c :
	elseif ($reponse == 4)
		{
		// ****** pas d'écriture de la réponse ******
		// formulaire de la question 1c
		?>
		<form method="post" action="<?php $_SERVER['PHP_SELF'] ; ?>">
		<h3 align=center>Question 1 :<br><br></h3>
		<p align=center>Vous êtes vous installé avant le 1er janvier 2000 ?<br><br>
		<INPUT type=radio disabled name="pasgrave" value="0" checked><font color="orange"><b> non </b></font><br>
		<p align=center>Vous êtes vous installé entre le 01/01/2000 et le 31/12/2002 ?<br><br>
		<INPUT type=radio disabled name="pasgrave2" value="0" checked><font color="orange"><b> non </b></font><br>
		<h4 align=center>Partie 3 :</h4>
		<p align=center>Vous êtes-vous installé entre le 01/01/2003 et le 31/08/2005 ?<br><br>
		<INPUT type=radio name="reponse" value="5"><font color="green"><b> oui </font><br>
		<INPUT type=radio name="reponse" value="6"><font color="red"> non </b></font><br>
		<INPUT type="submit" value="Envoyer">
		<?
		}
	
	// Si réponse = 5 ou 6 : question 2
	elseif ($reponse >=5 && $reponse <=6)
		{
		$fp = fopen($nom_fichier.".txt","w"); //écriture depuis le début du fichier
		fputs($fp, "question01\n"."0$reponse\n"); // on ajoute la réponse à la question précédente
		fclose($fp) ; // on ferme le fichier
		$fp2 = fopen("./resultat/resume.txt","a"); //écriture depuis le début du fichier
		fputs($fp2, "question01;$reponse;"); // on ajoute la réponse à la question précédente
		fclose($fp2) ; // on ferme le fichier résumé
		?>
		<form method="post" action="<?php $_SERVER['PHP_SELF'] ; ?>">
		<h3 align=center>Question 2 :<br><br></h3>
		<p align=center>Avez-vous réalisé entre le 01/01/2000 et le 15/05/2004 un 
		investissement prévu dans la liste suivante :<br>
		<p align=center><I>Bâtiment d'élevage bovin, cheptel bovin ou ovin, matériel d'irrigation,
		achat quota tabac</I><br><br>
		<INPUT type=radio name="reponse" value="7"><font color="orange"><b> oui</b></font><br>
		<INPUT type=radio name="reponse" value="8"><font color="green"><b> non</b><br></font>
		<INPUT type="submit" value="Envoyer">
		<?
		}
	// Si réponse = 7 ou 8 : question 3
	elseif ($reponse == 7 || $reponse == 8)
		{
		$fp = fopen($nom_fichier.".txt","a"); //écriture depuis fin du fichier
		fputs($fp, "question02\n"."0$reponse\n"); // on ajoute la réponse à la question précédente
		fclose($fp) ; // on ferme le fichier
		$fp2 = fopen("./resultat/resume.txt","a"); //écriture depuis le début du fichier
		fputs($fp2, "question02;$reponse;"); // on ajoute la réponse à la question précédente
		fclose($fp2) ; // on ferme le fichier résumé
		?>
		<form method="post" action="<?php $_SERVER['PHP_SELF'] ; ?>">
		<h3 align=center>Question 3 :<br><br></h3>
		<p align=center>Avez-vous eu des mouvements de foncier depuis le 01/01/2000 ?<br><br>
		<INPUT type=radio name="reponse" value="9"><font color="red"><b> oui</b></font><br>
		<INPUT type=radio name="reponse" value="15"><font color="green"><b> non</b><font><br>
		<INPUT type="submit" value="Envoyer">
		<?
		}
	// Si réponse = 9 : question 3b
	elseif ($reponse == 9)
		{
		// ****** pas d'écriture de la réponse ******
		// formulaire de la question 3b
		?>
		<form method="post" action="<?php $_SERVER['PHP_SELF'] ; ?>">
		<h3 align=center>Question 3 :<br><br></h3>
		<p align=center>Avez-vous eu des mouvements de foncier depuis le 01/01/2000 ?<br><br>
		<INPUT type=radio disabled name="pasgrave" value="0" checked><font color="red"><b> oui</b></font><br>
		<h4 align=center>Partie 2 :</h4>
		<p align=center>
		<TABLE align=center width=20% border=0>
		<TR align=left>
		<TD bgcolor="red" align=center width=13%><input type="checkbox" name="question03[]" value="prise"></TD>
		<TD width=2%></TD><TD><label>Prise d'un fermage</label></TD>
		</TR>
		<TR align=left>
		<TD bgcolor="red" align=center><input type="checkbox" name="question03[]" value="arret"></TD>
		<TD width=2%></TD><TD><label>Arrêt d'un fermage</label><br></TD>
		</TR>
		<TR align=left>
		<TD bgcolor="red" align=center><input type="checkbox" name="question03[]" value="achat"></TD>
		<TD width=2%></TD><TD><label>Achat foncier</label><br></TD>
		</TR>
		<TR align=left>
		<TD bgcolor="red" align=center><input type="checkbox" name="question03[]" value="vente"></TD>
		<TD width=2%></TD><TD><label>Vente foncier</label><br></TD>
		</TR>
		<TR align=left>
		<TD bgcolor="red" align=center><input type="checkbox" name="question03[]" value="autres"></TD>
		<TD width=2%></TD><TD><label>Autres</label><br></TD>
		</TR>
		<INPUT type="hidden" name="reponse" value="10">
		<TR align=center><TD colspan=3><INPUT type="submit" value="Envoyer"></TD>
		</TABLE>
		<?
		}
	// Si réponse = 10 : calcul des options choisies puis Question 4
	// Si réponse = 15 : Question 4
	elseif ($reponse == 10 || $reponse == 15)
		{
		if ($reponse == 10) // calcul des options choisies
			{
			// récupération de la liste des cases cochées (si elle existe (isset) alors on affecte son contenu a $tab_choix sinon on affecte NULL.
			$tab_choix= isset ($_POST['question03']) ? $_POST['question03'] : NULL;
			// bouclons sur le tableau qui a été transmis et affichons les valeurs sélectionnées
			if (!empty($tab_choix))
				{
				foreach($tab_choix as $cle => $valeur)
					{
					if ($valeur == 'prise') {
						$reponse = 10 ;
						}
					if ($valeur == 'arret')	{
						$reponse = 11 ;
						}
					if ($valeur == 'achat')	{
						$reponse = 12 ;
						}
					if ($valeur == 'vente')	{
						$reponse = 13 ;
						}
					if ($valeur == 'autres') {
						$reponse = 14 ;
						}
					$fp = fopen($nom_fichier.".txt","a"); //écriture depuis fin du fichier
					fputs($fp, "question03\n$reponse\n"); // réponse à la question 3
					$fp2 = fopen("./resultat/resume.txt","a"); //écriture depuis le début du fichier
					fputs($fp2, "question03;$reponse;"); // on ajoute la réponse à la question précédente
					}
				}
			}
		else {
			$fp = fopen($nom_fichier.".txt","a"); //écriture depuis fin du fichier
			fputs($fp, "question03\n$reponse\n"); // réponse à la question 3
			$fp2 = fopen("./resultat/resume.txt","a"); //écriture depuis le début du fichier
			fputs($fp2, "question03;$reponse;"); // on ajoute la réponse à la question précédente
			}
		// Question 4 :
		?>
		<form method="post" action="<?php $_SERVER['PHP_SELF'] ; ?>">
		<h3 align=center>Question 4 :<br><br></h3>
		<p align=center>Avez-vous eu une évolution juridique depuis le 01/01/2000 ?<br><br>
		<INPUT type=radio name="reponse" value="16"><font color="red"><b> oui</b></font><br>
		<INPUT type=radio name="reponse" value="21"><font color="green"><b> non</b></font><br>
		<INPUT type="submit" value="Envoyer">
		<?
		}
	// Si réponse = 16 : question 4b
	elseif ($reponse == 16)
		{
		// ****** pas d'écriture de la réponse ******
		// formulaire de la question 3b
		?>
		<form method="post" action="<?php $_SERVER['PHP_SELF'] ; ?>">
		<h3 align=center>Question 4 :<br><br></h3>
		<p align=center>Avez-vous eu une évolution juridique depuis le 01/01/2000 ?<br><br>
		<INPUT type=radio disabled name="pasgrave" value="0" checked> oui<br>
		<h4 align=center>Partie 2 :</h4><p align=center>
		<TABLE align=center width=30% border=0>
		<TR align=left>
		<TD bgcolor="red" align=center width=10%><input type="checkbox" name="question04[]" value="fusion"></TD>
		<TD width=2%></TD><TD><label>Fusion</label><br></TD>
		<TR align=left>
		<TD bgcolor="red" align=center><input type="checkbox" name="question04[]" value="scission">
		<TD width=2%></TD><TD><label>Scission</label><br></TD>
		<TR align=left>
		<TD bgcolor="red" align=center><input type="checkbox" name="question04[]" value="changement">
		<TD width=2%></TD><TD><label>Changement de forme juridique</label><br></TD>
		<TR align=left>
		<TD bgcolor="red" align=center><input type="checkbox" name="question04[]" value="autres2"></TD>
		<TD width=2%></TD><TD><label>Autres cas</label></TD>
		</TR>
		<TR>
		<TD></TD>
		<TD width=2%></TD><TD><small><I>(création de société avec un tiers, session de parts,
		retraite de Mr. avec continuité de Mme, etc ……. )</I></small></TD>
		</TR>
		<INPUT type="hidden" name="reponse" value="17">
		<TR align=center><TD colspan=3><INPUT type="submit" value="Envoyer"></TD>
		</TABLE>
		<?
		}
	// Si réponse = 17 : calcul des options choisies puis Question 5
	// Si réponse = 21 : Question 5
	elseif ($reponse == 17 || $reponse == 21)
		{
		if ($reponse == 17) // calcul des options choisies
			{
			// récupération de la liste des cases cochées (si elle existe (isset) alors on affecte son contenu a $tab_choix sinon on affecte NULL.
			$tab_choix= isset ($_POST['question04']) ? $_POST['question04'] : NULL;
			// bouclons sur le tableau qui a été transmis et affichons les valeurs sélectionnées
			if (!empty($tab_choix))
				{
				foreach($tab_choix as $cle => $valeur)
					{
					if ($valeur == 'fusion') {
						$reponse = 17 ;
						}
					if ($valeur == 'scission')	{
						$reponse = 18 ;
						}
					if ($valeur == 'changement')	{
						$reponse = 19 ;
						}
					if ($valeur == 'autres2')	{
						$reponse = 20 ;
						}
					$fp = fopen($nom_fichier.".txt","a"); //écriture depuis fin du fichier
					fputs($fp, "question04\n$reponse\n"); // réponse à la question 3
					$fp2 = fopen("./resultat/resume.txt","a"); //écriture depuis le début du fichier
					fputs($fp2, "question04;$reponse;"); // on ajoute la réponse à la question précédente
					}
				}
			}
		else {
			$fp = fopen($nom_fichier.".txt","a"); //écriture depuis fin du fichier
			fputs($fp, "question04\n$reponse\n"); // réponse à la question 3
			$fp2 = fopen("./resultat/resume.txt","a"); //écriture depuis le début du fichier
			fputs($fp2, "question04;$reponse;"); // on ajoute la réponse à la question précédente
			}
		// Question 5 :
		?>
		<form method="post" action="<?php $_SERVER['PHP_SELF'] ; ?>">
		<h3 align=center>Question 5 :<br><br></h3>
		<p align=center>Reprise de terres par héritage et / ou donation ?<br><br>
		<INPUT type=radio name="reponse" value="22"><font color="red"><b> oui</b></font><br>
		<INPUT type=radio name="reponse" value="23"><font color="green"><b> non</b></font><br>
		<INPUT type="submit" value="Envoyer">
		<?
		}
		// Si réponse = 22 ou 23 : Question 6
	elseif ($reponse == 22 || $reponse == 23)
		{
		$fp = fopen($nom_fichier.".txt","a"); //écriture depuis fin du fichier
		fputs($fp, "question05\n$reponse\n"); // réponse à la question 05
		fclose($fp) ; // on ferme le fichier
		$fp2 = fopen("./resultat/resume.txt","a"); //écriture depuis la fin du fichier
		fputs($fp2, "question05;$reponse;"); // on ajoute la réponse à la question précédente
		fclose($fp2) ; // on ferme le fichier résumé
		?>
		<form method="post" action="<?php $_SERVER['PHP_SELF'] ; ?>">
		<h3 align=center>Question 6 :<br><br></h3>
		<p align=center>Avez-vous eu un événement particulier (cf liste suivante)
		sur votre exploitation entre 2000 et 2002 ?<br>
		<menu><I>
			<li>décès de l'exploitant en place entre 2000 et 2002
			<li>incapacité professionnelle de longue durée
			<li>catastrophe naturelle grave
			<li>bâtiment d'élevage détruit
			<li>cheptel victime d'épizootie
		</menu></I>
		<p align=center><INPUT type=radio name="reponse" value="24"><font color="orange"><b> oui</b></font><br>
		<INPUT type=radio name="reponse" value="25"><font color="green"><b> non</b></font><br>
		<INPUT type="submit" value="Envoyer"></p>
		<?
		}
	// Si réponse = 24 ou 25 : Question 7
	elseif ($reponse == 24 || $reponse == 25)
		{
		$fp = fopen($nom_fichier.".txt","a"); //écriture depuis fin du fichier
		fputs($fp, "question06\n$reponse\n"); // réponse à la question 06
		fclose($fp) ; // on ferme le fichier
		$fp2 = fopen("./resultat/resume.txt","a"); //écriture depuis le début du fichier
		fputs($fp2, "question06;$reponse;"); // on ajoute la réponse à la question précédente
		fclose($fp2) ; // on ferme le fichier résumé
		?>
		<form method="post" action="<?php $_SERVER['PHP_SELF'] ; ?>">
		<h3 align=center>Question 7 :<br><br></h3>
		<p align=center>Vous êtes vous engagés dans la période de référence
		(2000/2001/2002) dans les MAE suivantes :<br>
		<menu><I>
			<li>reconversion en prairie de terres arables
			<li>conversion à l'agriculture biologique
		</menu></I>
		<p align=center><INPUT type=radio name="reponse" value="26"><font color="orange"><b> oui</b></font><br>
		<INPUT type=radio name="reponse" value="27"><font color="green"><b> non</b></font><br>
		<INPUT type="submit" value="Envoyer"></p>
		<?
		}
	// Si réponse = 26 ou 27 : Traitement final
	elseif ($reponse == 26 || $reponse == 27)
		{
		$fp = fopen($nom_fichier.".txt","a"); //écriture depuis fin du fichier
		fputs($fp, "question07\n$reponse\n"."comment"); // réponse à la question 07
		fclose($fp) ; // on ferme le fichier
		$fp2 = fopen("./resultat/resume.txt","a"); //écriture depuis le début du fichier
		fputs($fp2, "question07;$reponse;"); // on ajoute la réponse à la question précédente
		fclose($fp2) ; // on ferme le fichier résumé
		?>
		<!-- COMMENTAIRES -->
		<FORM method=post action="traitement.php">
		<TABLE border=1 align=center>
		<TR>
			<TD align=center>Commentaires</TD>
		<TR align=left>
			<TD>
			<TEXTAREA rows="10" cols="50" name="commentaires">
			</TEXTAREA>
			</TD>
		</TR>
		<TR>
			<TD align="center">
			<INPUT type="submit" value="Envoyer">
			</TD>
		</TR>
		</TABLE>
		</FORM>
		<?
		}
	}

/* Si cette page s'ouvre pour la première fois alors on affiche la question 01 */
else
	{
	require ('commun.inc.php') ;
	?>
	<form method="post" action="<?php $_SERVER['PHP_SELF'] ; ?>">
	<h3 align=center>Question 1 :<br><br></h3>
	<p align=center>Vous êtes vous installé avant le 1er janvier 2000 ?<br><br>
	<INPUT type=radio name="reponse" value="1" color="green"><font color="green"><b> oui</b></font><br>
	<INPUT type=radio name="reponse" value="2" color="orange"><font color="orange"><b> non</b></font><br>
	<INPUT type="submit" value="Envoyer">
	<?	
	}
	?>
	</body>
</html> 
Je sais, c'est imbuvable, j'aurais pu faire mieux ... mais je ne suis qu'un newbie :wink:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

02 nov. 2005, 21:43

J'ai toutefois un petit souci : je n'arrive pas à vérifier si la personne a coché un bouton radio.
Bah pas besoin de verifier SI "une" case est coché puisque un groupe de boutons radio doit obligatoirement avoir un des boutons coché par défaut (avec l'attribut CHECKED) :wink:
exemple:
<INPUT type="radio" name="reponse" value="10" CHECKED>
ensuite tu récupère forcément une variable POST :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 19 Messages

03 nov. 2005, 15:25

Bonjour et merci de ta réponse.
Il est vrai que j'avais pensé à l'option checked, mais j'ai peur que des utilisateurs ne fassent pas attention à ce qu'ils ont sélectionné, ou même qu'ils pensent avoir sélectionné une réponse et que la réponse par défaut reste cochée.
C'est pour cela que je souhaitais vérifier si une case était cochée et ne pas mettre de sélection par défaut.
Cdlt,

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

03 nov. 2005, 19:49

oui si tu veut.... mais je te rappel quand meme:
un groupe de boutons radio doit obligatoirement avoir un des boutons coché par défaut

Mais, prennons pour exemple le dernier goupe de boutons de ton code:
<INPUT type=radio name="reponse" value="1" color="green">
<INPUT type=radio name="reponse" value="2" color="orange">
il te suffit de tester :
if(isset($_POST['reponse']) )
 {
// ok, un des boutons du groupe a été coché
}
else
{
 // il n'y a pas eu de clic sur un des boutons du groupe
}
[/php]

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 19 Messages

04 nov. 2005, 09:16

Bonjour,
Merci de ton aide. J'avais pensé à effectuer cette vérification, mais comme je l'utilise au début de mon script afin de savoir quelle question je dois afficher, j'ai dû abandonner cette voie. Je te remercie encore de ton aide.
Cdlt,

Edit : enfin, j'ai fini ... Un grand merci à toutes et tous pour votre aide précieuse.