Schon wieder "Undefined offset 0 in.."

fantalight

Grünschnabel
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

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:

PHP:
 if($PHP_SELF == $menuStruct[0]['root']){

Kann mir jemand sagen, warum das Coding nicht läuft?
Danke!
Thom
 
@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
 
Ich denke das müsste $_SERVER['PHP_SELF'] statt $PHP_SELF heissen.
PHP:
if($_SERVER['PHP_SELF'] == $menuStruct[0]['root']){
 
@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

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
 
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.
 
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
 
Zurück