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

PHP & Base de données Discussion :

php MySQL variables de sessions et IE


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 5
    Par défaut php MySQL variables de sessions et IE
    Bonjour,

    J'en peux plus... Ca fait bientôt 6 heures que je cherche.

    J'ai un site en php / mySQL, un formulaire permet de créer des requêtes que je stock sous forme de "filtres".
    Ces filtres peuvent être actifs ou inactifs, leur statut est stocké dans:

    $_SESSION['filtres'][$NumFiltre]["filtreActif"]

    qui vaut 1 ou 0.

    Je veux qu'on puisse activer et désactiver ces filtres par un bouton propre à chaque filtre.
    chaque bouton agit comme suit:

    onClick='this.form.actDesact.value = \"".$NumFiltres."\"; this.form.submit();

    ensuite, au submit(), le filtre doit se (dés)activer grâce à:

    $g = $_POST["actDesact"];

    if($_SESSION['filtres'][$g]["filtreActif"] == 1) ){
    $_SESSION['filtres'][$g]["filtreActif"] = 0;
    }
    if($_SESSION['filtres'][$g]["filtreActif"] == 0) ){
    $_SESSION['filtres'][$g]["filtreActif"] = 1;
    }




    Cela marche parfaitement sous firefox.
    Le soucis c'est qu'internet explorer se comporte d'une manière qui m'échappe complétement.

    Pour mieux comprendre, j'ai mis:

    print_r($_SESSION['filtres'][1]["filtreActif"]);


    avant et après le if qui décide d'activer ou non.

    Si je ne clique pas sur le bouton, comme de base le filtre est actif, j'obtiens 1 puis 1 ce qui est logique.
    Si par contre je clic sur le bouton, j'obtiens 0 avant le traitement (c'est à dire que le filtre est désactivé avant même le if)
    puis 1 après parce qu'il semble réactiver le filtre le croyant désactivé...

    Le plus étrange est que si je clic sur le bouton pour désactiver le filtre (donc le filtre reste activé) mais que je rafraîchis manuellement la page, alors le filtre se désactive "normalement", les print_r donnent 1 puis 0 ....

    C'est absurde mais peut être n'ai-je pas compris comment fonctionnent les variables de sessions sous IE...

    Si vous avez une piste, merci beaucoup beaucoup de m'aider.

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour, une remarque à propos de ce code :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if($_SESSION['filtres'][$g]["filtreActif"] == 1) ){
    $_SESSION['filtres'][$g]["filtreActif"] = 0;
    }
    if($_SESSION['filtres'][$g]["filtreActif"] == 0) ){
    $_SESSION['filtres'][$g]["filtreActif"] = 1;
    }

    Si tu arrives avec $_SESSION['filtres'][$g]["filtreActif"]=1, tu ressortiras également avec $_SESSION['filtres'][$g]["filtreActif"]=1 car le deuxieme if annule ton premier. Remplaces par :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if($_SESSION['filtres'][$g]["filtreActif"] == 1) )
         $_SESSION['filtres'][$g]["filtreActif"] = 0;
    else
         $_SESSION['filtres'][$g]["filtreActif"] = 1;

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 5
    Par défaut
    Arf pardon, c'est juste en réécrivant le code pour simplifier sa compréhension que j'ai fait une connerie que j'ai pas vue...

    voici mon "vrai" code, encore désolé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    if(isset($_POST["actDesact"])){
    	$g = $_POST["actDesact"];
     
    	if(( $_POST["actDesact"] != "0") && ($_SESSION['filtres'][$g]["filtreActif"] == 1) ){
     
    		$_SESSION['filtres'][$g]["filtreActif"] = 0;
     
    	}elseif(( $_POST["actDesact"] != "0") && ($_SESSION['filtres'][$g]["filtreActif"] == 0) ){
    		$_SESSION['filtres'][$g]["filtreActif"] = 1 ;
    	}
    }
    ?>
    Mais ce qui me trouble particulièrement c'est que la valeur de $_SESSION['filtres'][$g]["filtreActif"] change quand je clic sur le bouton avant même le passage dans ces if... Et aussi qu'au refresh ça se mette à marcher...
    Si quelqu'un a une piste ou un idée pour avancer vers un diagnostic je suis preneur...
    Merci

Discussions similaires

  1. [MySQL] Problème avec php/mysql, variables du même nom
    Par Naxosy dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 13/01/2008, 15h31
  2. [PHP/MySQL] Pb de session
    Par darkphenx dans le forum Langage
    Réponses: 7
    Dernier message: 30/05/2006, 01h05
  3. [Sécurité] [SGBD] [PHP/MySQL] Pb de session
    Par darkphenx dans le forum Langage
    Réponses: 3
    Dernier message: 19/05/2006, 11h02
  4. Réponses: 9
    Dernier message: 05/01/2006, 12h24
  5. Deboggeur de variables de sessions PHP
    Par joe_le_mort dans le forum Langage
    Réponses: 10
    Dernier message: 14/11/2005, 23h22

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