Formulaire, problème Dates/Envoyer

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Formulaire, problème Dates/Envoyer

Re: Formulaire, problème Dates/Envoyer

par stylz882 » 04 févr. 2012, 15:37

par exemple : si l'année existe ET si le mois existe ET si le jour existe ET les autres condition a remplir avant que le formulaire soit valide action = resultat.php
sinon action = '';

ceci est réalisable avec la fonction isset et la variable $_POST :)

Merci !! :)

Re: Formulaire, problème Dates/Envoyer

par moogli » 03 févr. 2012, 12:29

salut,

je te conseil de regarder le tuto : "alimenter des liste déroulantes avec ajax" histoire de simplifier ton systeme.

sinon il te faut une condition pour changer l'attribut action du formulaire

par exemple : si l'année existe ET si le mois existe ET si le jour existe ET les autres condition a remplir avant que le formulaire soit valide action = resultat.php
sinon action = '';

ceci est réalisable avec la fonction isset et la variable $_POST :)


@+

Formulaire, problème Dates/Envoyer

par stylz882 » 03 févr. 2012, 10:54

Bonjour à tous.

J'ai fais un formulaire (Date : Année - Mois - Jours ( Une liste déroulante pour chaque ), le Nom ( Liste déroulante, appel à la DB ) et un Commentaire en textarea puis un bouton Envoyer.

J'ai trois pages, une fonction.php, ma page "index" Demande RDV.php et la page resultat.php

Mon problème :

Affichage de la page : Année : Mois : L'utilisateur choisit l'année qu'il veut pour sa demande de RDV, par exemple "2012". La page se recharge et garde en sélection l'option choisie. Il choisit ensuite le mois, par exemple "2" (Février). Les jours s'affichent et sont calculés par rapport aux mois et à l'année. Donc pour 2012, 29 jours en Février.

Mais, je bloque au niveau du bouton Envoyer... :roll: Car pour les dates j'utilise le code " <form name="form1" method="post" action=""> " Donc, pour le bouton envoyer reste sur cette page, et je n'arrive donc pas à ce qu'il me mène à la page resultat.php. J'ai fais plusieurs test, mais je donne ma langue au chat...

Voici la partie du code pour les dates (Si ça peut aider quelqu'un, entièrement PHP.) :

				<?php
								  //recup valeur postée ou init à vide
							$annee=isset($_POST['annee'])?  $_POST['annee'] : "";
							$mois=isset($_POST['mois'])?  $_POST['mois'] : "";

							if(isset($_POST['envoyer']))
							{
									//le formulaire complet a été posté (bouton envoyer cliqué)
									//recup des valeurs
								$jour=$_POST['jour'];
								$mois=$_POST['mois'];
								$annee=$_POST['annee'];
									//on peut faire le traitement du formulaire
									//exemple
								 //echo 'Vous avez choisi le : '.$jour.'-'.$mois.'-'.$annee;
							}
					?>
	<body>
		<form name="form1" method="post" action="">
				
		Année:
		<select name="annee" onchange="submit();" >
		
		
					<?php
								//cette premiere ligne d'option est obligatoire si on veut un changement à chaque fois, sinon on ne pourrait pas choisir 2012
								//premiere ligne d'option
							$option1='<option value=""';
							
							if($annee=="") $option1.= " selected";   // Pour garder la selection au réaffichage de la page
							$option1.= '> -- Choisissez --</option>';
							echo $option1;
							
								//lignes suivantes
							for($a=2012;$a<=2020;$a++)
							{
								$option='<option value="'.$a.'"';
								if($annee==$a) $option.= " selected"; // Pour garder la selection au réaffichage de la page
								$option.= '>'.$a.'</option>';
								echo $option;
							}
?>			
						</select>
		
				Mois:
				<select name="mois" onchange="submit();">
		
					<?php
						$option1='<option value=""';
						
						if($mois=="") $option1.= " selected";//ça c'est pour garder la selection au réaffichage de la page
						$option1.= '> -- Choisissez --</option>';
						echo $option1;
						
						for($m=1;$m<=12;$m++)
						{
						$option='<option value="'.$m.'"';
						
						if($mois==$m) $option.= " selected"; //ça c'est pour garder la selection au réaffichage de la page
						$option.= '>'.$m.'</option>';
						
						echo $option;
						}
					?>
					
					
						</select>
						
						
					<?php
									//on ne va afficher les jours que si les deux autres on ete choisis
						if($annee != "" && $mois != "")
						{	
							echo 'Jour:';
							echo '<select name="jour">';
									// premiere ligne
							$option1='<option value=""';
						
							if($jour=="") $option1.= " selected";   // Pour garder la selection au réaffichage de la page
							$option1.= '> -- Choisissez --</option>';
							echo $option1;
						
									//gestion du nombre de jours dans le mois
							$mois_annee = mktime( 0, 0, 0, $mois, 1, $annee ); 
							setlocale('LC_ALL', 'fr_FR');
							$nombreDeJours = intval(date("t",$mois_annee));
						
									//lignes suivantes
							for($j=1;$j<=$nombreDeJours;$j++)
							{
								$option='<option value="'.$j.'"';
								if($jour==$j) $option.= " selected";   //Pour garder la selection au réaffichage de la page
								$option.= '>'.$j.'</option>';
								echo $option;
							}
								echo '</select>';
						}
					?>       

Puis enfin, pour le bouton envoyer je n'ai que :
 <input name="envoyer" type="submit" value="Envoyer" /> 
Que j'ai essayé de mettre un action="resultat.php" dedans, en mettant un autre <form ... , en mettant resultat.php dans le action=""> en haut (vers le code php) mais du coup je choisi l'année, ça m'envoie sur resultat.php.. Enfin, des prises de têtes, je m'embrouille un peu.

Si quelqu'un peut m'éclairer s'il vous plaît :)


Edit: j'ai essayé
		<?php $envoie = '<form action="resultat.php" method="post">'.
                                                                                        '<input type="submit" value="Envoyer" />'.
                                                                                       '</form>'; 
							                              echo $envoie;
					                       ?> 
Mais ça ne donne rien non plus...