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 :

Soumission d'un formulaire et redirection


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Points : 97
    Points
    97
    Par défaut Soumission d'un formulaire et redirection
    Je créée ce topic en conséquence d'un topic créée ce matin, mais qui traite d'un sujet différent et qui m'a amené à me poser d'autres questions (http://www.developpez.net/forums/d86...equete-lautre/)

    J'aimerai savoir quelles sont les possibilités de redirection en PHP.
    Supposons que j'ai une page, liste.php, qui affiche une liste d'item.
    Un lien "Créer un nouvel item" me renvoit vers create.php.

    create.php contient un formulaire. Au submit, je performe (dans create.php), la validation business: donc, mon formulaire sera qqch comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form action="create.php" ... >
    ...
    </form>
    Une fois le formulaire soumis et validé (tjs dans create.php), quelles solutions j'ai pour rediriger vers liste.php?

    Voilà ce à quoi je pense:
    - Ma méthode de validation fait un header ('location = liste.php')
    - Je mets un lien de retour <a href="liste.php">Retour</a>


    Y a-t-il des choses plus... "propres"? (Moi çà me paraît pas propre que çà ne puisse pas être fait automatiquement.
    Serait-il envisageable de faire la validation du formulaire dans liste.php?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form action="liste.php" ... >
    ...
    </form>
    Mais si le formulaire a un problème... :-/, je devrai à nouveau retourner vers create.php et reposter les paramètres...

    Nicolas.

  2. #2
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    Y a-t-il des choses plus... "propres"? (Moi çà me paraît pas propre que çà ne puisse pas être fait automatiquement.
    Je reprends un peu ton discours:
    Qd tu a une page avec un formulaire qui se submit sur lui même, c comme si tu avais deux pages, car dans tous les cas le submit te fait repasser par le serveur.
    Tu peux utiliser le header pour la redirection automatique tant que tu n'envoies pas de code html à l'affichage avant.

    Ton code sur une page serait du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if( isset( $_POST['Champ du form quelconque'] ) ) {
      // traitement de tes données, reqûêtes sql etc ...
      // Mais pas de code html
      // header location ou tu veux
    } else {
      // Code html avec le form pour la saisie des données
      // submit method 'POST' sur cette même page
    }

  3. #3
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Points : 97
    Points
    97
    Par défaut
    C'est exactement la solution 'pas propre' à laquelle je pensais.
    Y a-t-il plus propre?

    (En même temps, peut-être que y a pas d'autre solution!!)

  4. #4
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    ouais je comprends pas le côté pas propre que tu dis ???

    Cette manière redirige automatiquement ou tu veux après le submit du form !

    Et puis si tu veux du propre, il faudrait un minimum utiliser un modéle type MVC mais dans ce cas les traitements ne sont plus sur une page ?

    Bref j'ai pas compris le sens que tu désires ...

  5. #5
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Points : 97
    Points
    97
    Par défaut
    Ben justement, c'est parce qu'en fait je voudrais faire du MVC... Donc le coup du header... je sais pas.

    Ou alors mon formulaire soumet vers un controlleur, disons controller.php.

    Ce controller fait les check business sur les données du POST.

    Si le check est ok, utilise un model.php pour créer en base. Et fait un header() vers la page de liste où apparaîtra l'item nouvellement créée.
    Si le check est pas ok, comment on fait pour remette vers le formulaire d'où on venait?

    Enfin... çà doit être des trucs de base mais j'ai pas trouvé de tutoriel "simple" pour faire du MVC "simple" via PHP.

    Et ma formation de Java me bloque un peu, j'i pris des habitudes qui ne s'appliquent pas tjs à PHP.

  6. #6
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Je viens moi même du Java, et j'ai commencé un projet en Php depuis 5 mois, ne connaissant pas du tout le Php (d'ailleurs au début j'avais franchement du mal avec les types, les exceptions et autres trucs plus rigides).

    Pour en revenir sur MVC, de ce côté là j'ai a peu près fait la même structure qu'avec du Java. En effet tu passes par une page controler qui va décortiquer les $_POST ou les $_GET et faire des redirections ... Ce qui est faisable en Java, se fait en Php de ce côté là

    Pour la question:
    Si le check est pas ok, comment on fait pour remette vers le formulaire d'où on venait?
    tu utilises la variable $_SESSION

    EDIT: Qd je dis venir du JAVA, le projet d'avant, car avant du c#, puis du C++, puis VBa etc ... bref j'arrête pas de changer faut s'adapter et le PHP est qd même un langage facile

  7. #7
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Points : 97
    Points
    97
    Par défaut
    Ok bon je vais t'embêter un peu avec MVC alors!


    Ok pour avoir un controlleur à part.

    Mais j'ai quelques questions
    Supposons que tu as une liste de trucs listeTrucs.php
    Ton controlleur est Controller.php
    Ton modele est Model.php
    Et ton formulaire de création de trucs est dans createTrucs.php.

    Comment fais-tu pour les choses suivantes:
    - création d'un Truc? le formulaire dans createTrucs.php pointe vers Controller.php. Lui-même fait l'insert via Model.php, et ensuite si tout s'est bien passé, header() vers listeTrucs.php. Et si le formilaire est pas validé, comment rediriges tu vers createTrucs.php: header + valeurs prérentrées en session?
    - liste de Trucs? pour afficher tes trucs, tu appelles une méthode de Controller (donc, doit être une classe??) qui te les renvoie? Ou bien tu appelles le Controller et tu lui fais faire un header vers listeTrucs tout en mettant en session la liste de tes Trucs?

    Voilà le genre de questions que je me pose!

    J'ai vu à certains endroits que le Controller.php doit être une classe, dans d'autre que c'est un .php qu'on inclut dans les php de présentation; dans d'autres que tu pointes vers Controller.php (via header et les formuilaires), et que controller redirige ensuite...

    Donc j'ai du mal à me dépatouiller dans tout cela...

  8. #8
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Et si le formilaire est pas validé, comment rediriges tu vers createTrucs.php: header + valeurs prérentrées en session?
    Dis moi si j'ai bien compris ?
    ( L'user tape des données dans le formulaire puis par ex OK, les données tapées sont validées ou non dans le controler et Outch, elles ne sont pas toutes bonnes donc retour vers le formulaire avec les données qui ont été précédement tapées) C'EST Ca le problème ????

    Si c le cas, en Java j'utilisais les beans, pour php, tu peux utiliser en session un tableau ou une classe qui caractérise toutes les données du formulaire puis à l'affichage html du formulaire, tu testes (isset) de cette variable session (objet ou tableau) puis tu initialises à vide ou aux valeurs.
    Attention, il faut serializer les données.

    Est ce plus clair ?

  9. #9
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Points : 97
    Points
    97
    Par défaut
    Oui c'est plus clair... (Désolé pr le tps de réponse j'avais zappé que tu m'avais répondu en fait).

    Que veux tu dire par serialize les données!??

    Et pour le reste, notamment pour çà?
    - liste de Trucs? pour afficher tes trucs, tu appelles une méthode de Controller (donc, doit être une classe??) qui te les renvoie? Ou bien tu appelles le Controller et tu lui fais faire un header vers listeTrucs tout en mettant en session la liste de tes Trucs?

  10. #10
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Salut,

    Oui effectivement, en plus on ne doit pas être en phase jour/nuit Moi je ZZZZZzzzzzz vers 23h00 en semaine

    Pour serialized, en Java, tu implémentes l'interface serializable, de manière à contrôler la persistence du flux de données, en Php, il faut utiliser la fonction serialize et unserialize (l'interface existe peut être mais comme je débute le php ).

    - liste de Trucs? pour afficher tes trucs, tu appelles une méthode de Controller (donc, doit être une classe??) qui te les renvoie? Ou bien tu appelles le Controller et tu lui fais faire un header vers listeTrucs tout en mettant en session la liste de tes Trucs?
    Première solution ... dans la page php, tu call la méthode

  11. #11
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Points : 97
    Points
    97
    Par défaut
    Ok merci!
    J'ai pas compris pourquoi faut sérialiser mais si, je sais ce que c'est ;=)

    Ok pour le reste! De toute façon en MVC la vue peut appeler le modèle directement si c'est en lecture donc y a pas forcément besoin de passer par le contrôleur... même si c'est sûrement plus propre!

    Je vais m'y mettre bientôt, on verra comment j'arrive à partager tout çà de manière propre et fonctionnelle...

    Nicolas

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

Discussions similaires

  1. Erreur de soumission d'un formulaire
    Par sagitarium dans le forum Langage
    Réponses: 1
    Dernier message: 14/05/2006, 12h21
  2. mozilla , soumission d'un formulaire dans un cadre different
    Par japz dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/05/2006, 17h10
  3. [Javascript] Validation soumission d'un formulaire
    Par nico33307 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 14/11/2005, 15h05
  4. Réponses: 2
    Dernier message: 10/11/2005, 20h00
  5. [JSP]Problème de double soumission d'un formulaire
    Par jgfa9 dans le forum Servlets/JSP
    Réponses: 31
    Dernier message: 24/08/2005, 11h54

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