Pb de dynamisation d'un menu

Tchii28 Messages postés 4 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 26 octobre 2004 - 5 août 2004 à 11:28
ronanf235 Messages postés 105 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 28 juin 2006 - 5 août 2004 à 16:28
Bonjour,

Je dois faire en sorte que certains titres du menu n'y apparaissent pas suivant la personne qui se connecte. Hors toutes les caractéristiques du menu sont dans un config.ini et lors de l'affichage si je retire l'un des sous menus alors tous ceux qui sont aprés lui dans config.ini ne s'affichent pas.

pour vous aider à m'aider ;-) voici le code que j'effectue

; Ce fichier INI contient des informations relatives au menu dynamique, à la couleur et à différentes adrèsses mail contenus
; dans la partie web de GPC.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INFORMATIONS GENERALES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Cette variable "couleur" correspond à la couleur du menu déroulant de la partie web de GPC.
; Voici les codes de 2 couleurs : bleu => #000099 (GPC)
; rouge => #DC122A (ED)
couleur = #000099

;Cette variable correspond à la couleur du fond d'une cellule quand le pointeur de la souris passe au-dessus.
couleurFond = #a1a1a1

; Cette variable "mail1" correspond à l'adresse mail de l'onglet factureCC dans Compteclient
mailFactureCC = support@effetdirect.com

; Cette variable "mail2" correspond à l'adresse mail de l'onglet versementCC dans Compteclient
mailVersementCC = vlakomy@effetdirect.com
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MENU DYNAMIQUE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Cette partie correspond au menu dynamique. Ce menu est divisé en pluieurs sections qui
; qui contiennent chacunes un certain nombre de liens.
; Voici les explications des différents champs:
; Une section correspond a un menu.
; titre -> correspond au libélé de chaque menu
; pos (type : entier) -> correspond à la distance du bord gauche de la cellule du menu par rapport au bord gauche de la page
; (pour presentation)
; width (type : entier) -> longueur de la cellule du menu
; widthMenu (type : entier) -> Longueur des sous-menus
; champsI -> libéllé d'un sous-menu du menu
; espaceI (type : entier) -> nb d'espace a rajouter apres champsI pour completer la cellule
; lienI -> lien associé au libéllé du sous-menu de memenumero

[section1]
titre = Comptesclients
pos = 0
width = 110
widthMenu = 113
champs1 = Ouvrir
espace1 = 23
lien1 = ../Membres/listerCC.php

[section2]
titre = Recouvrement
pos = 112
width = 130
widthMenu = 131
champs1 = Saisie
espace1 = 30
lien1 = ../Membres/recouvrement.php
champs2 = Import CC
espace2 = 21
lien2 = ../Membres/importNewCC.php
champs3 = Edition des refus
espace3 = 9
lien3 = ../Membres/editionRefusNewCC.php

[section3]
titre = Litiges
pos = 243
width = 170
widthMenu = 168
champs1 = Litiges
espace1 = 41
lien1 = ../Reporting/indexLitiges.php
champs2 = Liste litiges
espace2 = 32
lien2 = ../Reporting/listelitiges.php
champs3 = Délai moyen de résolution1
espace3 = 1
lien3 = ../Reporting/delaiMoyenRes.php
champs4 = Délai moyen de résolution2
espace4 = 1
lien4 = ../Reporting/delaiMoyenResLitiges.php

[section4]
titre = Editions
pos = 411
width = 175
widthMenu = 173
champs1 = Balance agées
espace1 = 27
lien1 = ../Reporting/listerBalance.php
champs2 = Etat des relances préventives
espace2 = 0
lien2 = ../Reporting/indexRelancePrev.php
champs3 = Etat RJ/LJ
espace3 = 34
lien3 = ../Reporting/indexRJLJ.php
champs4 = Editions libres
espace4 = 28
lien4 = ../Reporting/listeParam.php

[section5]
titre = Reporting
pos = 584
width = 180
widthMenu = 178
champs1 = Cash Management
espace1 = 21
lien1 = ../Reporting/indexMgt.php
champs2 = CA
espace2 = 51
lien2 = ../Reporting/CACritere.php
champs3 = Tableau de bord de production
espace3 = 0
lien3 = ../Reporting/indexTableauBord.php
champs4 = Détail activité
espace4 = 29
lien4 = ../Reporting/index.php
champs5 = Détail encours
espace5 = 29
lien5 = ../Reporting/index2.php
champs6 = Indice d'éfficacité du recouvrement
espace6 = 0
lien6 = ../Reporting/indexIER.php

[section6]
titre = Workflow
pos = 762
width = 120
widthMenu = 120
champs1 = Ouvrir
espace1 = 25
lien1 = ../workflow/workflow.php

[section7]
titre = Quitter
pos = 882
width = 100
widthMenu = 101
champs1 = Déconnecter
espace1 = 6
lien1 = ../identification.php
champs2 = Quitter
espace2 = 17
lien2 = ../identification.php

