Probleme mit PHP Navigation, allg. Verständnisfrage

gabrielleHH

Grünschnabel
Hi Leuts,

gleich vorweg, meine PHP Kenntnisse halten sich in Grenzen und ich habe die gesamte Rubrik 'PHP' inkl. der Tuts durchgeackert, sowie Google bemüht, aber offensichtlich blick ich es einfach nicht.

Meine HP http://www.xenatrek.de ist mittlerweile mächtig angewachsen.
Ich habe diverse Unterverzeichnisse wo sich content in Form von htm Seiten befindet (hätten auch txt sein können).
Die Struktur sieht in etwa so aus:
index.php --> dir deutsch
--> dir englisch
--> dir downloads
--> dir funstuff
--> dir etc.

dir deutsch --> dir xena
--> dir computer
--> dir etc.

dir xena --> dir actor
--> dir character
--> dir etc.

in den jeweiligen directories befinden sich dann die jeweiligen htm Dateien.

Bisher habe ich es so gemacht das ich für jedes Hauptdirectory, z. B. xena oder computer
eine neue index.php erstellt habe die eine exakte copy der index-d.php ist. Das gleiche gilt für die Navigations-Datei und die content.

Jetzt bin ich aber dabei die Seite einer weiteren Änderung zu unterziehen und muß feststellen das ich doch mehr Dateien anfassen und ändern muß als gedacht. Das ist für mich im Moment mit einem erheblichen Mehraufwand verbunden. Zumal ich durch einen Auslandsaufenthalt, derzeit nicht über optimalen Internet/FTP Zugang verfüge.

Mein Grundgedanke ist/war die Ordnerstruktur, wegen der Übersichtlichkeit beizubehalten, aber statt mehrerer Indexseiten in denen der jeweilige Content dargestellt wird, alles über eine Indexseite zu includen.

Das hat aber bisher mit den hier gefundenen Infos nicht funktioniert. Ich weiß also jetzt gar nicht ob dies überhaupt möglich ist.

Mein index-d.php Grundgerüst:

HTML:
<html>
<head>
<body>
<div class="head">
<?php
include "nav_o.htm";
?><br>
  <div id="container">
      <div id="inner">
      
      <div id="left">
      <?php
      include "nav_xena.htm";
      ?>
      </div>
      
      <div id="right"></div>
      <div id="center">
<?php
include "content.php";
?>
      </div>
      
      <div class="clear"></div>
      
    </div>
  </div>
</div>

<div class="foot"><p>Design and Layout by Gabriele - Copyright 2004-<?php echo date("Y");?></p></div>
</body>
</html>

Meine content.php:

PHP:
<?php
// die Datei content.php

