Übersichtsnavigation wie im Board

Danielku15

Erfahrenes Mitglied
Hallo.
Ich habe Folgendes vor: Ich lasse über einen Get-Variable meine Unterseiten in die Index.php includen (index.php?section=content.php&ID=3). Nun möchte ich folgene Ausgabe in den Header einfügen:
Home >> Artikel >> Tutorials >> PHP >> Einführung in OO-Programmierung​

Nur mir fehlt die Idee, wie ich dies realisiere. In der Index.php lasse ich bis jetzt die Get-Variable überprüfen und je nach Existenz der Datei einbinden:
PHP:
$section = $_GET['section'];
if( !$section ) {
	$section = "start.php";
} elseif( !file_exists('templates/'.$section) ) {
	$section = "error404.php";
}
...
<td>
<?php echo $pfad; ?>
</td>
...
include('templates'.$section);
...

In der Contetnt PHP geschiet folgendes: Entweder wird die Kategorieübersicht angezeigt (wenn keine weitere Get Variable vorhanden ist).
Oder es wird eine Unterkategorie angezeigt (wenn die Get-Variable Kat noch gesetzt ist)
Oder der Aktuelle Artikel (wenn die Get-Variable CID noch gesetzt ist)

Meine Datenbank sieht so aus:
Code:
Content_Kategorie:
+---+-----+------+------+
|ID | Typ | Name | Bild |
+---+-----+------+------+

Content_Inhalt:
+----+-----+-------+-------+-------+------+
| ID | CID | Titel | Autor | Datum | Text |
+----+-----+-------+-------+-------+------+

Mir fehlt echt die Idee, wie ich die Abfrage gestalten kann. Das Hauptproblem liegt dabei, dass der Pfad in der Index.php liegt und nicht in der content.php. Denn da könnte ich einfach den Kategorienamen oder den aktuellen Inhaltsname hinzufügen. Ich denke, ihr wisst was ich meine.
Ich hoffe, ihr könnt mir helfen. Schon mal danke im Voraus.

greez Daniel
 
Hi,

Du willst also, so wie hier im Forum, dir den aktuellen Aufenthaltsort auf deiner HP anzeigen lassen.
Also hier (und auch anderern Foren) ist das so gemacht:
Die Seite wird aufgerufen. Anhand der Thread ID werden die dazugehörigen Daten ausgelesen. Dazugehören Forum ID (fid) und Thread ID (tid). Diese fid kann wiederrum auf ein Unterforum verweisen. Dann wird diese ID ausgelesen (fid1), usw. Dann werden anhand all dieser IDs die dazugehörigen Namen ausgelesen und in der richtiger Reihenfolge ausgegeben.

Ich hoffe, dass hilft dir als kleiner Ansatz.

Gruß fanste
 
Das Prinzip verstehe ich schon nur das Problem ist folgendes: Die Daten werden ja in den Unterseiten ausgelesen (z.B. content.php ) und der Pfad des Aufenthalts befindet sich in der index.php. Und für jede Unterseite Abfragen hinzufügen obs nun eine Unterkategorie ist und dann alles auslesen ist nicht sehr sinnvoll.

mfg daniel
 
Das einfachste wäre, wenn der URL ein gewisses Muster aufweist, das die Verarbeitung vereinfachte. Denn würde es beispielsweie „/content/3/“ lauten, wäre die Auflösung wesentlich einfacher.
 
Das würde vom Prinzip her genau das selbe Problem liefern. Weil wenn ich eine derartige URL per Mod_Rewrite erstellen würde muss ich es Schlussendlich auch wieder auf index.php?content.php&Kat=1 oder index.php?content.php&CID=2 weiterleiten und wäre wieder am Anfang da das Script immer noch das selbe wäre.
Das Muster das dahintersteckt ist ja eigentlich:

index.php?section={Unterseite}&{weitere-Variablen-für-die-Unterseite}

Für die content.php wäre es eben
index.php?section=content.php&KID={Kategorie}&CID={InhaltsID}
 
Zuletzt bearbeitet:
Und damit suchst du dir wiederrum was aus der DB, oder? Also würde ich es so machen, wie ich es beschrieben hatte.
 
Es geht ja nicht nur um die simple Umschreibung der Anfragen, sondern um eine grundlegende Strukturänderung.
 
