# Navigation über die URL "index.php?section=index"



## M@rk (17. Juli 2004)

Hallo Leute,

ich muß noch einmal das Thema: Navigation über die URL "index.php?section=index" aufgreifen. Ich baue seither meine Web-Sites auf indem ich einGerüst aus DIV's mache und jeweils den inhalt include. D.h. einen header, indem meistens irgendwelche Grafiken und Logos sind. Den Inhalts-DIV indem Navigation und Inhalt sich befindet und einem footer mit impressums-link, webmaster, usw. Diese werde dann per include zusammen gesetzt.

Was mich jetzt interessieren würde, da ich auch erst fortgeschrittener Anfänger bin, wie ich diese Navigation jetzt unsetzen muß, da mir der Aufbau mit diesem Tut noch nicht ganz klar ist. Was mich auch noch interessieren würde ist der Vorteil dieses Aufbau's.

Und gibt es nicht noch eine andere Möglichkeit als dies config.php von Hand aufzubauen?

Gruß M@rk


----------



## Harrier (17. Juli 2004)

Ich bin ehrlich gesagt gerade ein bischen zu faul das Tutorial durchzulesen! Ich würde es in etwa so machen (bzw mache es ähnlich):


```
$site=$_REQUEST[site];
if(!isset($_REQUEST[site])) $site="news";
$include=array(
"news"  =>  "news.php",
"tutorials"  => "tuts.php",
"forum"  => "forum/index.php");
$titles=array(
"news"  =>  "Neuigkeiten",
"tutorials"  => "Tutorials",
"forum" => "Forum/Board");
$keys=array_keys($include);

//MENU:
foreach($keys as $temp) {
 echo "<a href=\"index.php?site=".$temp."\">".$titles[$temp]."</a><br>";
}

@include($include[$site]);
```
zu Behinn wird erstmal festgelegt was überhaupt geladen werden soll. Falls der User auf nen Link geklickt hat ($_REQUEST[site]) wird eben der entsprechende Teil als aktuelle Seite gespeichert ($site). Genauer gesagt wird eben gespeichert dass momentan beispielsweise die News geöffnet werden sollen. Falls keine site in der URL übergeben wurde wird einfach "news" genommen.

Momentan gibt es die Bereiche "news","tutorials" und "forum". Diese verwenden wir als Schlüssel in 2 Arrays. In $include werden die Dateinamen gespeichert, in $titles die Bezeichnungen, wie sie im Menü oder wenn man will auch im <title>-Tag stehen. In $keys werden die Bereiche gespeichert. $keys könnte man in dem Fall auch so anlegen:
$keys=array("news","tutorials","forum"); << Das wird hier autom. errechnet. Einfach alle Feldnamen des Arrays $include. 

Danach wird jeder Menupunkt angezeigt, was am Schluss so aussieht:
<a href="index.php?site=news">Neuigkeiten</a><br>
<a href="index.php?site=tutorials">Tutorials</a><br>
<a href="index.php?site=forum">Forum/Board</a><br>

Am Schluss wird der Inhalt der entsprechenden Datei includet. Welche Datei das sein soll ist bereits in $site gespeichert und muss nur noch über include($include[$site]); aufgerufen werden. 

Wenn dann $site="news" ist 
würde das so aussehen:
include($include["news"]);
=
include("news.php");
das macht aber alles der Computer 

Ich hoffe ich hab dich jetzt net noch mehr verwirrt ^^ CU

//EDIT:
Statt site=news kann man nat. auch section=news machen .... man muss dann eben den Script entsprechend anpassen!


----------



## M@rk (17. Juli 2004)

Hallo Harrier,

vielen Dank für Deine ausfühliche Antwort. Ehrlich gesagt muß ich aber alles erst mal verdauen, was du so erklärt hast, denn beim ersten Lesen bin ich noch nicht so ganz durchgestiegen...

Ich werde mich jetzt mal ranmachen und sehen wie weit ich komme. Noch eine kurze Frage. Wie muß jetzt eigentlich meine Konstruktion aussehen, bzw. kann ich mein Layout so beibehalten und eben dann den mitleren Bereich mit dem Inhalt über diese Weise managen?


Gruß M@rk


----------



## Harrier (17. Juli 2004)

Ich versteh leider net 100%ig was du meinst! Aber eigentlich sollte an Design-Wünschen alles drin sein. Meinst du, dass du deine aktuelle Seite behälst und einfach die Inhalte mit dem System vertauschst? 

