Notice: Undefined offset: 1 ?

Résolu
lolymeupy Messages postés 33 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 6 janvier 2009 - 22 août 2008 à 11:10
lolymeupy Messages postés 33 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 6 janvier 2009 - 25 août 2008 à 09:53
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

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
22 août 2008 à 20:14
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.
3
lolymeupy Messages postés 33 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 6 janvier 2009
22 août 2008 à 11:41
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 ... ?
0
lolymeupy Messages postés 33 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 6 janvier 2009
22 août 2008 à 11:51
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 ...
0
lolymeupy Messages postés 33 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 6 janvier 2009
22 août 2008 à 12:09
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MasterCent Messages postés 83 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 14 décembre 2011 1
22 août 2008 à 13:13
[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
0
lolymeupy Messages postés 33 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 6 janvier 2009
22 août 2008 à 13:36
Non, parce que j'ai essayé en enlevant la ligne blanche, et le resultat est le même...
0
MasterCent Messages postés 83 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 14 décembre 2011 1
22 août 2008 à 17:13
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
0
lolymeupy Messages postés 33 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 6 janvier 2009
25 août 2008 à 09:53
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.
0
Rejoignez-nous