Forum Programmation.web formulaires : get ET post

Posté par  .
Étiquettes : aucune
0
21
oct.
2004
J'ai une question toute bête : est-il possible dans un formulaire HTML d'envoyer des données par les méthodes get et post en même temps ?
Je réalise actuellement un site en PHP et j'aimerais cumuler les avantages du get (pour poser des liens) et du post (les pages pourront être modifiées dans le futur et une grosse quantité de données sera alors envoyée).

je n'ai vu nul part d'article à ce sujet et j'ai peur que la réponse soit non :(

j'ai bien essayé le code suivant mais sans succès :


[form action="mapage.php?var1=val1&var2=val2" method="post"]
...
mes inputs
...
[/form]


(j'ai remplacé les "<" et les ">" par des crochets. comment colle-t-on des balises html dans un post ?)
  • # oui tu peux...

    Posté par  . Évalué à 1.

    est-il possible dans un formulaire HTML d'envoyer des données par les méthodes get et post en même temps ?
    oui
    et sinon:
    comment colle-t-on des balises html dans un post ?)
    &lt;form&gt;
    • [^] # Re: oui tu peux...

      Posté par  . Évalué à 1.

      merci.
      Question subsidiaire : et comment je fais ? (pour le get et post)
      • [^] # Re: oui tu peux...

        Posté par  (site web personnel) . Évalué à 1.

        comme ça

        $variable=$_REQUEST['variable'];
        • [^] # Re: oui tu peux...

          Posté par  . Évalué à 1.

          Je me suis mal exprimé. Au temps pour moi.

          Je voulais dire : comment puis-je faire pour envoyer en html des données en get ET en post en même temps ?
          Pour ce qui est de récupérer des variables en php, pas de problème :)
      • [^] # Re: oui tu peux...

        Posté par  . Évalué à 2.

        Question subsidiaire : et comment je fais ? (pour le get et post)

        Dans ton formulaire Html, tu mets comme action, l'url avec les paramêtres : action="form.php?param1=toto", et comme méthode "post".

        Ajoute à ça les autres entrées (et évite d'utiliser les mêmes noms de variable ;)

        Dans le script Php traitant le résultat, tu récupère via $_GET["param1"] les paramètres passé par l'url (le get), ici "param1", et dans $_POST["param2"] les paramètres venant du formulaire proprement dit.

        Si dans la config Php, la variable register_global est à "on", toutes ces variables sont accessible directement ($param1 et $param2), mais il est fortement recommandé d'aller cherchant explicitement les variables là où elles ont censée être ($_GET[], $_POST[], $_COOKIE[] et $_SERVER[]).
        • [^] # Re: oui tu peux...

          Posté par  (site web personnel) . Évalué à 3.

          Excusez moi, mais je ne vois vraiment pas l'interet de ce genre de manipulations. Pour passer des données statiques (que l'on connait) avant la saisie de l'utiisateur, il est plus vraisemblablement plus compatible d'utiliser la balide "hidden"

          [form name="nom" action="traitement.php" method="POST"]
          [input type="hidden" name="allerAlaPage" value="documentation.php"]
          [input type="text" value="" name="prenom"]
          [/form]

          Et le tour est joué. Mais si il y a une raison technique ou pratique valable, je suis preneur !!!!!
          • [^] # Re: oui tu peux...

            Posté par  . Évalué à 2.

            J'ai d'abord répondu à la question "comment faire", car c'est ce que demande melyadon.

            Excusez moi, mais je ne vois vraiment pas l'interet de ce genre de manipulations.

            Imagine que tu passes l'essentiel des données de page en page via l'url (méthode get). De temps en temps, tu as besoin de formulaire. Si une partie du code du site est partagé par des fonctions (et c'est recommandé), celles-ci se retrouverait à aller parfois chercher des paramètres par $_GET["param"] et parfois dans $_POST["param"]. J'ai eu ça a faire, et c'est très peu pratique.
            Passer systématiquement les mêmes données par l'url, même dans les formulaires peut être une bonne solution pour simplifer le code.
            • [^] # Re: oui tu peux...

              Posté par  . Évalué à 1.

              Exactement. Je réalise un site pour une section de mon lycée et les articles devront être modifiables par des personnes n'ayant aucune connaissance particulière en HTML.

              Ainsi pour créer une page dans la rubrique dont l'id est 3 le lien est : admin.php?action=page&op=nouvelle&rub=3
              On remarque donc que les données sont passées dans l'url (get) car il s'agit d'un lien et je veux que le site soit accessible sans javascript (si je voulais envoyer en post il faudrait remplir un formulaire grâce à du js, je ne vois pas d'autre solution).

              Cette page contient un formulaire à compléter (auteur, date, titre, texte, images... de l'article) dont les données sont envoyées à la même page (admin.php?action=page&op=nouvelle&rub=3) mais en post car :
              - une url longue, c'est moche
              - il y a beaucoup de données à envoyer

              c'est pourquoi je voulais une partie en get et l'autre en post

              je n'ai pas de champs cachés car les variables telles que action, op ou rub sont traitées et filtrées par un passage de code valable pour tout le site. Passer une de ces variables en post créerait une exception et casserait un peu tout :(
        • [^] # Re: oui tu peux...

          Posté par  . Évalué à 1.

          action="form.php?param1=toto", et comme méthode "post"

          justement j'ai déjà essayé cette méthode et ça semble ne pas marcher : la page appelée lors de la validation du formulaire est form.php sans la variable param1 qui devrait être passée dans l'uri (=> "?param1=toto" disparaît)
          donc le contenu du formulaire est envoyé par la méthode post et je ne reçois rien par la méthode get :(

          register_global est à "off" par défaut maintenant et c'est bien mieux comme ça
          • [^] # Re: oui tu peux...

            Posté par  . Évalué à 2.

            justement j'ai déjà essayé cette méthode et ça semble ne pas marcher : la page appelée lors de la validation du formulaire est form.php sans la variable param1 qui devrait être passée dans l'uri (=> "?param1=toto" disparaît)
            donc le contenu du formulaire est envoyé par la méthode post et je ne reçois rien par la méthode get :(


            Bizarre, j'ai mis le copié-collé partiel d'un exemple que j'ai testé en local, et qui marchais (j'ai essayé avant d'écrire des conneries).

            As-tu bien mis un point d'intérogation entre le nom de la page et le premier paramètre , et non un "&" comme entre les paramètres ?
            As-tu bien mis dans la balise form un ' method="post" ' ?
            • [^] # Re: oui tu peux...

              Posté par  . Évalué à 1.

              Effectivement j'ai essayé ça marche (??) mais je ne comprends toujours pas pourquoi ça ne fonctionnait pas avant.

              Merci à tous pour votre aide
  • # Heu

    Posté par  . Évalué à 1.

    Je ne suis pas sur que ce soit vraiment possible, mais j'ai une solution de remplacement pratique pour développer :
    dans l'extension "web developper toolbar" de mozilla/firefox, tu as une option pour transformer les formluaires post en get et inversement.

    Autrement tu peux essayer de bricoler un javascript branché sur l'évènement "onsubmit" de ton formulaire qui construit un 2nd formulaire et l'envoie aussi.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.