IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Formulaire et gestion des erreurs


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 935
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 935
    Par défaut Formulaire et gestion des erreurs
    Bonjour à tous,

    voilà, j'ai un formulaire dans une page1.html

    qui appel la page2.html après validation. J'utilise la méthode post.

    Mais la page1.html est mal renseignée, comment faire afficher les messages d'erreurs dans la page1.html ?

    En effet, la vérification s'effectue dans la page2.html, donc les messages vont s'afficher dans la page2.html et non dans la page1.html.

    Comment faîtes-vous pour gérer les erreurs dans un tel cas ?

    Merci d'avance pour votre aide.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    A mon sens, il te faudrait creer un troisieme fichier , en .php du style "controleur.php".

    ta page1.html appelle controleur.php en post.
    Dans controleur tu effectues les tests nécessaires pour assurer la validité du formulaire.
    Si c'est ok, tu renvois via la fonction "header" vers page2 sinon tu renvois vers page1 avec un code d'erreur te permettant d'afficher les erreurs en question.

    En plus de celà tu peux réaliser des controles en javascript sur ton formulaire page1.html afin d'améliorer l'ergonomie de ton appli.

  3. #3
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 935
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 935
    Par défaut
    Bonjour Raideman et merci pour la réponse.

    Mais pourquoi alourdir le processus et passer par un troisième fichiers ?

    pourquoi ne pas gérer directement les erreurs dans la page2.html et mettre le header dans cette page ?

    J'évite au maximum d'utiliser le javascript (car il n'est pas activé chez tous les internautes..)

  4. #4
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Pour ma part, le plus simple c'est de rester dans la même page (page1.php).

    En faite, le formulaire (page1.php) pointe sur elle même (donc la recharge), et s'il y a une erreur, et bien on ne fait surtout pas de redirection (header ou autre), on s'arrange de stocker l'erreur ou les divers erreurs au fur et à mesure qu'on les détectent.
    Ceci qui permet par la suite d'afficher en 1er les erreurs, puis de ré-afficher le formulaire avec les données précédemment saisies (POST).

    Ce n'est que lorsqu'il n'y a pas eu d'erreur qu'on fait tout ce qu'il y a à faire avec ces données qu'on vient de recevoir :
    -> Enregistrement dans la Bdd
    -> Création de fichiers
    -> Mettre en mémoire dans la sessions certaines données utiles pour la suite.
    -> etc, etc ...
    Puis au bout on fait une redirection vers l'étape suivante (page2.php).


    En somme, pourquoi faut il que ça soit la page suivante (l'étape suivante) qui doit gérer le problème de la page précédentes (ou celle où on se trouve) ?
    Ca me semble pas logique. Il me semble mieux de ne pas passer l'étape suivante tant que la 1ère n'est pas conforme.


    Pour la gestion pure des erreurs d'un formulaire, utiliser les sessions c'est pas mal.
    Mais c'est juste pour les messages d'erreurs, genre : "Veuillez saisir votre nom.", etc ...
    Mais pas pour stocker les données saisie reçues en POST, j'ai jamais adhéré à ce principe.
    Donc les messages sont dans une session, (une classe MessageStack en parallèle aussi).
    Si la session contient un message, on affiche tous les messages, et la session est détruite tout de suite après.

    Mais cette session/classe ne fait pas que gérer les erreurs, mais tous les messages divers qu'il pourrait avoir, il y a un "type" de message (info, alerte, erreur) qui débouche sur 3 mises en formes différentes.

    C'est ainsi que je procède.
    Maintenant, à chacun sa méthode.

  5. #5
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 935
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 935
    Par défaut
    Bonjour RunCodePhp,

    merci pour ton explication mais il y a une chose qui m'échappe :

    Les valeur du formulaire ( en méthode post) sont envoyés donc à la même page qui contient le formulaire : page1.php

    Alors au moment ou tout est bon( c'est-à-dire s'il n'y a pas d'erreur),

    j'effectue un header vers ma page2.php, mais comment fais-tu pour transférer les données du formulaire ( méthode post) de la page 1 vers la page 2.

    Moi ce que je trouvais pratique dans ma méthode, c'est que lees données sont transférer directement vers la page2.

  6. #6
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    mais comment fais-tu pour transférer les données du formulaire ( méthode post) de la page 1 vers la page 2.

    Moi ce que je trouvais pratique dans ma méthode, c'est que lees données sont transférer directement vers la page2.
    C'est justement ça qui n'est pas pratique, le fait de pointer le formulaire vers une autre page.
    C'est la source même de ton problème, donc ta façon de procéder n'est pas si pratique que ça, elle parait juste plus logique (mais juste en apparence).

    Si tu reste sur la même page, les données en POST sont là, du coup, on peu tout faire, comme les ré-afficher en cas d'erreur (plus de prise de tête à retransmettre)
    Aussi, vu que ces données sont là, autant faire ce qu'il y a à faire de suite.

    Tu admettras qu'à un moment donné, il faudra faire quelque chose avec ces données, non ?
    Donc quelque part, on s'en fiche où ce trouve le code. Autant le mettre là où c'est le plus pratique.

    L'étape 2 est une autre étape, autre problème, autres données à afficher et à gérer, etc, etc, même si elle dépend de l'étape précédente.

    Le truc, c'est de réfléchir qu'est ce qu'on fait avec ces données de l'étape 1 dans le cas où tout est correcte, donc avant de faire la redirection vers l'étape 2.
    Les enregistrer dans la Bdd ?
    Les mettre en session ?
    Voir les 2 ?
    Ca, j'en sais rien, c'est à toi de voir qu'est ce qu'il est le plus pratique.

    Le truc, c'est de faire en sorte que cette étape 2 s'appuie sur un minimum de données dépendante de l'étape 1, comme sur 1 ou 2 identifiants.
    S'il y a des données à afficher dépendantes de ces données, on fait une ou plusieurs requêtes.
    En tout cas, on évite de transmettre toutes les données de l'étape1 vers l'étape2, sinon, ça ne sert à rien, où cette étape 1 est mal faite, ou la relation étape1/étape2 est mal conçue.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 01/01/2013, 22h10
  2. Formulaire, redirections et gestion des erreurs
    Par xnopre dans le forum Langage
    Réponses: 7
    Dernier message: 18/08/2011, 09h58
  3. Gestion des erreurs de formulaire
    Par TempusFugit dans le forum Langage
    Réponses: 4
    Dernier message: 29/10/2009, 16h34
  4. gestion des erreurs (validation de formulaires)
    Par mattyeux dans le forum Ruby on Rails
    Réponses: 6
    Dernier message: 26/11/2007, 08h53
  5. [LG]gestion des erreurs
    Par frontin dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2003, 23h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo