# Schon wieder "Undefined offset 0 in.."



## fantalight (7. Februar 2005)

Hallo Leute,

ich habe versucht, die Navigationsleiste meiner HP auf PHP umzustellen. Das Beispiel basierend auf PHP_self funktionierte ganz gut. Als ich es dann eingebunden hatte, erhielt ich wiedermal die Fehlermeldung:



> Warning: Undefined offset: 0 in /usr/local/httpd/htdocs/../dynmenu2.php on line 30


 
Wenn ich die dynmenu2.php (ist in einer Index includet) in einem Unterverzeichnis aufrufe alles einwandfrei. Hier die dynmenu2.php


```
<?
$siteRoot="/meinverzeichnis/";
$menuStruct=array(
"Startseite"=>array("root"=>$siteRoot."hauptseite.php"),
"Aktuelles"=>array("root"=>$siteRoot."aktuell.php"),
"Fragen und Antworten"=>array("root"=>$siteRoot."fragen.php"),
"Ausfüllanleitung"=>array("root"=>$siteRoot."anleitung.php"),
"Vorschriften"=>array("root"=>$siteRoot."vorschriften.php"),
"Protokolle"=>array("root"=>$siteRoot."protokolle.php"),
"Regeln"=>array("root"=>$siteRoot."regeln.php",
"Regel1"=>$siteRoot."regel1.php",
"Regel2"=>$siteRoot."regel2.php",
"Regel3"=>$siteRoot."regel3.php"),
"Kontakt"=>array("root"=>$siteRoot."kontakt.php")
);
 
if($PHP_SELF == $menuStruct[0]['root']){
foreach($menuStruct as $key=>$value){
	if($PHP_SELF == $value['root']){
	 echo "<div class=\"fstLevelActive\"><a href=".$value['root'].">$key</a></div>\n";
	}
	else{
	 echo "<div class=\"fstLevel\"><a href=".$value['root'].">$key</a></div>\n";
	}
}
} else {
foreach($menuStruct as $key=>$value){
	if($PHP_SELF == $value['root']){
	 echo "<div class=\"fstLevelActive\"><a href=".$value['root'].">$key</a></div>\n";
	}else{
	 echo "<div class=\"fstLevel\"><a href=".$value['root'].">$key</a></div>\n";
	}
	foreach($value as $key2=>$value2){
	 if(array_search($PHP_SELF,$value)){
		if($key2 != "root")
		 if($PHP_SELF == $value2){
			 echo "<div class=\"secLevelActive\"><a href=".$value2.">$key2</a></div>\n";
		 }else{
			 echo "<div class=\"secLevel\"><a href=".$value2.">$key2</a></div>\n";
		 }
	 }
	}
}
}
?>
```
 
Zeile 30 ist die hier:


```
if($PHP_SELF == $menuStruct[0]['root']){
```
 
Kann mir jemand sagen, warum das Coding nicht läuft?
Danke!
Thom


----------



## Oliver Gringel (7. Februar 2005)

Der Index 0 im Array $menuStruct existiert nicht. Ist die Fehlermeldung nicht eindeutig?


----------



## fantalight (7. Februar 2005)

@Oliver:

Soviel habe ich mir auch schon gedacht!
Allerdings sind meine PC-Kenntnisse nicht so weit, dass ich weiterkomme. Außerdem verstehe ich nicht, dass die Fehlermeldung beim Originalbeispiel eben nicht auftritt. Selbst als ich die Orginal-Menudatei-Vorlage nach meinen Wünschen geändert hatte, lief das Teil noch in einem anderen Ordner (und läuft dort immer noch). Warum nicht diese? Was für Möglichkeiten habe ich?

Thom


----------



## Xaicon (7. Februar 2005)

Ich denke das müsste $_SERVER['PHP_SELF'] statt $PHP_SELF heissen.

```
if($_SERVER['PHP_SELF'] == $menuStruct[0]['root']){
```


----------



## Oliver Gringel (7. Februar 2005)

Wie sieht denn das Array $menuStruct aus?


----------



## Timbonet (7. Februar 2005)

Oliver Gringel hat gesagt.:
			
		

> Wie sieht denn das Array $menuStruct aus?



Guck mal in Zeile 3 des Skripts


----------



## fantalight (7. Februar 2005)

@Xaicon:

$_SERVER 
Diese Variable wird überhaupt nicht erkannt! Dann erscheint sogar eine zweite Fehlermeldung:

*



Warning: Undefined variable: _SERVER in /usr/local/httpd/htdocs/../dynmenu2.php on line 30

Zum Vergrößern anklicken....

 
Wie schon geschrieben finde ich es seltsam, dass die Beispieldateien des Navigationsmenüs auf meinem Server einwandfrei . Nur wenn ich die Navi in meine Seiten einbinde kommt die Fehlermeldung mit dem Array.

Any suggestions?
Thom*


----------



## JohannesR (7. Februar 2005)

1) Dein PHP ist uralt, das solltest du dringend updaten.
2) Du solltest deinem Array entweder numerische oder Alphanumerische Indizes geben. Ersetz 0 mit "Startseite", oder was auch immer.


----------



## Oliver Gringel (7. Februar 2005)

Timbonet hat gesagt.:
			
		

> Guck mal in Zeile 3 des Skripts


Oh, garnicht gesehen. Naja, wie schon gesagt, es gibt keinen Index 0 in diesem Array.


----------



## fantalight (7. Februar 2005)

phpinfo sagt: Version 4.0.6

Ich habe allerdings keine Möglichkeit für ein Update, da Fremdadministration.


> 2) Du solltest deinem Array entweder numerische oder Alphanumerische Indizes geben. Ersetz 0 mit "Startseite", oder was auch immer.


Tatsächlich hilft das! Ich verstehe aber nicht ganz warum? Wie schon geschrieben  das Originalbeispiel auf dem gleichen Server auch mit der 0
@Johannes R.:
Frage: Ich habe jetzt einfach die 0 durch "Startseite" ersetzt, obwohl meine Startseite nicht index.php heißt (sondern "hauptseite.php"). Es klappt nun und das ist mir auch wichtig! Dennoch kann ich nicht nachvollziehen, warum gleiches Script einmal ein Problem hat und dann wieder nicht! Hast Du eine Erklärung für mich?

Danke für die Hilfe!
Gruß
Thom


----------

