Création
d'entreprise
Posez votre question Signaler

Retour d'erreur php [Résolu]

brutalus 11Messages postés 6 septembre 2010Date d'inscription 10 septembre 2010Dernière intervention - Dernière réponse le 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.
Lire la suite 

Retour d'erreur php »

15 réponses
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
?>
varfendell- 6 sept. 2010 à 15:32
Oui, c'est justement le principe, c'est d'une simplicité...effrayante ^^
test le le en local
varfendell- 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.
brutalus- 6 sept. 2010 à 15:41
Merci bien de tes réponses je vais tester sa :).
Ajouter un commentaire
Réponse
+0
moins plus
<?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
?>
brutalus- 6 sept. 2010 à 21:43
et par rapport a mon dernier code envoyé les acollades sont obligatoires au niveau de mon if / else ?
Ajouter un commentaire
Réponse
+0
moins plus
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
varfendell- 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.
Apatik- 7 sept. 2010 à 09:12
Les accolades sont obligatoire pour garantir une meilleur lisibilité au code, tout comme l'indentation et les commentaires =)
brutalus- 7 sept. 2010 à 09:28
ah d'accord c'est comme en C merci bien de vos réponses :)
Ajouter un commentaire
Réponse
+0
moins plus
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)
?>
brutalus- 8 sept. 2010 à 15:57
merci beaucoup de ta réponse je pense que je vais utiliser cette solution la
Ajouter un commentaire
Ce document intitulé « Retour d'erreur php » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?