Autor |
Nachricht |
schattenjaeger
Threadersteller
Dabei seit: 03.11.2005
Ort: Kiel
Alter: 34
Geschlecht:
|
Verfasst So 01.04.2007 16:20
Titel Navigation mit PHP |
|
|
Hallo Leute,
also ich bin in PHP nicht das Ass und wollte euch einmal fragen, in wie fern man folgenden Gedanken realisieren kann.
Ich habe eine Grafiklastige Seite. Grafiken verändern sich nicht, nur content verändert sich.
Meine Navigation soll Tags bekommen (Variablen?). Wenn ein Punkt angewählt wird, dann soll der Content ausgetauscht werden.
if ($navi == "1") {
include (home.html);
}
elseif ($navi =="2") {
include (home1.html);
}
Zwei fragen stehen offen:
funktioniert das mit diesem oben genannten Schema? Wenn Ja, wie gebe ich den einzellnen Navigationsbildern dann die ID's?
Schon einmal vielen dank für eure Hilfe
|
|
|
|
|
rob
Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht:
|
Verfasst So 01.04.2007 16:58
Titel
|
|
|
Ja, vom Prinzip her eigentlich schon mal gar nicht so verkehrt...
Du hast deine index.php und setzt dort deine Links. Jedem Link übergibst du dann einen Parameter, welche Datei dementsprechend eingebunden werden soll.
Code: | <a href="index.php?site=home" title="zur Homepage">Home</a><br>
<a href="index.php?site=links" title="zur Linkliste">Linkliste</a><br>
<a href="index.php?site=impressum" title="zum Impressum">Impressum</a>
|
Und entsprechend diesem Parameter bindest du dann deine Dateien ein.
Um ellenlange if-Kaskaden zu vermeiden und/oder damit du einen Standardwert angeben kannst, würde ich das lieber mit einer switch-Anweisung machen.
Code: | <?php
switch ( $_GET['site'] )
{
case "home":
include( "home.inc.php" );
break;
case "links":
include( "links.inc.php" );
break;
case "impressum":
include( "impressum.inc.php" );
break;
default:
break;
}
?> |
Zwischen dem default: und dem letzten break; könntest noch eine include-Anweisung reinpacken.
Wenn dann deine Seite mit keinem Parameter (oder mit irgendeinem, den du gar nicht eingeplant hast) aufgerufen wird, dann wird dieser Standardwert genutzt und die entsprechende Seite eingebunden.
|
|
|
|
|
Anzeige
|
|
|
therapiekind
Dabei seit: 14.03.2006
Ort: In deinem Kopf
Alter: -
Geschlecht: -
|
Verfasst So 01.04.2007 17:04
Titel
|
|
|
Schon der richtige Weg, aber ich bevorzuge dafür 'n switch-Statement, ist übersichtlicher: Code: | switch($navi)
{
case "1":
include(home.html);
break;
case "2":
include(home1.html);
break;
default:
include(home.html);
break;
} |
Das mit den DIVs und IDs verstehe ich nicht so recht, aber ich vermute, dass du in jeder "includeten" HTML-Datei das Menü hast. Falls ja, dann einfach das Menü in die Startseite auslagern und nur den Inhalt wie oben beschrieben einfügen.
Also z.B. die index.php als komplette Seite, vereinfacht so: Code: | <html>
<body>
<ul>
<li><a href="index.php?navi=1">Mein</a></li>
<li><a href="index.php?navi=2">Menü</a></li>
</ul>
<?php
switch($navi)
{
case "1":
include(home.html);
break;
case "2":
include(home1.html);
break;
default:
include(home.html);
break;
}
?>
</body>
</html> |
home.html sieht dann vielleicht so aus: Code: | <div>
<p>Die Inhalte</p><img src="bildchen.png alt="" />
</div>
</div> | Ohne DTD & Co, da diese sonst in der einbindenden index.php doppelt vorhanden wären.
[edit]Da war jemand schneller! [/edit]
Zuletzt bearbeitet von therapiekind am So 01.04.2007 17:49, insgesamt 2-mal bearbeitet
|
|
|
|
|
schattenjaeger
Threadersteller
Dabei seit: 03.11.2005
Ort: Kiel
Alter: 34
Geschlecht:
|
Verfasst So 01.04.2007 17:14
Titel
|
|
|
vielen dank für die schnelle Hilfe. damit komme ich auf jeden fall weiter.
|
|
|
|
|
rob
Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht:
|
Verfasst So 01.04.2007 17:16
Titel
|
|
|
Ja, liebes therapiekind ich war schneller!
Und deine Version wird vermutlich bei den meisten Hostern nicht mehr funktionieren.
Im Normalfall wird in der php.ini (aus Sicherheitsgründen) die Einstellung register_globals auf off gesetzt.
Damit gibt es dann deine Variable $navi nicht mehr. Die müßte man sich dann über $_GET['navi'] holen.
Aber selbst, wenn es so funktionieren sollte, wäre es in jedem Fall sinnvoller, das Superglobal-Array $_GET zu nutzen. Das sollte man sich bei der Programmierung direkt angewöhnen - auch wenn es halt teilweise noch anders funktioniert.
Die Hoster, die register_globals auf on stellen, machen das ja nur damit alte Scripte noch laufen. Ist aber recht unsicher und unschön.
EDIT (Nachtrag):
Und was mir noch dazu einfällt:
Um die Links dann später ein wenig suchmaschinenfreundlicher zu gestalten, könntest du mit dem rewrite-Modul des Apache-Webservers arbeiten (mod_rewrite).
Damit hättest du die Möglichkeit, aus Links wie index.php?site=home dann home.html zu machen.
Der Server schreibt die URL dann intern um.
Zuletzt bearbeitet von rob am So 01.04.2007 17:21, insgesamt 1-mal bearbeitet
|
|
|
|
|
schattenjaeger
Threadersteller
Dabei seit: 03.11.2005
Ort: Kiel
Alter: 34
Geschlecht:
|
Verfasst So 01.04.2007 17:26
Titel
|
|
|
Darf ich dann noch mal als letztes blöd fragen, wie ich den mod_rewrite mache? Wie binde ich den dann vernünftig ein?
|
|
|
|
|
rob
Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht:
|
|
|
|
|
schattenjaeger
Threadersteller
Dabei seit: 03.11.2005
Ort: Kiel
Alter: 34
Geschlecht:
|
Verfasst So 01.04.2007 17:40
Titel
|
|
|
vielen dank für deine hilfe rob.. jetzt kann ich ohne probleme in die woche starten
|
|
|
|
|
|
|
|
Ähnliche Themen |
Navigation - IE6 + 7
CSS Navigation
[PHP, XML] Navigation...
CSS: Navigation
[CSS] DIV Navigation
navigation
|
|