Comment faire une gestion avancée d'erreurs de saisies - PHP - Programmation
Marsh Posté le 13-04-2006 à 10:21:51
si tu tiens à passer par deux pages séparées, tu as le choix entre revenir en arriere avec un header, ou un formulaire auto-envoyé via javascript
mais le plus simple pour ce que tu veux faire c'est de rester sur la meme page, et de n'en changer que lorsque tu formulaire est ok
un schéma du genre :
page1.php : formulaire
page1.php : traiter le formulaire, controle et enregistrement bdd si ok
page2.php : tu arrives dessus quand tout est ok
Marsh Posté le 13-04-2006 à 10:31:07
Merci de ta réponse.
Comment contrôler les valeurs que l'on est en train de saisir par javascript; c'est un truc que j'ai cherché sur les forums, mais j'ai pas trouvé grand chose.
Sinon, tu sais comment on fait des formulaires "autosubmit" ou qui se valident tout seuls au bout de quelques secondes?
Marsh Posté le 13-04-2006 à 10:33:35
Citation : Comment contrôler les valeurs que l'on est en train de saisir par javascript |
Quel genre de contrôle tu veux faire?
Marsh Posté le 13-04-2006 à 10:39:21
Ben si il y a des champs vides quand on valide la saisie un ptit javascript qui affiche une ptite fenêtre et dise "C'est pas bien, tel ou tel champ n'est pas rempli".
Marsh Posté le 13-04-2006 à 10:50:28
Je suis d'accord avec misterpinguin. Il est préférable de rester dans la même page tant qu'elle n'est pas bonne ou abandonnée.
Mon algorithme :
if (isset($_POST['Bouton_OK']) { |
Marsh Posté le 13-04-2006 à 10:59:11
Avant l'envoi du formulaire au serveur, on peut faire quelques controles élementaires (champs non vides, bonne taille, etc) :
<html> |
Marsh Posté le 13-04-2006 à 11:06:28
Merci de vos réponses.
Une dernière question quand même: Vous savez comment poster des valeurs à un autre formulaire sans submit?
Je vais en faire un nouveau sujet je pense parce que la question n'a plus rien à voir, mais si vous savez, c'est cool.
En fait je voudrais poster des valeurs d'un formulaire à un autre sans bouton, automatiquement.
Marsh Posté le 13-04-2006 à 11:07:28
PedroBD a écrit : Bonjour, |
Le formulaire et la validation sont dans la meme page.
Si les variables POST n'existent pas, tu affiches le formulaire.
Si les variables POST existent, tu les controles une à une, en conservant le contenu et les erreurs reperées.
S'il n'y a pas d'erreur, tu traites le formulaire.
S'il y a des erreurs, tu affiches les erreurs et le formulaire avec les champs preé-renseigné du contenu saisi precedement.
Marsh Posté le 13-04-2006 à 11:17:55
PedroBD a écrit : Merci de vos réponses. |
tu ne peux pas envoyer un formulaire sans submit, qu'il soit déclenché par un bouton submit ou un en javascript
en php tu peux avec la fonction header() créer une requete post, mais c'est plus compliqué et sans intéret dans ton cas
Marsh Posté le 13-04-2006 à 16:08:12
Merci de ta réponse. La solution formulaire.submit() en javascript (qui m'a été données dans le sujet que j'ai posté après) marche très bien.
Le seul pb c'est qu'on est pas redirigé vers la page juste après le submit, le php s'execute d'abord sur toute la page. Donc ça peut poser des pb. Mais je pense qu'avec un exit; juste après le javascript ça doit être bon!
Marsh Posté le 13-04-2006 à 16:43:05
Puis, il ne faut pas compter sur le javascript pour faire des controles. Pense à la personne qui le desactive et c'est fini.
Marsh Posté le 13-04-2006 à 17:38:47
Ouais mais à ce moment là, y a plein de trucs qu'on peut plus faire. Rien que cliquer sur un bouton depuis IE pour être redirigé sur une autre page devient compliqué! A part en faisant un <FORM> bien sûr...
Marsh Posté le 13-04-2006 à 17:40:42
Bah oui, mais tu cherches a faire un site utilisable par tout le monde, ou bidouiller? Pourquoi vouloir mettre des boutons si ce n'est que pour rediriger, un lien suffit
Marsh Posté le 13-04-2006 à 17:58:08
C'est un site pour une entreprise, donc je pense qu'utiliser le javascript c'est quand même plus confortable.
Marsh Posté le 13-04-2006 à 18:54:27
PedroBD a écrit : C'est un site pour une entreprise, donc je pense qu'utiliser le javascript c'est quand même plus confortable. |
Oui mais on peut shunter tes contrôles javascript
Il suffit de :
1) afficher le source de ton formulaire et l'enregistrer chez-soi
2) modifier sa copie pour que les liens et/ou submit partent bien chez-toi mais en enlevant la partie "contrôle javascript"
Moi, mes formulaires sont toujours en php et pointent toujours vers $_SERVEUR["PHP_SELF"].
Mais quand la page est rappelée, les champs remplis au coup d'avant et qu'elle récupère lors de son rechargement passent par toute une série de vérification avant d'être validés ou refusés. Et comme la page finit par le formulaire, tant que c'est pas bon l'internaute revient toujours au formulaire ...
Marsh Posté le 13-04-2006 à 19:31:38
PedroBD a écrit : C'est un site pour une entreprise, donc je pense qu'utiliser le javascript c'est quand même plus confortable. |
Et la methode que je t'ai donné ne te convient pas. Pourtant elle ne necessite pas de se faire chier avec des redirection tordue en javascript. Vu que c'est pour une entreprise, autant que ce soit propre.
Marsh Posté le 13-04-2006 à 10:12:43
Bonjour,
J'ai un formulaire de saisie qui contient plusieurs champs et listes déroulantes. Quand je clique sur submit, j'appelle une seconde page qui insère les données dans la base. Normal jusque là.
Dans le cas d'une erreur de saisie (ex: si un des champs existe déjà dans la base ou est vide) je voudrais à la fois afficher un message d'erreur dans le formulaire de saisie et réafficher les champs et valeurs des listes déroulantes déjà saisis (ou selectionnés).
La solution qui me parait la plus évidente:
Dans la page d'insertion, créer un petit formulaire sans submit qui renvoie les valeurs entrées (ou sélectionnées) depuis la page d'insertion vers la page de saisie et qui transmette aussi un message d'erreur style "Au moins un des champs n'est pas rempli".
Si tout ça vous parait pas trop clair, en gros j'aurais voulu faire une sorte de:
$erreur="Au moins un champ n'est pas rempli".$_POST['champ1'].$_POST['champ2']....
header("Location:Formulaire_saisie.php?message=".$erreur);
Cette solution ne me permet pas de récupérer séparemment les variable postées et d'ailleurs je sais même pas si elle marche. C'est pour ça que j'ai pensé à un formulaire sans submit, mais je sais pas faire là...
Une idée, quelqu'un?
Merci.