Dateien per include in Webseiten einfügen

B

blaster

Guest
Sagen wirmal, am Anfang habe ich eine Datei (datei1.php), die ich auf der Startseite (index.php) include. Die index.php sieht also so aus:


CODE
...
<?php include("datei1.php");?>
...



Nach einigen Tagen lade ich die zweite Datei (datei2.php) hoch. Jetzt könnte ich die index.php erweiter, das sie dann so aussieht:


CODE
...
<?php include("datei1.php");?>
<?php include("datei2.php");?>
...



Ich möchte aber, das die Datei 2 (und alle Dateien die ich später hochlade) automatisch eingebunden werden, also ohne das ich die index..php manuell erweitern muss.
 
Dann würde ich den Inhalt von der Datei "datei1.php", der Datei "datei2.php" und all den anderen in nur eine Datei schreiben ! Dann musst du auch nur diese eine incloden !
 
Hallo blaster,

du könntest die jeweilg zu includenden Files in ein eigenes Verzeichnis legen. Nun lässt Du in der index.php die Verzeichnis-Struktur lesen und fügst alle Dateien des Verzeichnisses in einer Schleife ein. Lies mal hier:
http://www.php.net/manual/de/ref.dir.php
 
@Hamlet, so hätt ich das auch gemacht, aber jetzt ist mir grad folgendes ins Hirn gepoppt:
CODE
<?php include("datei1.php");?>
<?php @include("datei2.php");?>
<?php @include("datei3.php");?>
....
<?php @include("dateiN.php");?>


Die @ unterdrücken ja nett die Fehlermeldung, wenn das File (noch) nicht da ist, meine Frage aber was ist schneller?
 
QUOTE ... aber was ist schneller?

Gute Frage das. Keine Ahnung was da schneller ist. Ich weiss jetzt auch nicht recht, bei der Methode mit @include müsste man eigentlich schon am Anfang wissen, wieviele Dateien da folgen werden. Ich meine, wenn Du etwa so:

CODE
$nCount = 1000;
for ($i = 0; $i < $nCount; $i++)
{
$DateiName = ("datei" . $i . ".php")
@include($DateiName);
}

Dann kanns schon dauern und und eine "datei1001.php" würde nicht mehr eingebunden werden. Dagegen versucht der Server vielleicht viele Dateien einzubinden, die nicht bezw. nicht mehr vorhanden sind.

Dagegen würde das Lesen der Verzeichnis-Struktur nur das liefern, was wirklich da ist.
 
Erstmal THX!

Die Methode von Hamlet finde ich gut. allerdings vestehe ich die erklärung auf php.net nicht. könntest du das nochmal etwas einfacher erklären?

Danke!
 
Probiers mal so:
CODE
$dir = "Verzeichnis"; // Dein Verzeichnis-Name
$dh = opendir($dir); // Verzeichnis auslesen
while (false !== ($filename = readdir($dh))) // Schleife starten
{
include ($filename); // Hier werden alle Dateien included
}

Habs jetzt nicht ausprobiert, müsste aber funzen.

Beachte:
An $dir musst Du den kompletten Pfad übergeben vom Script aus, also z.B: "Verzeichnis/Subverzeichnis/Untersubverzeichnis"
 
Das hier ist jetzt getestet und schnurrt:
CODE
<?php

$dir = "Test"; // Dein Verzeichnis-Name
$dh = opendir($dir); // Verzeichnis auslesen
$i = 0;
while (false !== ($filename = readdir($dh))) // Schleife starten
{
$i++;
if ($i > 2) // Weil "." und ".." erzeugen einen Fehler
{
include ($dir . "/" . $filename); // Hier werden alle Dateien included
}
}

?>


Sicher ginge das noch ein wenig eleganter
wink.gif
 
jop, das funktioniert - aber wie kann man das machen, dass die dateien dann nicht von A-Z (v. oben n. unten) sondern von Z-A (v. oben n. unten) included werden...?
 
QUOTE (DZVO @ Do 21.06.2007, 09:18) ksort()

super
blink.gif


ehrlich gesagt, bin ich jezz genauso schlau wie vorher.... naja, muss ich noch bissel basteln - werds schon irgendwann hinkriegen

DANKE
dry.gif
 
mit PHP 5 ist es über Scandir recht einfach:

CODE
$dir = "Test"; // Dein Verzeichnis-Name
$absteigend = true; // Sortierung

$dateien = scandir($dir, (int)$absteigend);

if ($dateien !== false)
foreach($dateien as $datei)
if ( (strpos($datei, '.') !== 0) && (!is_dir($dir . '/' . $filename)) ) {
include ($dir . '/' . $filename);
}




ungetestet...
 
Zurück
Oben