Retour d'erreur php

Résolu/Fermé
brutalus Messages postés 16 Date d'inscription lundi 6 septembre 2010 Statut Membre Dernière intervention 10 septembre 2010 - 6 sept. 2010 à 14:29
brutalus Messages postés 16 Date d'inscription lundi 6 septembre 2010 Statut Membre Dernière intervention 10 septembre 2010 - 8 sept. 2010 à 15:57
Bonjour,

Je suis actuellement sur un formulaire assez simple qui consiste a prendre une commande, et j'aimerais que l'utilisateur ne puisse pas mettre pour la date de livraison demandée une date avec la date du jour + 7 jours.

donc j'ai trouver cette ligne de commande :
$dateallowed = date('Y/m/d', strtotime('+7 day'));

mais j'aimerais savoir comment sa marche au niveau du submit, car a l'envoi du formulaire si l'utilisateur a mis une date inférieure a la date autorisée alors j'aimerais retourner un message d'erreur puis revenir a la page précédente.
Comment je peux dire que mon if entre mes balises php interragi sur le submit de la fin de mon formulaire ?

<p>Date souhaitée de livraison (prévoir votre commande une semaine à l'avance) (JJ/MM/AAAA) :</p> <input type="text" />

<input type="submit" value="Valider" />


Merci d'avance.

ps : je débute le php.

5 réponses

varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 701
6 sept. 2010 à 14:33
Bonjour,

Pour cela tu peut utiliser le javascript qui te permet de verifié directement ce que l'utilisateur a entrer dans le formulaire.

Voici un tutoriel tres bien expliqué a ce sujet avec un tres bon exemple, en 1-2h tu sera capable de resoudre ton probleme si tu le lit correctement:

Cours sur les formulaire
exercice corrigé sur le formulaire
0
brutalus Messages postés 16 Date d'inscription lundi 6 septembre 2010 Statut Membre Dernière intervention 10 septembre 2010
6 sept. 2010 à 14:49
En faite je ne m'y connais pas du tout en Javascripite et j'aimerais simplement optimiser mon site tout en restant dans le php.

Faut-il que je stock la date dans une variable puis que dans la code php je mette un truc du genre

<?php
if ( (isset($date)) < ($dateallowed = date('Y/m/d', strtotime('+7 day'))))
//message d'erreur puis retour de page.
else
//faire le submit
?>
0
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 701
6 sept. 2010 à 15:19
Je ne connait pas d'autre methode pour la verification d'un formaulaire que le javascript...que je ne connaissait pas quand j'en avais besoin et en lisant les deux pages que je t'ai donné plus haut, le soir meme j'était capable de le faire.
0
brutalus Messages postés 16 Date d'inscription lundi 6 septembre 2010 Statut Membre Dernière intervention 10 septembre 2010
6 sept. 2010 à 15:28
Merci de ta réponse c'est vrai que c'est assez rapide en visitant tes 2 pages,mon code a l'air bon mais sa m'a l'air trop simple

<form method="post" action="cible.php" onsubmit="return verify(x);">

//mon formulaire
<p>Date souhaitée de livraison (prévoir votre commande une semaine à l'avance) (JJ/MM/AAAA) :</p> <input type="text" name="date"/>

</form>

<?php

function verify(x) {
if( $_POST['date'] > date('Y/m/d', strtotime('+7 day')) )
return true;
else
{
alert('La date de livraison doit être dune semaine au plus tôt.');
return false;
}

?>
0
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 701
6 sept. 2010 à 15:32
Oui, c'est justement le principe, c'est d'une simplicité...effrayante ^^
test le le en local
0
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 701
6 sept. 2010 à 15:34
oui, justement, c'est le principe, c'est d'une facilité effrayante. Test ton code en local pour etre sur du bon fonctionnement.
0
brutalus Messages postés 16 Date d'inscription lundi 6 septembre 2010 Statut Membre Dernière intervention 10 septembre 2010
6 sept. 2010 à 15:41
Merci bien de tes réponses je vais tester sa :).
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
6 sept. 2010 à 16:24
<?php
if ( (isset($date)) < ($dateallowed = date('Y/m/d', strtotime('+7 day'))))
//message d'erreur puis retour de page.
else
//faire le submit

//si tu est arrivé la c'est que le submit s'est déja fait

//il vaut mieux faire ici le traitement de ta commande

//et mets des { } avec tes if else
?>
0
brutalus Messages postés 16 Date d'inscription lundi 6 septembre 2010 Statut Membre Dernière intervention 10 septembre 2010
6 sept. 2010 à 21:43
et par rapport a mon dernier code envoyé les acollades sont obligatoires au niveau de mon if / else ?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
7 sept. 2010 à 08:39
les accolades ne sont pas obligatoires si tu n'as qu'une seule ligne d'instruction a chaque, mais il vaut mieux les mettre systématiquement, pour un meilleur lisibilité du code et si tu veux rajouter une ligne de plus, un echo par exemple tu vas te retrouver coincé, il faudra les rajouter à ce moment la, donc des risques d'erreur
0
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 701
7 sept. 2010 à 09:07
c'est exact, accolade non obligatoire si une ligne de code après, mais perso je les met toujours par principe.
0
Apatik Messages postés 5304 Date d'inscription mercredi 28 janvier 2009 Statut Contributeur Dernière intervention 29 mai 2016 782
7 sept. 2010 à 09:12
Les accolades sont obligatoire pour garantir une meilleur lisibilité au code, tout comme l'indentation et les commentaires =)
0
brutalus Messages postés 16 Date d'inscription lundi 6 septembre 2010 Statut Membre Dernière intervention 10 septembre 2010
7 sept. 2010 à 09:28
ah d'accord c'est comme en C merci bien de vos réponses :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
7 sept. 2010 à 12:09
un exemple de methode pour répondre à ton soucis:

<?php
/*
en procedant ainsi la page s'appelle elle même (action="" )donc le formulaire va se réafficher en cas d'erreur avec les valeurs déja saisies (value="< ?php echo ...)

*/
//init des variables à vide
$msg=""; //message d'erreur eventuel
$affich_form=true; //affichage ou reaffichage du formulaire
//champs du formulaire
$nom="";
$prenom="";
//etc..
$date_livraison_souhaitee="";

//partie traitement des erreurs et du formualire
if(isset($_POST['envoyer_cde'])){
	//le formualire a été posté on recupère les valeurs des champs
	$nom=$_POST['nom'];
	$prenom=$_POST['prenom'];
	//etc..
	$date_livraison_souhaitee=$_POST['date_liv_souh'];
	//la tu fais tes tests
	$dateAllowed = date('Y/m/d', strtotime('+7 day'))
	if($date_livraison_souhaitee < $dateAllowed){
		$msg="La date de livraison doit être 7 jours aprsè la date du jour !";
		$affich_form=true; //reaffichage du formulaire
	}else{
		$affich_form=false; //c'est bon donc on ne réaffichera pas le formulaire
		
		
		//et la tu poursuit le traitement de ta commande
		/// .....
	}
}

if($affich_form){
?>
<form name="form1" method="post" action="">
Nom:<input type="text" name="nom" value="<?php echo $nom; ?>" /><br />
Prenom:<input type="text" name="prenom" value="<?php echo $prenom; ?>" /><br />
Date de livraison souhaitée:<input type="text" name="date_liv_souh" value="<?php echo $date_livraison_souhaitee; ?>" /><br />
<?php
if($msg!=""){echo '<font color="red">Date de livraison non conforme !</font>';}

?>
<br />
<input type="submit" name="envoyer_cde" value="Envoyer le commande" /><br />

</form>
<?php
} //fin du if ($affich_form)
?>
0
brutalus Messages postés 16 Date d'inscription lundi 6 septembre 2010 Statut Membre Dernière intervention 10 septembre 2010
8 sept. 2010 à 15:57
merci beaucoup de ta réponse je pense que je vais utiliser cette solution la
0