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

JavaScript Discussion :

[Formulaires] Traitement des données dans une autre page...


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : septembre 2003
    Messages : 142
    Points : 73
    Points
    73
    Par défaut [Formulaires] Traitement des données dans une autre page...
    Bonjour à tous,

    J'ai une page PHP dans laquelle il y a un formulaire. J'aimerais que ce formulaire ouvre une page dans une autre fenêtre et que cette page fasse le traitement des données. Ensuite, une fois le traitement terminé, elle "refresh" la fenêtre parent et se ferme elle-même (ce côté est fait en Javascript...)

    Mon problème est que je dois programmer avec un Doctype strict et que l'attribut "target" n'existe plus. J'ai essayé différentes alternatives, mais toutes sans succès. Les données du formulaire ne sont jamais envoyé dans la nouvelle page créée.

    Est-ce que quelqu'un aurait une suggestion?
    Merci beaucoup.

    Sébastien

  2. #2
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    dans ton formulaire, tu as un attribut "action". c'est l'adresse de ta page de traitement que tu va mettre dedans.

    et dans ta page de traitement, si elle n'affiche rien, tu peux, une fois ton traitement effectué, utiliser la fonction header() de php pour te rediriger sur la bonne page
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : septembre 2003
    Messages : 142
    Points : 73
    Points
    73
    Par défaut Re: [Formulaires] Traitement des données dans une autre page
    Citation Envoyé par sekiryou
    [...]J'aimerais que ce formulaire ouvre une page dans une autre fenêtre[...]
    Normalement, j'utiliserais "target='_blank'" mais ça n'existe plus dans le html 4.01 avec un Doctype Strict. Je dois donc trouver un moyen d'ouvrir une autre fenêtre. Le but d'ouvrir une autre fenêtre est que je veux empêcher de garder les données du formulaire dans la navigation principale de sorte que l'utilisateur puisse faire des "back" et des "next" à volonté sans jamais réenvoyer les données - à moins de recliquer sur le bouton, alors là ça ne sera pas mon problème.

    Merci

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : septembre 2003
    Messages : 142
    Points : 73
    Points
    73
    Par défaut
    J'ai envoyé la même question sur le forum PHP et j'ai trouvé la réponse... Peut-importe, j'ai trouvé exactement ce que je voulais et je vais le partager avec vous !

    Voici le Form:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form id="reponse" action="test1.php" method="post">
    <p>
    Prenom &#58; <input type="text" name="prenom" value="" /><br />
    Nom&#58; <input type="nom" /><br />
    <input type="button" onclick="validation&#40; reponse &#41;;" value="Envoyer" /></p>
    </form>
    Maintenant, voici le Javascript appelé par le Form:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <script language="javascript" type="text/javascript">
    function validation&#40; leForm &#41;
    &#123;
    	/* VALIDATION DES CHAMPS BLA BLA BLA */
     
    	sendForm&#40; leForm &#41;;
    &#125;
     
    function sendForm&#40; leForm &#41;
    &#123;
       window.open&#40;"test1.php", "popup", "height=440,width=640,menubar='no',toolbar='no',location='no',status='no',scrollbars='no'"&#41;;
       leForm.target = "popup";
       leForm.submit&#40;&#41;;
    &#125;
    </script>
    J'ouvre la nouvelle fenêtre. J'exécute le formulaire et je fais le traitement approprié. Bien sûr, je valide les champs en Javascript avant toutes exécutions.

    Maintenant, en détail, la page test1.php. La fonction window.open() ouvre la nouvelle fenêtre avec test1.php à l'intérieur sans Form. La page test1.php vérifie s'il y a les variables en POST. Les variables ne sont pas encore déclarées étant donnée qu'il n'y a pas encore de Form. Donc, la page ne fait rien.

    Ensuite, la fonction leForm.target fait pointé l'exécution du Form vers la nouvelle fenêtre ouverte.

    Finalement, la fonction submit exécute le Form (action="test1.php"). La page se rappelle. Vérifie les données en POST et fait le traitement dont j'ai besoin.

    À la fin du traitement des données dans test1.php, j'exécute le code Javascript suivant pour rediriger le parent et fermer l'enfant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    if &#40; &#40; isset&#40; $_POST&#91;'prenom'&#93; &#41; &#41; && &#40; isset&#40; $_POST&#91;'nom'&#93; &#41; &#41; &#41;
    &#123;
            /* TRAITEMENT DES DONNÉES */
    &#125;
    ?>
    <script language="javascript">
    	window.opener.location = "/index.php";
    	self.close&#40;&#41;;
    </script>
    Je crois vraiment que ce code est complet. La navigation est vraiment séparée du traitement des données.

    Je remercie tout ceux qui se sont donné la peine de lire et surtout de répondre à mon interrogation. Merci.

    Sébastien.

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

Discussions similaires

  1. Transmettre des données dans une même page
    Par Detere dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/04/2008, 12h05
  2. Réponses: 2
    Dernier message: 31/05/2007, 11h01
  3. [PHP-JS] Traitement des données dans une autre page...
    Par sekiryou dans le forum Langage
    Réponses: 5
    Dernier message: 04/03/2006, 09h06
  4. passer des données a une autre page php
    Par questionneuse dans le forum Langage
    Réponses: 10
    Dernier message: 25/01/2006, 00h56
  5. Réponses: 4
    Dernier message: 19/09/2005, 15h59

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