Module via URL in Hauptseite einbinden

Grufta

Grünschnabel
Hallo,
Ich bastel zur Zeit gerade ein bisschen mit PHP usw. herum und nun stehe ich vor einem Problem. Ich braüchte folgendes Script, im Anhang befindet sich eine Skizze zur besseren Verständlichkeit.

Ich stell mir das ganze so vor das man eben eine index.php hat. In dieser Datei ist dann das Script das die einzelnen Module bzw. Inhalte aufruft.
Die Inhalte befinden sich zuerst im Ordner /Module/ und die jeweiligen Dateien, als Beispiel alle "News"- Dateien, sprich news.php, newsnew.php, newsedit.php und newsdel.php befinden sich dann im Unterordner News. (/Module/News/news... .php)

Das Problem ist nun ich würde die einzelnen Seiten z.b. gbooknew.php nun über die URL in der index.php aufrufen. Sprich ich gebe ein .../index.php?modul=gbooknew, und dann öffnet sich die ngbooknew.php in der index.php "eingebunden".
Das Ding ist halt das Script muss wissen wenn die Datei mit z.b. gbook beginnt muss er im "GBook"-Ordner nach der gbook.. .php suchen.

Hoffe das ist soweit verständlich und ihr könnt mir weiterhelfen.

Mfg
Grufta

des.jpg
 
Hallo,

warum gibst Du in der Url nicht Modul und Action mit?

Von der Logik her:

index.php?modul=gbook&action=new

Und in der Verarbeitung:

Wenn Action nicht mitgegeben wurde, kannst Du $modul/$modul.php includen,
ansonsten $modul/$modul$action.php


Gruß
aerolimb
 
Okay, wenn man das so machen kann wäre das natürlich Spitze, aber auch für diese Lösung bräuchte ich Hilfe. Außerdem steht dann immernoch die Frage im Raum wie ich am besten auf die "Inhalte" über die index.php zugreife und wie er den richtigen Ordner wählt.
 
Hallo,

Du kannst andere Dateien mit include("Dateiname") einbinden.

Wenn diese nun ein printf() enthalten, wird direkt etwas beim include(), ausgegeben. Wenn die eingebundenen Dateien Funktionen enthalten sollten, müssen diese eben nur aufgerufen werden.

Über die Variablen $_GET["module"] und $_GET["action"] hast Du Zugriff auf die get-Variablen in der URL, so dass Du Dir den Pfad zu der Datei zusammen bauen kannst.

Schau Dir dazu auch mal die Dokumentation zu include an:
http://de3.php.net/manual/en/function.include.php

Gruß
aerolimb
 
Ah super Danke für die Hilfe, hab mir jetzt einfach Script gebastelt das via GET übergabe alle Seiten aufrufen kann :)

Danke nochmal
 
Hallo,

das, was du am Anfang wolltest, wäre eigentlich ganz einfach zu realisieren:

Du nennst erst einmal alle Dateien in den Unterverzeichnissen von 'Modules' so um, dass zuerst der Ordnername, in dem das Modul ist, dann ein Unterstricj und dann die Action ( z.B.: die Datei liegt im Ordner 'Modules/news', die Action ist 'new', also ist der Dateiname 'news_new.php').
Dann die Ordner: sie müssen genauso genannt werden, wie das, was vor dem Unterstrich der Dateien in diesem Ordner steht (also die Datei 'news_new.php': der ordner ist 'news'), die Groß-/Kleinschreibung muss beachtet werden!

Dann hier das Skript:

index.php
PHP:
<?php
//prüfen, ob $module gesetzt ist und nicht leer ist
if ( isset($module) && $module != "" )
{
	//hier das Modul einbinden
	
	//$module ist in zwei Teile geteilt, wenn das Modul in einem Unterverzeichnis ist
	$parts = explode('_', $module);
	if ( $parts[1] != "" )
	{
		//hier wird die Datei aus einem Unterverzeichnis von Modules geholt
		include("Modules/{$parts[0]}/{$module}.php");
	}
	else
	{
		//hier ist das Modul im Verzeichnis 'Modules'
		include("Modules/{$module}.php");
	}
	
}
else
{
	//hier die Standardseite einbinden oder einen Fehler ausgeben
}
?>

Die Get-Variable darf in diesem Fall nicht die Dateiendung des Moduls haben.
Aber wenn du die Dateiendung des Moduls da mit angeben willst musst du nur bei den beiden includes am Ende das .php entfernen.

Ich hoffe, du verstehst, was ich geschrieben habe, und, dass das was ich geschrieben habe auch richtig ist und geht ;)

MfG
Fabsch
 
Zurück