Wenn ichs so mach wie du gesagt hast muss ich für jede Unterseite eine Anfrage einbauen.

Wenn Section=Content.php --> Inhalt Auslesen -> Desssen Kategoriename auslesen...
Wenn Section=start.php --> Willkommen
Wenn Section=news.php --> News
Wenn Section=Kontakt.php --> Kontakt
Wenn Section=Impressum.php --> Impressum
...
Und da die Seite ja auf Unterseiten erweitert wird will ich nicht jedes mal ein Element hinzufügen. Ist es irgendwie möglich in den Unterseiten eine Variable zu setzen und diese schon vor dem includieren zu verwenden. Oder wie würdet ihr das lösen.Die Unterseiten sind ja nicht alle in der Datenbank gespeichert sondern eben auch als php-Files.

mfg daniel
 
Hallo,

ich nehme jetzt mal aus deiner Beschreibung an, dass die Ausgabe deiner Seite in den "Content"-Dateien erfolgt, also nicht in der index.php.
Probier doch mal folgendes:
In deiner index.php definierst du eine Variable
PHP:
$content = "";
und zwar bevor du deine Sektionsdatei einbindest. Dann lässt du diese in der Sektionsdatei auffüllen, also anstatt
PHP:
echo "<table width=\"xy\" ...>..CONTENT und solche Sachen..";
scheibst du
PHP:
$content .= "<table width=\"xy\" ...>..CONTENT und solche Sachen..";
An die Stelle in deinem Content, an der die Auflistung des aktuellen "Standortes" stehen soll, setzt du einen Platzhalter, z.B.
PHP:
$content .= "...</table><br />{_CURRENT_SECTION_}<br />...";
Wenn deine Sektionsdatei abgearbeitet ist, wird ja noch der "Rest" deiner indedx.php ausgeführt. Dort erstellst du eine Variable mit dem aktuellen Standort und tauschst diese gegen den Platzhalter aus:
PHP:
$content = str_replace("{_CURRENT_SECTION_}", $dein_standort, $content);
Und dann gibst du die Content-Variable einfach aus.

Hoffe dir geholfen zu haben.

MfG erik
 
Also irgendwie blick ich das ganze nicht durch. Ich sehe hier nur eine andere Methode die Unterseite einzubinden. Was bringt es mir wenn ich den Inhalt der Unterseiten in eine Variable schreibe und dann erst einbinden lasse.

Ich hab nun eine Idee. Hier ein Beispiel:

index.php
PHP:
 <?php
 // Unterseite holen //
 $section = $_GET["section"];
 if(!$section) { $section = "start.php"; }
 elseif(!file_exists('templates/'.$section)) { $section = "error.php"; }
 ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <title>Titel</title>
 </head>
 
 <body>
 Sie befinden sich hier: Home &laquo; <?php echo $pfad; ?><br />
 <?php
 	 include('templates/'.$section);
 ?>
 </body>
 </html>

content.php
PHP:
 <?php 
 // Kategorie aus Datenbank holen //
 ...
 $kategorie = $kat[0]['Name'];
 // Daten des Inhalts aus der Datenbank holen //
 ...
 $titel = $inhalt[0]['Titel'];
 // Pfad angeben //
 $pfad = "Content &laquo; ".$kategorie." &laquo; ".$titel
 ?>
 <table cellpadding="0" cellspacing="0" width="100%" class="rahmen">
 <tr>
 <td>
 <?php 
 echo $inhalt[0]['Text'];
 ?>
 </td>
 </td>
 </table>

Aufruf: index.php?section=content.php&ID=1

Die echte index.php und content.php sind natürlich komplexer. (Mit Abfragen ob nun die eine Kategorie angezeigt wird oder ein Inhalt in der content.pho bzw ein Design in der index.php). Ich wollte nun Fragen:
Wie kann ich die $path die in die Index.php bringen sodass ich sie im Pfad verwenden kann. Ich möchte nicht alle Unterseiten als Variable ($content) setzen und dann weiter oben im Quellcode schon includieren. Gibt es eine Möglichkeit oben in der index.php die Variable $path aus der content.php auszulesen sodass ich sie in der Ausgabe des Pfades verfügbar habe.

mfg daniel
 
Zurück