PHP-Menü mit CSS -> Seiten in Menü laden

Davicito

Erfahrenes Mitglied
Ich hab mal wieder eine Frage an Euch,
ich hab mir ein Menü mit Untermenü gebastelt und mit CSS aufgepeppt.

PHP-Code -> Menü
PHP:
<nav>
            	 <!-- Inhalt des Layout-Headers-->                 				
				 <div class="Layout_header">
                	<img src="apache_pb.gif" />
                 </div>                
                   
                 <!-- Menüleiste-->                 
                 <div class="menu">              	
                	<ul>
                    <!-- Inhalt des Layout-Content-->
                 	<div class="menu_content">
                   		test
                 	</div>   
                		<li><a href="#">Mitarbeiter</a></li>
                		<ul>                        	
							<li><a href="Eingabe.php">Eingabe</a></li>
							<li><a href="MA-Update.html">Bearbeitung</a></li>
							<li><a href="MA-Ausgabe.php">Ausgabe</a></li>
                            
						</ul>
						<li><a href="#">Kategorie 2</a></li>
						<li><a href="#">Kategorie 3</a></li>
                        
						<li><a href="#">Kategorie 3</a></li>                        
					</ul>                               
                                     
                 </div> 
                  
			</nav>

Die CSS-Klassen sind in einer CSS-Datei outsourced.
Die Verlinkung mit <a href="bla.php"> bla </a></li> klappt auch, und wird auf die entsprechende Seite weitergeleitet.
Nun möchte ich aber, wenn ich schon ein Menü habe, dass ich nicht weiter geleitet werde, sondern das die Seite sich in mein Menü läd.

Wie könnte das realisiert werden mit include? Aber an welcher stelle? Sodass zu jedem Link die passende Seite in das Menü geladen wird .

Gruß.
 
PHP:
<nav>
    ...
    <!-- Parameter page an sich selber schicken -->
    <li><a href="meineSeite.php?page=eingabe">Eingabe</a></li>
    ...
</nav>

<?php
//Dateinamen aus dem Link nehmen und .php anhängen
$myPage = $_GET['page'] . '.php';

//TODO: verifizieren dass $myPage eine gültige eingabe ist

include($myPage);

?>
 
Abend Yaslaw,

hab deinen Code mal ausprobiert und bekomme folgende Meldungen:

Notice: Undefined index: page in C:\xampp\htdocs\menu.php on line 40

Warning: include(.php) [function.include]: failed to open stream: No such file or directory in C:\xampp\htdocs\menu.php on line 43

Warning: include() [function.include]: Failed opening '.php' for inclusion (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\menu.php on line 43

Was muss noch hin?

Gruß.

PHP:
...
<li><a href="Eingabe.php?page=Eingabe">Eingabe</a></li>
<li><a href="MA-Update.html?page=Bearbeitung">Bearbeitung</a></li>
<li><a href="MA-Ausgabe.php?page=Ausgabe">Ausgabe</a></li>
...

 <?php 
		//Dateinamen aus dem Link nehmen und .php anhängen
		$myPage = $_GET['page'] . '.php';

		//TODO: verifizieren dass $myPage eine gültige eingabe ist
		include($myPage);
?>
 
Zuletzt bearbeitet:
Was sagt uns denn die Fehlermeldung?
Undefined index - zu deutsch, nicht definierter Index (wenn man's mal wörtlich übersetzt).
Wo? In Zeile 40.
In Zeile 40 finden wir folgendes:
PHP:
$myPage = $_GET['page'] . '.php';

Wir finden das assoziative Array $_GET mit dem Index 'page'. Scheinbar ist der hier laut Fehlermeldung nicht definiert. (In der Praxis bedeutet dies 'page' taucht nicht in der URL auf). Um dieses Problem zu beheben müssen wir also zunächst prüfen ob 'page' im assoziativen Array $_GET liegt, ansonsten geben wir einen Standard wert mit.

PHP:
$myPage = isset( $_GET['page'] ) ? $_GET['page'] . '.php' : 'standardseite.php';

Mehr Infos findest du bei google unter "isset php", "ternärer Operator php".
 
Ok, ok... also ich prüfe mit isset($_GET['page']) erstmal, ob die globale Variable "page" existent ist... soviel wusste ich bereits... aber die Art und Weiße, dass man If-Abfragen mit ?-Zeichen und :-Zeichen schreiben kann, war mir bis jetzt neu! :-)

Also wenn "page" nicht existent ist und kein Empty vorhanden ist (page ist leer) soll eine Standardseite "index.php", mit einer PHP-Anweisung echo"Standardseite -> Fehler!"; ausspruckt, aufgerufen werden. So viel habe ich jetzt verstanden und es wird auch eine Standardseite aufgerufen...weil page entweder nicht existent war oder keine Seite in der menu.php-Datei zum öffnen übergeben worden ist...
Das ist mir auch klar... aber was ist nun an dem Konstrukt falsch? ich hänge doch mit
PHP:
<li><a href="MA-Ausgabe.php?page=Ausgabe">Ausgabe</a></li>
ein Empty an die Variable "page" an, die dann mit

PHP:
$myPage = isset( $_GET['page'] ) ? $_GET['page'] . '.php':'index.php';
und
PHP:
include($myPage);
geladen werden soll, oder verstehe ich das immer noch falsch?

Gruß.
 
Zuletzt bearbeitet:
An dem Konstrukt ist nichts falsch. Du musst allerdings erst auf den Link klicken, damit es funktioniert. (Oben in der Adresszeile stehen die GET Parameter).
index.php als Startseite wird dir höchstwahrscheinlich eine Endlosschleife bringen, da dort dann wieder die index.php inkludiert wird, usw.
 
Wenn ich in dem Menü auf den link klicke, wird die index.php (index ist eine andere Datei zur Testzwecken mit Fehlermeldung erstellt. Wird aber wieder gelöscht, da index.html existiert) als Standardseite geladen.
Wenn ich jetzt aber localhost/menu.php?page=eingabe.php eingebe, wird in dem menü die entsprechende seite geladen. muss ich denn nicht statt:
PHP:
...
        <li><a href="Eingabe.php?page=Eingabe.php">Eingabe</a></li>
	<li><a href="MA-Update.html?page=Bearbeitung.html">Bearbeitung</a></li>
	<li><a href="MA-Ausgabe.php?page=Ausgabe.php">Ausgabe</a></li>
...
das so:

PHP:
...
        <li><a href="menu.php?page=Eingabe.php">Eingabe</a></li>
	<li><a href="menu.php?page=Bearbeitung.html">Bearbeitung</a></li>
	<li><a href="menu.php?page=Ausgabe.php">Ausgabe</a></li>
...
damit immer Menu.php mit der enstprechenden Seite geladen wird?

Tappe da immer noch im Dunklen, weil so nur Eingabe funktioniert und die anderen beiden Menüpunkte nicht.
 
Zuletzt bearbeitet:
Hat sich erledigt, ich habe bei den Links, die nicht funktioniert hatten, falsche Dateinamen angegeben... Sorry :-)

Vielen Dank Euch
 

Neue Beiträge

Zurück