Gestion d'onglets en session [Résolu]

Messages postés
193
Date d'inscription
lundi 16 mars 2009
Dernière intervention
17 juin 2010
- - Dernière réponse : sebshiva
Messages postés
193
Date d'inscription
lundi 16 mars 2009
Dernière intervention
17 juin 2010
- 30 avril 2010 à 21:41
Bonjour!

Bon, je post très rarement sur des forums, trouvant la plupart du temps moi même les solutions à mes problèmes...mais...là...je sèche. (3 jours que je bloc là dessus....)

En fait voilà :
Je monte une classe de gestion d'onglets dont ces derniers, leurs position, celui actif, le dernier ainsi que le pré-actif sont stockés en session.
(l'info actif, pre-actif et dernier sert à la mise en page ultérieur)
Je ne vous livrerais pas toute la classe mais juste la méthode qui coince, en l'occurrence celle qui sert à déclarer actif un onglet donné à partir de son id.
J'ai déjà eu des soucis avec une classe de ce type qui ne restait pas en session (visiblement à cause d'index integer), mais là tout se passe bien à ce niveau, mais quand je var_dump, les clés 'active', 'endTab' etc ne sont pas effacées comme elles le devraient.
Je passe sûrement à côté d'une évidence, mais j'ai beau chercher, je ne trouve pas.
protected function setActiveTab($sIdTab) {

$mPosTab = $this->getPosTab($sIdTab); 
//renvoi la position de l'onglet à activer (sa clé)
$iActiveTab = $this->getActiveTab(); 
//renvoi la position de l'onglet actif (sa clé)
$iCountOfTabs = $this->getCountOfTabs();
//renvoi le nombre d'onglets

if ((!empty($this->aTabs) && (false !== $mPosTab)) && ($iActiveTab !== $mPosTab)) {
//vérification pour éviter un traitement inutile
if (isset($this->aTabs[$iActiveTab]['active']))
unset($this->aTabs[$iActiveTab]['active']);
if (isset($this->aTabs[$iActiveTab-1]['preActive']))
unset($this->aTabs[$iActiveTab-1]["preActive"]);
if (isset($this->aTabs[$iCountOfTabs]["endTab"]))
unset($this->aTabs[$iCountOfTabs]["endTab"]);
//je vire tous les index active, preActive, endTab
foreach($this->aTabs as $key=>$aTab) {
if (in_array($this->sIdTab, $aTab)) {
$this->aTabs[(string)$key]['active'] = true;
if ($key != 0)
$this->aTabs[$key-1]['preActive'] = true;
break;
}
}
$this->aTabs[$iCountOfTabs-1]['endTab'] = true;
// -1 parce que mon tableau par de 0
return $this->updateTabsMemory();
//copie le tableau en session en écrasant l'ancien
}
return false;
//si ça n'a rien fait
}


le var_dump devrait ressembler à quelque chose comme ça :
array(2) {
  [0]=>
  array(5) {
    ["url"]=>
    string(4) "url2"
    ["title"]=>
    string(8) "Onglet 2"
    ["idTab"]=>
    string(1) "2"
    ["preActive"]=>
    bool(true)
  }
  [1]=>
  array(4) {
    ["url"]=>
    string(4) "url3"
    ["title"]=>
    string(16) "Onglet plus long"
    ["idTab"]=>
    string(1) "3"
    ["active"]=>
    bool(true)
    ["endTab"]=>
    bool(true)
  }
}

Si quelqu'un a une idée....
Pour précision, avant que je rajoute les clés "preActive" et "endTab", ça marchait très bien.

D'avance merci à ceux qui prendront le temps de me lire :)
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
193
Date d'inscription
lundi 16 mars 2009
Dernière intervention
17 juin 2010
4
3
Merci
Bon, bein ça marche.
J'ai galérer pendant une semaine, mais bon, c'est bien fait pour moi.
Ça m'apprendra à mettre des choses dans des méthodes qui n'ont rien à y faire.
(l'info actif, pre-actif et dernier sert à la mise en page ultérieur)

Ben voilà, je n'ai laissé actif pour s'y retrouver, je me débrouille autrement pour le reste, mais à l'étape finale de présentation.
Je n'ai donc pas trouvé la vrai raison du pourquoi mes unset ne se faisaient pas, mais dans tous les cas, j'en tire une bonne leçon.
...et la nouvelle version de cette méthode fait 12 lignes de moins...

Bref, je me réponds à moi même, histoire de mettre ce post en résolu.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de sebshiva
Messages postés
193
Date d'inscription
lundi 16 mars 2009
Dernière intervention
17 juin 2010
4
0
Merci
désolé pour les couleurs.... c'est pas très lisible là du coup...
Commenter la réponse de sebshiva

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.