include oder was

Steglich

Aktives Mitglied
Thread Starter
Dabei seit
30.05.2003
Beiträge
206
Reaktionspunkte
0
Auf einer HTML Seite habe ich folgende PHP Zeilen eingebunden:
PHP:
<?php
$thisfile = substr(strrchr($_SERVER['PHP_SELF'], '/'), 1);
include('pmenu.php');
?>
In der pmenu.php Datei wird über simplexml_load_file auf eine XML Datei zugegriffen, in der Seitennammen und die entsprechenden Dateinamen hinterlegt sind. Diese werden in einem Menü als Links ausgegeben. Die Variable thisfile brauche ich, um die Aktuelle Datei im Menü mit den verlinkten Dateien abzugleichen, um den aktuellen Menü Eintrag per CSS hervorzuheben.

Wenn ich nun auf so einen Link klicke wird auch die entsprechende Seite angesteuert.
Allerdings wenn ich das dann 4 Mal mit jeweils einer anderen Seite mache wird mir die Datei pmenu.php gar nicht mehr includiert.

Seltsam ist, dass der Fehler unter Safari gar nicht auftritt, sondern nur unter Firefox 2.0 und IE 6.0.
Auch bei mir auf dem Server mit PHP 5.1 kein Problem, aber auf dem Kundenserver mit PHP 5.2.
Also ich weiß jetzt auch nicht mehr weiter :confused:
 
Reload

Nachdem ich dann zwei Mal Relaod im Browser angeklickt habe, wird mir die Datei wieder includiert. :confused:
 
Zweimal neu laden löscht den Cache der Seite und lädt komplett neu. Einfach ein Cache-Problem gewesen.
 
ja aber

Ja aber ich kann doch meinen Benutzern nicht zumuten, dass wenn das Menü nicht erscheint, die Seite zwei Mal neu zu laden? :rolleyes:
 
Listing

Hier einmal der Vollständigkeit halber das Listing von pmenu.php:
PHP:
<?php
if ($_GET['t'] !== "") {
	$t = (int)$_GET['t'];
} else {
	$t = 0;
}
/* load xml file */
if(file_exists("pmenu.xml")) {
	$menu = simplexml_load_file("pmenu.xml");
} else {
	echo("Fehler beim Laden der XML Datei");
	exit;
}

/* output pruduct menu tabs */
echo("<div id='tabs'>\n");
if ($t !== 0) {
	$counter = 1;
	foreach($menu->tab as $tab) {
		if ($counter == $t) {
			$actualtab = $tab;
			$selected = " class='selected'";
		}
		echo("\t<a href='" . $thisfile . "?t=" . $counter . "'" . $selected . "><div class='tab'>" . $tab['name'] . "</div></a>\n");
		$selected = "";
		$counter = $counter + 1;
	}
} else {
	$counter = 1;
	foreach($menu->tab as $tab) {
		foreach($tab->col as $col) {
			foreach($col->group as $group) {
				foreach($group->entry as $entry) {
					if ($entry->file == $thisfile) {
						$actualtab = $tab;
						$selected = " class='selected'";
					} 
				}
			}
		}
		echo("\t<a href='" . $thisfile . "?t=" . $counter . "'" . $selected . "><div class='tab'>" . $tab['name'] . "</div></a>\n");
		$selected = "";
		$counter = $counter + 1;
	}
}
echo("</div> <!-- tabs -->\n");

/* output products table */
echo("<div id='pmenu'>\n\t<table>\n\t<tr>\n");
foreach($actualtab->col as $col) {
	if($col['name'] == "left") {
		echo("\t\t<td class='left'>\n");
	} else {
		echo("\t\t<td class='right'>\n");
	}
	foreach($col->group as $group) {
		echo("\t\t\t<div class='group'>\n");
		echo("\t\t\t\t<h2>" . $group['name'] . "</h2>\n");
		foreach($group->entry as $entry) {
			if ($entry->file == '') {
				$file = "#";
			} else {
				$file = $entry->file;
			}
			if ($file == $thisfile) {
				$selected = " class='selected'>? ";
			} else {
				$selected = ">";
			}
			echo("\t\t\t\t\t<p><a href='" . $file . "'" . $selected . $entry->name . "</a></p>\n");
		}
		echo("\t\t\t</div> <!-- group -->\n");
	}
	echo("\t\t</td>\n");
}
echo("\t</tr>\n\t</table>\n</div> <!-- pmenu -->\n");

?>
Wahrscheinlich steckt das Problem oben bei der Passage mit dem simplexml_load_file. Entweder ist der xml Parser so langsam, oder sein Zeiger bleibt hängen, wenn der Server überlastet ist. Keine Ahnung. Auf meinem Server habe ich ja auch keine Probleme.
 
Zurück
Oben Unten