if(isset($_GET['section'])) {
  switch($_GET['section']) {
  
  //beginn eintr&auml;ge Hauptnavi linke Seite (Xena)
    case "story":
      include "./story.htm";
      break;
      
    case "beginn":
      include "./wie.htm";
      break;  
      
    case "bilder":
      include "./bilder.htm";
      break;
      
    case "episode":
      include "./episode.htm";
      break;
      
    case "charaktere":
      include "./charakter/charakter.htm";
      break;
      
    case "actor":
      include "./actor/actor.htm";
      break;
      
    case "goetter":
      include "./gods/goetter.htm";
      break;
      
    case "orte":
      include "./orte/orte.htm";
      break;  
      
    case "wissen":
      include "./wissen.htm";
      break;  
      
    case "funstuff":
      include "../funstuff/funstuff.htm";
      break;
      
    case "downloads":
      include "../download/download.htm";
      break;
      
    case "merchandise":
      include "./merchandise.htm";
      break;  
      
    case "links":
      include "./links/links.htm";
      break;
      
    case "xenalink":
      include "./links/xenalinks.htm";
      break;

noch endlos weitere case einträge....

Meine navi.htm (per include in div container left eingebunden):

HTML:
<p>
<a href="xena.php?section=beginn">Xena Addict</a> <span class="invis">|</span>
<a href="xena.php?section=story">Die Story</a> <span class="invis">|</span>
<a href="xena.php?section=bilder">Bilder Gallerie</a> <span class="invis">|</span>
<a href="xena.php?section=episode">Episoden Guide</a> <span class="invis">|</span>
<a href="xena.php?section=charaktere">Charaktere</a> <span class="invis">|</span>
<a href="xena.php?section=actor">Schauspieler</a> <span class="invis">|</span>
<a href="xena.php?section=goetter">Die G&ouml;tter</a> <span class="invis">|</span>
<a href="orte/orte.php">Die Orte</a> <span class="invis">|</span>
<a href="xena.php?section=wissen">Wissensecke</a> <span class="invis">|</span>
<a href="../../funstuff/funstuff.php">Funstuff</a> <span class="invis">|</span>
<a href="../../downloads/download.php">Downloads</a> <span class="invis">|</span>
<a href="xena.php?section=merchandise">Merchandise</a> <span class="invis">|</span>
<a href="xena.php?section=sammlung">Meine Sammlung</a> <span class="invis">|</span>
<a href="xena.php?section=links">Meine Links</a> <span class="invis">|</span>
<a href="xena.php?section=fan">Fan Corner</a> <span class="invis">|</span>
<a href="../../ecard/cards.php">E-Cards</a> <span class="invis">|</span>
</p>

So, das war jetzt wohl mehr als Ausführlich (und wahrscheinlich gar nicht nötig), aber der Form halber.

Was ich jetzt wissen möchte: Ist es überhaupt möglich ALLE meine files über eine einzige index.php laufen zu lassen OHNE Datenbankanbindung?
Wenn ja kann ich die bisher verwendeten navi.htm und content.php weiter dazu nutzen, bzw. was muß geändert werden?

Wenn dies absolut nicht möglich ist, also nur mit DB, wie muß so ein Konstrukt aussehen? Bzw. welche Änderungen an den bisher bestehenden Seiten sind nötig (es sind mehrere Hundert, die ich nicht unbedingt alle anfassen wollte).

Wäre für jeden Tipp dankbar, da ich bisher absolut nicht weiterkam (vielleicht bin ich nach zwei Tagen des suchens, forschens und testens auch schon zu müde).

Vielen Dank im voraus,
GabrielleHH
 
Und wo genau liegt dein INCLUDE-Problem? Das müsste einfach gehen....
in die "kopierten" index.php's müsste dann rein
<?php
include '../../index_d.php'
?>

Oder habbich dich jetzt falsch verstanden?
mfg,
Orbit
 
Zuletzt bearbeitet:
Um es so zu machen, dass du dein Konstrukt nicht ändern musst sollte ein Link so zum Beispiel aussehen.

PHP:
< a href="index.php?section=story">Story</a>

Du musst jedoch JEDEM Link eine GET-Variable mitgeben, also das alles ab dem Fragezeichen und du musst mit JEDEM Link die Seite aufrufen, in der du includen willst.#

Hoffe konnte erstma weiterhelfen :)
 
So wie ich das verstanden hab will er einfach nur ein Dynamische Menü haben.
Das von einer Index seite geladen wird.

Momentan hat er ja viele index seiten mit unterschiedlichen statischen Menüs und das soll jetzt nun zusammen gefasst werden auf 1 Menü strucktur wenn ich das richtig verstanden hab.
Sowas kann man lösen entweder mit einer Datenbank oder einer xml datei zur not geht auch eine textdatei.

Sie dir mal meine Homepage an dort hab ich so ein Dynamisches Menü erstellt das über die Datenbank läuft.

Endlos erweiterbare untermenüs und Hauptmenüs.
http://www.hs-arbeitsschutz.com/OtterHalbschuhe_66_4_35_26.html

Ist das sowas in der Art was du Gemeint hast?

Mfg Splasch
 
Hi Leuts,

erst mal vielen Dank für die vielen Antworten.
Noch mal zum Verständnis. Ich habe KEINE Datenbank.
Ich habe aber mehrere Index Seiten. Für jede Rubrik eine.
Auf jeder Index-Seite wird die obere Navigation zu den Rubriken als nav_o.htm includet.
Ebenso gibt es eine linke Unter-Navigation, die natürlich für jede Rubrik anders aussieht. Auch diese wird auf der jeweiligen Index.php includet.

Mein Gedanke: Ich möchte statt vieler indexseiten nur noch EINE haben. Scheiterte aber aufgrund der Ordnertiefe an der linken Navigation. Da die Pfade irgendwie immer nicht richtig waren. Entweder bekam ich einen 404 error, oder aber er stellte mir die Inhalte oberhalb des Headers dar.
Da ich das Tutorial von Niels nicht ganz geblickt hatte und auch die eine oder andere Idee, die hier im Forum geschrieben wurde nicht so richtig funktionierte, habe ich mich halt gefragt ob dies tatsächlich nur über eine DB Anbindung funktionieren würde und was ich in diesem Fall tun müsse.

@splasch: Ja soetwas in der Art wäre schon nicht schlecht. Allerdings stellt sich mir hier dann die Frage wieviel Arbeit es machen würde soetwas für meine HP umzusetzen.

Soweit erst mal von mir und vielen Dank für Eure Mühe.

PS
Ich bin ein Mädel ;-)

Gruss,
Gabster
 
Also eine datenbank brauchst du dafür auf keinen Fall.
Machs doch wirklich über get..
sprich du holst dir aus der URL ne variable zB sitename; dann kannst du zB per switch-abfrage den Pfad zu dewr jeweiligen seite bestimmen.
das gäbe dann sowas:
für sitename="seite1" ist path="seite1/includes/" oder so...
und dann kannst du über diesen pfad dann alle includes regeln...

hoffe ich drücke mich nicht so unverständlich aus wie mein Mathelehrer:-)

mfg,
Orbit
 
@splasch: Ja soetwas in der Art wäre schon nicht schlecht. Allerdings stellt sich mir hier dann die Frage wieviel Arbeit es machen würde soetwas für meine HP umzusetzen.

Viel Arbeit ist das nicht eher eine Denkaufgabe. Das ganze läst sich leicht mit einer Rekutiven Funktion lösen.

Fals du keine Db verwenden willst dann mußte halt die funktion nur ein wenig umschreiben. Wenn du willst kann ich dir die funktion posten die mometan für eine Db angepasst ist.

Die Änderung auf eine andere Datenquelle ist nicht aufwendig fals du keine db haben willst.
Wie schon vorhin erwähnt kanst du dazu auch eine xml datei nutzen. Hat den Vorteil das jeder leicht dann die Menüs ändern kann ohne Programmier kentnisse zu haben.
Alternative kanst du natürlich auch einfach ein großes Array erstellen in dem all deine links stehen bwz menü namen. Ist aber dann nicht so einfach handzuhaben wie bei einer xml Datei oder einer db.

Machs doch wirklich über get..
sprich du holst dir aus der URL ne variable zB sitename; dann kannst du zB per switch-abfrage den Pfad zu dewr jeweiligen seite bestimmen.

Das mit dem Get Switschmenü hat ein Nachteil und zwar wird dadurch die Index seite unötig groß und hat daher dann auch längere Ladezeiten.
Da dann immer gleich alle seiten im Quellcode stehen würde.Besser ist es nur das was man braucht auch wirklich reinzuladen. Damit vermeidet man unötigen palast im Quellcode.

Mfg Splasch
 
Zuletzt bearbeitet:
Zurück