voila la fonction qui affiche le menu

function construire() {
$tabINI = parse_ini_file("../config.ini",true);
$obj_internaute = new internaute();
$obj_internaute = $_SESSION ["internaute"];

if ($tabINI["couleur"]=="" || $tabINI["mailFactureCC"]=="" || $tabINI["mailVersementCC"]==""
|| $tabINI["couleurFond"]=="") {
sessionInvalide("../Fonctions/ErreurConfiguration.php");
}
else {
$this->setCouleur($tabINI["couleur"]);
$this->setMailFactureCC($tabINI["mailFactureCC"]);
$this->setMailVersementCC($tabINI["mailVersementCC"]);
$this->setCouleurFond($tabINI["couleurFond"]);
}

/*if ($obj_internaute ->getSuperUser() == 1)
$longtab = (sizeof($tabINI)-5)) ;
else $longtab = (sizeof($tabINI)-4);
*/

//for ($cpt=0; $cpt<(sizeof($tabINI)-4); $cpt++) {
//test si les titres, pos, width et widthMenu sont non nuls et si pos, width, widthMenu sont des entiers
$cpt =0;
$fini = 0;

while ( $cpt < (sizeof($tabINI)-4) && $fini != 1 ) {

if ($tabINI["section".($cpt+1)]["titre"] == "" || $tabINI["section".($cpt+1)]["pos"] == ""
|| $tabINI["section".($cpt+1)]["width"] == "" || $tabINI["section".($cpt+1)]["widthMenu"] == ""
|| ((string)((int)$tabINI["section".($cpt+1)]["pos"]) != $tabINI["section".($cpt+1)]["pos"])
|| ((string)((int)$tabINI["section".($cpt+1)]["width"]) != $tabINI["section".($cpt+1)]["width"])
|| ((string)((int)$tabINI["section".($cpt+1)]["widthMenu"]) != $tabINI["section".($cpt+1)]["widthMenu"])
) {
sessionInvalide("../Fonctions/ErreurConfiguration.php");
}

else {
for ($ind=0; $ind<(sizeof($tabINI["section".($cpt+1)])-4)/3; $ind++) {
// Test si champs, espace et lien sont non nuls et si espace est un entier
if ($tabINI["section".($cpt+1)]["champs".($ind+1)]=="" || $tabINI["section".($cpt+1)]["lien".($ind+1)]==""
|| $tabINI["section".($cpt+1)]["espace".($ind+1)] == ""
|| ((string)((int)$tabINI["section".($cpt+1)]["espace".($ind+1)]) != $tabINI["section".($cpt+1)]["espace".($ind+1)])
)
sessionInvalide("../Fonctions/ErreurConfiguration.php");
}

if (($obj_internaute ->getSuperUser() == 1 && $cpt != 5) || ($obj_internaute ->getSuperUser() != 1)){
$this->setTabSection(Array(),$cpt);
$this->setTabSection($tabINI["section".($cpt+1)],$cpt);
} if (($obj_internaute ->getSuperUser() 1) && $cpt 5) $fini = 1;

$cpt++;
}

} //fin boucle
if ($obj_internaute ->getSuperUser() 1 && $fini 1){
$nb = 6;
$tabINI["section".($nb+1)]["pos"] = $tabINI["section".($nb)]["pos"];
$this->setTabSection(Array(),$nb);
$this->setTabSection($tabINI["section".($nb+1)],$nb);
}

}

Voila donc je ne veux pas afficher le num 6 donc j'arrete à 5 et après la boucle j'essaie d'afficher le num 7 mais ça ne fonctionne pas.
Je pense qu'il y a un pb avec la boucle.
Si vous avez des idées je suis preneuse.
merci,

Tchii28

1 réponse

ronanf235 Messages postés 105 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 28 juin 2006
5 août 2004 à 16:28
slt

je pige pas comment pourquoi tu veux faire comme ca, tout est ecrit en dur donc si jamais tu enleve le 3e elt tu fais une autre fct :
si tu ve pas afficher un indice (ou une liste d'indice interdit)
pourquoi tu ne fais pas une simple boucle

faire pour tous {
$id = 0; // indice dans ton fichier
$nbElem = 0; //nb d'elem dans la liste

si valide($id) alors

affichage;
$id++;
$nbElem++;

sinon

$id++;

fsi

}

et ta fonction valide verifie si l'indice $id est autorise par les droits de l'utilisateur

sinon pour le code que tu as mis, si ca passe pas dans ton if pour afficher le 7e, c'est que l'une des conditions n'est pas satisfaite....
une seule solution trouver laquelle, et voir pourquoi etr surtout si c normal
et la une seule solution : les affichages, mettre des echos partout et voir ce qui se passe

bon courage

ronan
0
Rejoignez-nous