Notice: Undefined offset: 1 ? [Résolu]

Signaler
Messages postés
33
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
6 janvier 2009
-
Messages postés
33
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
6 janvier 2009
-
Bonjour,
j'ai un problème sur un affichage de menu dans l'appli que je dois réaliser :

Voici le message d'"erreur" :
**********************************************************************************
Notice: Undefined offset: 1 in /home/quiltmania/public_html/modules/backoffice/treemenu.inc on line 73

Notice: Undefined offset: 2 in /home/quiltmania/public_html/modules/backoffice/treemenu.inc on line 74

Notice: Undefined offset: 1 in /home/quiltmania/public_html/modules/backoffice/treemenu.inc on line 73

Notice: Undefined offset: 2 in /home/quiltmania/public_html/modules/backoffice/treemenu.inc on line 74

Notice: Undefined offset: 1 in /home/quiltmania/public_html/modules/backoffice/treemenu.inc on line 73

Notice: Undefined offset: 2 in /home/quiltmania/public_html/modules/backoffice/treemenu.inc on line 74
***********************************************************************************
***********************************************************************************

Voici le fichier treemenu.inc (la partie concernée en tout cas) :
***************************************************************************
$fd = fopen($treefile, "r");
  if ($fd==0) die("treemenu.inc : Unable to open file ".$treefile);
  while ($buffer = fgets($fd, 4096))
  {
    $tree[$cnt][0]=strspn($buffer,".");
    $tmp=rtrim(substr($buffer,$tree[$cnt][0]));
    $node=explode("|",$tmp);
    $tree[$cnt][1]=$node[0];
    $tree[$cnt][2]=$node[1];
    $tree[$cnt][3]=$node[2];          <------- Ligne 73
    $tree[$cnt][4]=0;                       <------- Ligne 74
    if ($tree[$cnt][0] > $maxlevel) $maxlevel =$tree[$cnt][0];
    $cnt++;
  }
  fclose($fd);
***************************************************************************
***************************************************************************

et le fichier qu'il doit "récupérer" :
***************************************************************************
.Backoffice|accueil.htm|mainFrame

.News|admin.php?AdminClass=wb_news&AdminAction=affListe|mainFrame
.FAQ|admin.php?AdminClass=wb_faq&AdminAction=affListe|mainFrame
.Livres|admin.php?AdminClass=wb_livre&AdminAction=affListe|mainFrame
.Produits|admin.php?AdminClass=wb_produit&AdminAction=affListe|mainFrame
.Sets|admin.php?AdminClass=wb_set&AdminAction=affListe|mainFrame
.Agenda|admin.php?AdminClass=wb_agenda&AdminAction=affListe|mainFrame
.Concours|admin.php?AdminClass=wb_concours&AdminAction=affListe|mainFrame
.Bonnes adresses|admin.php?AdminClass=wb_bonnesadresses&AdminAction=affListe|mainFrame
.Publication|admin.php?AdminClass=wb_publication&AdminAction=affListe|mainFrame
.Pages|admin.php?AdminClass=wb_pagepubli&AdminAction=affListe|mainFrame
.Bonus|admin.php?AdminClass=wb_bonus&AdminAction=affListe|mainFrame
.Quiltothèque
..Modèles|admin.php?AdminClass=wb_modele&AdminAction=affListe|mainFrame
..Exposition|admin.php?AdminClass=wb_exposition&AdminAction=affListe|mainFrame
..Videos|admin.php?AdminClass=wb_videos&AdminAction=affListe|mainFrame
..Photos|admin.php?AdminClass=wb_photo&AdminAction=affListe|mainFrame
.Annuaire
..Annuaire des quilteurs|admin.php?AdminClass=wb_quilteurs&AdminAction=affListe|mainFrame
..Portraits|admin.php?AdminClass=wb_portraits&AdminAction=affListe|mainFrame
.Administration
..Categorie|admin.php?AdminClass=wb_categorie&AdminAction=affListe|mainFrame
..Zones géographiques|admin.php?AdminClass=wb_zonegeo&AdminAction=affListe|mainFrame
..Univers|admin.php?AdminClass=wb_univers&AdminAction=affListe|mainFrame
..Critères|admin.php?AdminClass=wb_criteres&AdminAction=affListe|mainFrame
***************************************************************************
***************************************************************************

JE précise que c'est pour la partie backoffice d'un site, et je suis perdu dans ce code car je c'est un système de gestion de backoffice qu'ils utilisent dans cette boite pour chaque projet, et normalement on a juste à actualiser le menu.txt après chaque création de classe...Sans toucher au fichier treemenu.inc ...
et comme celui qui l'a créé est en vacances...
Et c'est d'autant + "bizarre" que ça marchait sans problème en local, mais depuis que j'ai tout uploadé sur le serveur, le menu du backoffice ne s'affiche plus...
Je suis aller voir sur d'autres posts qui parlaient de ce problème, mais je patauge un peu et pas moyen de régler le problème...
Donc toute aide est la bienvenue, et merci d'avance...