Also es sollte gehen! Da wo du bisher per HTML einfach alles inhaltliche gemacht hast kommt nun include($include[$site]);
und da wo das Menu ist 
foreach($keys as $temp) { 
echo "<a href=\"index.php?site=".$temp."\">".$titles[$temp]."</a><br>"; 
} 
Dann sollte das gehen!

Eine etwas übersichtllichere Variante wäre übrigens folgende:

```
$site=$_REQUEST[site];
if(!isset($_REQUEST[site])) $site="news";

if($site=="news") include("news.php");
if($site=="tutorials") include("tutorials.php");

echo "<a href=\"index.php?site=news\">Neuigkeiten</a><br>
<a href=\"index.php?site=tutorials\">Tutorials</a><br>";
```
Das wäre so ziemlich die einfachste Methode. Die If-Anweisungen könnte man auch mit switch ersetzen. Ich würde aber früher oder später auf Arrays umseigen!

Auch eine Möglichkeit:

```
$site=$_REQUEST[site];
if(!isset($_REQUEST[site])) $site="news";
$sites=array("news","tutorials","forum");
$titles=array("News","Tutorials","Board");
$include=array("news.php","tutorials.php","forum/index.php");

for($i=0;$i<count($sites);$i++) {
echo "<a href=\"".$sites[$i]."\">".$titles[$i]."</a><br>";
}

include($include[$site]);
```

Die foreach bzw for-Schleifen sind jeweils immer das Menu. Das include() ist die Stelle wo der Inhalt hinkommt.

Es gibt ne Menge Möglichkeiten! Ich sollte aufhören darüber nachzudenken


----------



## M@rk (17. Juli 2004)

Hallo Harrier,

ganz genau, ich will meinen bisherigen aufbau so bebehalten und nur den Inhalt auf diese Art austauschen. Aber wie bereits gesagt bin ich noch im fortgeschrittenen Anfänger Stadium und muß erst mal das verstehen was du als Profi hier geschrieben hast...

Ich werde es mal versuchen und falls ich damit Probleme habe mich einfach wieder melden...


Gruß M@rk


----------



## Harrier (17. Juli 2004)

Yo! Tu das! Als Profi würde ich mich übrigens net bezeichnen


----------



## M@rk (17. Juli 2004)

... keine falsche Bescheidenheit...



Gruß M@rk


----------



## Harrier (17. Juli 2004)

Okay! Ich bin ein Gott! Zurfieden?


----------



## Mundilo (27. Januar 2009)

Hallo,

ich habe meine links in einer externen css-Datei als .class wie folgt formatiert:


```
a.menulinks { 
	display:block; 
	font-size:16px; 
	font-weight:bold;
	background-image: url(grafix/nav_links_blau.gif);
       width:130px; height:40px;
	padding-right: 1px;
	text-align: center; 
	text-decoration: none; 
	line-height: 2em;
	}

a.menulinks:link 	{ color: #FFFFFF; background-color:transparent; }
a.menulinks:visited	{ color: #FFFFFF; background-color:transparent; }
a.menulinks:hover	{ color: #000066; background-image: url(grafix/nav_links_weiss.gif); font-style: italic; }
a.menulinks:active	{ color: #CCCCCC; }
```

Damit bekomme ich mit zwei einfachen Grafiken für jeden link automatisch einen Hovereffekt - da nicht jeder link separat formatiert/mit einer eigenen Grafik belegt wird, erhöht das m.E. die Performance und es ist eigentlich egal wie viele links eingebaut werden.

Leider versage ich völlig wenn ich die links im Menü hier vom Script damit formatieren will:

```
foreach($keys as $temp) {
 echo "<a href=\"index.php?site=".$temp."\">".$titles[$temp]."</a><br>";
}
```

Wie bekomme ich das hin?


----------



## Maik (27. Januar 2009)

Hi,

im <a>-Tag muß das Attribut class="menulinks" angegeben werden:


```
foreach($keys as $temp) {
 echo "<a href=\"index.php?site=".$temp."\" class=\"menulinks\">".$titles[$temp]."</a><br>";
}
```


mfg Maik


----------



## Mundilo (27. Januar 2009)

man bin ich bescheuert....

ich habe das wie folgt geschrieben:


```
... echo "<a class=  ....
```

Vielen Dank - habe den Wald vor Bäumen nicht gesehen....


----------

