css menu mit image für aktuelle Seite

xthetronx

Erfahrenes Mitglied
Hallo zusammen,

sorry für den Titel, aber mit viel keine bessere Beschreibung ein.

Wie ich ein CSS-Menu, mit Images, für hover etc. erzeuge weiss ich.

Ich möchte mir jetzt ein CSS-Menu erstellen, welches ich per php-include in die Seite einfüge.
Wenn ich jetzt auf einen Link, z.B. "Kontakt" klicke, soll auf der Kontakt-Seite dann auch der "Kontakt" Button hervorgehoben sein.
Da ich aber die Navigation includieren möchte, besteht ja nicht die Möglichkeit auf der jeweiligen Seite das Image auszutauschen.

Besteht hier nur die Möglchkeit über einen php-Parameter zu lösen oder gibt es da auch eine CSS Möglichkeit?

Danke
 
Am besten lässt du das Navigationsmenü mit PHP generieren und verlgiechst die Adressen mit der aktuell angefragten (siehe $_SERVER['REQUEST_URI']-Variable).
 
Danke Gumbo für Deinen Hinweis, aber kannst Du mir das vielleicht etwas genauer schildern?
Bin leider etwas eingerostet, was PHP betrifft und muss mich erst wieder einarbeiten.
Gibt es vielleicht ein Beispiel, wo man sich die Vorgehensweise anschauen kann?

Danke
 
Ein einfaches Beispiel:
PHP:
$array = array(
	'Startseite' => '/',
	'Seite A'    => '/a',
	'Seite B'    => '/b',
);

echo '<ul id="nav">';
foreach( $array as $key => $value ) {
	echo '<li';
	if( $value === preg_replace('/\?.*/', '', $_SERVER['REQUEST_URI']) ) {
		echo ' id="current"';
	}
	echo '>' . $key . '</li>';
}
echo '</ul>';
 
Ich habe meine Navigation jetzt so gelöst:
Vielen Dank für Deinen Lösungsvorschlag Gumbo.

Hier mein Lösungsweg, falls mal jemand ähnliches vor hat.

Das Script macht folgendes:

Beim ersten Aufruf sind alle "Unterlinks" nicht sichtbar.
Wird dann ein Hauptlink angeklickt und es befinden sich "Unterlinks" darin, werden diese aufgelistet.
Wird dann einer dieser "Unterlinks" angeklickt, wird beim neu laden, dieser Link fett dargestellt.
Das Ganze kann man dann später natürlich noch mit CSS schöner gestalten.:)
Code:
<? session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php
include("inc/db.php");

$menu_id		= $HTTP_GET_VARS["ID"];
$untermenu_id 	= $HTTP_GET_VARS["ID_Menu"];
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Menu</title>
</head>

<body>
<form method="post" action="" target="_self">
<?php
$strSQL	= "SELECT * FROM tabmenu ORDER BY ID";
$rs = mysql_query($strSQL);
$count = mysql_num_rows($rs);

$i = 0;
do {
	$res = mysql_fetch_assoc($rs);
	if(($menu_id == $res["ID"])&&($untermenu_id == "")){//stellt das oberste Menu fett dar, wenn keine Untermenu ID mit übergeben wurde.
		echo "<b><a href='menue.php?ID=".$res["ID"]."' target='_self'>".$res["menu"]."</a></b><br>";
	}else{
		echo "<a href='menue.php?ID=".$res["ID"]."' target='_self'>".$res["menu"]."</a><br>";	
	}
	if($res["ID"] == $menu_id){//wenn die übergebene ID der ID aus der Datenbank entspricht
		$strUntermenu = "SELECT * FROM tabuntermenu WHERE ID_Menu =".$res["ID"]."";
		$rs2 = mysql_query($strUntermenu);
		$count2 = mysql_num_rows($rs2);
		$i2 = 0;
		if($count2 != 0){//wenn Untermenus vorhanden sind
			do{
				$res2 = mysql_fetch_assoc($rs2);
				if($untermenu_id == $res2["ID"]){//wenn die übergebene ID_Menu der ID aus der Datenbank entspricht
					echo "&nbsp;&nbsp;<b><a href='menue.php?ID_Menu=".$res2["ID"]."' target='_self'>".$res2["untermenu"]."</a></b><br>";
				}else{
					echo "&nbsp;&nbsp;<a href='menue.php?ID=".$res["ID"]."&ID_Menu=".$res2["ID"]."' target='_self'>".$res2["untermenu"]."</a><br>";
				}
				$i2++;
			}while($i2 < $count2);
		}
	}
	$i++;
}while($i < $count);
?>
</form>
</body>
</html>

Um das ganze nachbauen zu können, benötigt man eine kleine Datenbank, da ich die Daten aus der DB hole.
Zwei Tabellen sind von Nöten.
1. tabmenu
ID (Autowert)
Menu (Linknamen)

2.tabuntermenu
ID (Autowert)
ID_Menu (1 zu n Beziehung zur tabmenu)
untermenu (Namen der Untermenus)

Das wars dann auch schon.

Gruß
 
Zurück