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 :

Tester l'existance de variables POST et GET


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Par défaut Tester l'existance de variables POST et GET
    Bonjour à tous,

    Dans mon site , je donne la possibilité à l'utilisateur de changer la langue.
    Il peut à tout moment passer de FR à UK et vice versa.
    je procède de cette manière :

    Liens pour changer de langue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     <td rowspan="3"><div class="centreronly"><a href="<?php echo DIR_THIS;?>index.php?language=fr<?php if(isset($_GET["section"])) echo('&amp;section='.$_GET["section"]); ?>"><img src="<?php echo DIR_IMAGES ?>lang_fr.png" alt="fr"/></a></div></td>
        <td  rowspan="3"><div class="centreronly"><a href="<?php echo DIR_THIS;?>index.php?language=uk<?php if(isset($_GET["section"])) echo('&amp;section='.$_GET["section"]); ?>"><img src="<?php echo DIR_IMAGES ?>lang_uk.png" alt="uk"/></a></div></td>
    Ensuite , quelque part en début de page , je test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(empty($_SESSION["language"])) $_SESSION["language"]="fr";
    if(isset($_GET["language"]))
     $_SESSION["language"]=$_GET["language"];
    require(DIR_LANGUAGES.$_SESSION["language"].".php");
    Je vous explique mon problème :
    Lorsqu'on se trouve dans une certaine section et que l'on change de langue,le changement est bien effectué et nous restons bien sur cette même page.
    Seulement , si cette page a reçu d'autres paramètres POST ou GET , on perd ces infos..

    Donc lorsque je me retrouve avec une page qui commence par exemple par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(isset($_POST["ordernow"]))
    {
    ou autre.. impossible de procéder..

    Je pensais tester le contenu de $_POST et $_GET lors du changement et réenvoyer les valeurs mais ça me parait compliqué à faire..

    Pourriez-vous svp m'aider..

    Merci d'avance!

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 138
    Par défaut
    Salut,

    Si tu as des variables en $_POST[] et que tu souhaites relancer ta page... en les gardants, tu seras obliger de les récupérer pour ne pas les perdre.

    Il y a un moyen php à mon avis (vu que je l'ai vu il n'y a pas longtemps) pour récupérer toutes tes variables en $_POST[], donc si tu fais une fonction qui te retourne un tableau[nom][valeur] tu n'auras plus de soucis.

    Je ne sais pas si j'aurai le temps de faire des recherches, mais essai de regarder en ce sens.

    Cordialement,

  3. #3
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Par défaut
    Et comment passer ce tableau si j'y arrive?
    Le problème c'est que parfois la méthode est GET , parfois la méthode est POST

    Oh et biensure , merci pour ta réponse..

  4. #4
    FoxLeRenard
    Invité(e)
    Par défaut
    Bonjour, moi je metrais en tête de mon PHP
    La logique est la suivant, on met la variable a "xx"
    puis on cherche s' il y a eu un GET ou un POST (drapeau cliqué)
    si OUI on remet a jour la session,
    si NON on lit la session
    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
    16
    17
     
    $lg="xx";
    if (isset($_POST["CDrapeau"])) $lg=trim($_POST["CDrapeau"]);
       else 
          if (isset($_GET["CDrapeau"])) $lg=trim($_GET["CDrapeau"]);
     
    //======== 2 Si oui mais INVALIDE on vide le POST ou GET ========== 
    if ( $lg!="fr" && $lg!="uk" && $lg!="xx") {$lg!="xx";}
    //======== 3 on controle la session langue si il n y a pas drapeau =====
    if ($lg=="xx")
      {
       if (!isset($_SESSION['LaLg']))   {$_SESSION['LaLg']="uk";$lg="uk";}
         else {$lg=$_SESSION['LgForum'];}
     
       }
    //======== 4 mais meme si la session a une langue le drapeau prime
       $_SESSION['LaLg']=$lg;

    Cote drapeau c 'est plus simple, tu te base sur $lg
    Dernière modification par Celira ; 14/01/2009 à 09h45. Motif: attention à ne pas confondre citation ([quote]) et code ([code]) ;)

  5. #5
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Par défaut
    Merci , je comprends ta logique.

    Cependant , je ne vois pas à quoi correspond ton $_POST["CDrapeau"])et $_GET["CDrapeau"]).
    Le truc c'est de pouvoir lors du click sur un drapeau , recharger la page en gardant toutes les variables $_POST et $_GET existantes.

    Peut être avec un "onClick" et parcourir toutes les variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach ($nom as $clef => $_POST) {
                    echo('<input type="hidden" name="' . $nom . '" value="' . $clef.'"/>');
                }
    En renvoyer à la page avec un nouveau formulaire..

    Est-ce que selon vous ça pourrait tenir la route?

  6. #6
    FoxLeRenard
    Invité(e)
    Par défaut
    Cependant , je ne vois pas à quoi correspond ton $_POST["CDrapeau"])et $_GET["CDrapeau"]).
    Le truc c'est de pouvoir lors du click sur un drapeau , recharger la page en gardant toutes les variables $_POST et $_GET existantes.
    Oui CDrapeau c' est supposé étre l'ID de l input du drapeau ...
    Maintenant garder les valeurs de la pages (autres valeurs actives) je ne vois que des input hiden les contenant, ou les mettre dans une session

  7. #7
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par libuma Voir le message
    Le problème c'est que parfois la méthode est GET , parfois la méthode est POST
    Pour cette facette du problème, tu peux regarder du côté du tableau $_REQUEST

  8. #8
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Par défaut
    Merci mais ça m'inquiète un peu en lisant ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Don't forget, because $_REQUEST is a different variable than $_GET and $_POST, it is treated as such in PHP -- modifying $_GET or $_POST elements at runtime will not affect the ellements in $_REQUEST, nor vice versa.
    J'ai l'idée en tête , je vais tester ceci dans un moment et je vous met au courant

  9. #9
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Par défaut
    Voilà.. ça fonctionne correctement.. mais ça n'a pas l'air très professionnel

    Pour ceux que ça intéresse , voilà comment j'ai résolu le problème:

    - Dans le header , une fonction js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function getLang(lang)
    {
     
      if(lang == "fr")
    	document.languefr.submit();
      else
    	document.langueuk.submit();
    }
    Sur les drapeaux , on appelle l'évènement onClick();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     <div class="centreronly"><img src="<?php echo DIR_IMAGES ?>lang_fr.png"  alt="fr" onClick="getLang('fr')"/></div>
      <div class="centreronly"><img src="<?php echo DIR_IMAGES ?>lang_uk.png"  alt="uk" onClick="getLang('uk')"/></div>
    Et en fin de page , je créé deux formulaires cachés
    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
    16
    17
     
    <form name="langueuk" method="post" action="<?php echo DIR_THIS;?>index.php?language=uk<?php
    			foreach ($_GET as $key => $value) {
    			 if($key != "language")
                    echo('&amp;'.$key.'='.$value);}?>">
    <?php foreach ($_POST as $key => $value) {
                    echo('<input type="hidden" name="'.$key.'" value="'.$value.'"/>');
    				}?>
    </form>
    <form name="languefr" method="post" action="<?php echo DIR_THIS;?>index.php?language=fr<?php
    			foreach ($_GET as $key => $value) {
    			 if($key != "language")
                    echo('&amp;'.$key.'='.$value);}?>">
    <?php foreach ($_POST as $key => $value) {
                    echo('<input type="hidden" name="'.$key.'" value="'.$value.'"/>');
    				}?>
    </form>
    Voilà , si vous avez des commentaires ou des améliorations à apporter , vous êtes les bienvenus.
    Merci !

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/02/2009, 14h41
  2. Réponses: 22
    Dernier message: 17/03/2006, 21h42
  3. Tester l'existence d'une variable?
    Par Death83 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/03/2006, 21h53
  4. Tester l'existance d'un fct ou d'une variable sous Opéra.
    Par mch_27 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/11/2005, 16h35
  5. Réponses: 3
    Dernier message: 19/08/2005, 14h24

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