8 réponses

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,
<?php
$cnt = 0;
$fd = fopen($treefile, "r");
  if ($fd==0) die("treemenu.inc : Unable to open file ".$treefile);
  while ($buffer = fgets($fd, 4096))
  {
    $tree[$cnt][0]=strspn($buffer,".");
    $tmp=rtrim(substr($buffer,$tree[$cnt][0]));
    $node=explode("|",$tmp);
   if(isset( $node[0] )) {
        $tree[$cnt][1] =$node[0];
    }
    if(isset($node[1])) {
        $tree[$cnt][2]= $node[1];
    }
    if(isset( $node[2])) {
        $tree[$cnt][3] =$node[1];

    }  
    $tree[$cnt][4]=0;                  
    if ($tree[$cnt][0] > $maxlevel) $maxlevel=$tree[$cnt][0];
    $cnt++;
  }
  fclose($fd);
?>
A l'arrache.
Messages postés
33
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
6 janvier 2009

Je viens de tester en rajoutant le code print_r($node); à ce niveau :

*********************
...
$node= explode("|",$tmp);
print_r($node);
$tree[$cnt][1]=$node[0];
$tree[$cnt][2]=$node[1];
...
***********************
***********************

Et voilà ce que j'obtient à l'affichage :

************************************************************************************************************
Array
(
[0] => Backoffice
[1] => accueil.htm
[2] = > mainFrame
)
Array
(
[0] =>
)

Notice : Undefined offset: 1 in /home/quiltmania/public_html/modules/backoffice/treemenu.inc on line 73

Notice: Undefined offset: 2 in /home/quiltmania/public_html/modules/backoffice/treemenu.inc on line 74

Array
(
[0] => News
[1] => admin.php?AdminClass=wb_news&AdminAction=affListe
[2] => mainFrame
)
Array
(
[0] => FAQ
[1] => admin.php?AdminClass=wb_faq&AdminAction=affListe
[2] => mainFrame
)
Array
(
[0] => Livres
[1] => admin.php?AdminClass=wb_livre&AdminAction=affListe
[2] => mainFrame
)
Array
(
[0] => Produits
[1] => admin.php?AdminClass=wb_produit&AdminAction=affListe
[2] => mainFrame
)
Array
(
[0] => Sets
[1] => admin.php?AdminClass=wb_set&AdminAction=affListe
[2] => mainFrame
)
Array
(
[0] => Agenda
[1] => admin.php?AdminClass=wb_agenda&AdminAction=affListe
[2] =>...
(P.S : je ne peux pas voir la suite du message d'erreur...)
************************************************************************************************************
************************************************************************************************************

Si ça inspire quelqu'un ... ?
Messages postés
33
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
6 janvier 2009

On dirait que ça bug entre la première ligne et la seconde...
J'ai enlevé la ligne vide entre :
.Backoffice|accueil.htm|mainFrame
et :
.News|admin.php?AdminClass=wb_news&AdminAction=affListe|mainFrame
mais aucun changement ...
Messages postés
33
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
6 janvier 2009

Je continue mes tests et recherches ...
J'ai vu sur un autre site qu'on préconisait d'initialiser les tableaux, donc j'ai rajouté :
$tree[$cnt] = array (0 => 0, 1=> 0, 2=> 0, 3=> 0, 4=> 0);$node array (0> 0, 1=> 0, 2=> 0);
juste avant la ligne :
$fd = fopen($treefile, "r");
mais tjrs aucun changement...
Messages postés
83
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
14 décembre 2011
1
[auteur/LOLYMEUPY/1039630.aspx
]
Salut lolymeupy,

Sans entrer dans ton code, je te conseille de diviser ton problème en deux ( dychotomie )

Soit le problème vient de ton code,
soit de la source = le fichier qu'il doit "récupérer" :"




Je pense que tes offsets problématiques sont $node[1]; et $node[2];
lorsque ton code analyse la ligne blanche dans
.Backoffice|accueil.htm|mainFrame
( *** ICI *** )
.News|admin.php?AdminClass =wb_news&AdminAction=affListe|mainFrame



...

m100
Messages postés
33
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
6 janvier 2009

Non, parce que j'ai essayé en enlevant la ligne blanche, et le resultat est le même...
Messages postés
83
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
14 décembre 2011
1
Re,

- J'avais vu ton essai sans ligne blanche, mais parfois, il faut un temps de latence.
- As tu essayé en écrivant qqch dans cette ligne vide ?
- Le problème pourrait-il survenir de l'environement  ( Windows et son chr(10) chr(13) ... ) lors de la correction

Sinon, pourrais tu modifier tes quatre lignes :



    echo "buffer : " . $buffer . "
" ;





   

$tree[$cnt][0]= strspn($buffer,".");


    echo "tree : " .
$tree[$cnt][0]


. "
"


;





   




$tmp =rtrim(substr($buffer,$tree[$cnt][0]));




    echo "tmp : " . $tmp



. "
"



;
   



$node=explode("|",$tmp);




    print_r ( $node ) ;




afin d'y voir un peu plus clair ?

bat,

m100
Messages postés
33
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
6 janvier 2009

Merci à vous 2 pour votre aide.
En effet, malalam, avec les isset, ça marche beaucoup mieux...
En fait, j'ai eu le même problème ce week-end, mais dans d'autres fichiers (que j'avais fais moi-même cette fois), et j'ai vu que fallait rajouter des isset car ça buggait avec l'utilisation de variables récupérées en $_GET.
Donc merci encore.