Mit PHP ein Ordner auslesen

balufreak

balufreak

Aktives Mitglied
Thread Starter
Dabei seit
12.10.2003
Beiträge
1.563
Reaktionspunkte
28
Hallo Leute!

Ich möchte gerne ein Downloadbereich machen auf meiner Homepage. Damit ich die Links nicht immer selbst in die Datenbank eintragen will, möchte ich gerne ein Script mit PHP machen, das die Dateien in einem Ordner auslist und dann verlinkt. Geht das überhaupt?

Greets balu
 
Jupp ... das geht wunderbar:

PHP:
<?PHP
$verz=opendir ('.');
while ($file = readdir ($verz)) {
  if($file != "." && $file != "..") echo "$file <br>";
}
closedir($verz); 
?>

Durch die if-Bedingung werden nur die Dateien und Verzeichnisse ausgelesen bzw.
angezeigt, nicht aber "." (steht für das Verzeichnis in dem Du Dich gerade befindest) und
".." (steht für die Verzeichnisebene über der jetzigen).


Gruß
Delmar
 
hallo delmar
mit verlinkung heists doch so?
PHP:
echo "<a href='$file'>$file</a> <br>";

meine frage: ich hab meine seite in gleichen ordner wie die zu downloadenden files:
down/down.php
was könnte ich schreiben, dass die down.php nicht in meiner file liste erscheint?
ich krieg immer nur ein entweder oder hin...

merci
 
Original geschrieben von xlqr
hallo delmar
mit verlinkung heists doch so?
PHP:
echo "<a href='$file'>$file</a> <br>";

&nbsp;

Jupp. Sofern Du Dich mit Deinem Script in dem gleichen Verzeichnis befindest, wie die
Dateien, auf die Du verlinkst. Ist dies nicht der Fall, musst Du noch das Verzeichnis an-
geben. Da Du dies beim Auslesen schon getan hast, kannst Du einfach schreiben:

PHP:
echo "<a href='$verz/$file'>$file</a> <br>";


Original geschrieben von xlqr
meine frage: ich hab meine seite in gleichen ordner wie die zu downloadenden files:
down/down.php
was könnte ich schreiben, dass die down.php nicht in meiner file liste erscheint?
ich krieg immer nur ein entweder oder hin...

merci
&nbsp;

Die if-Bedingung musst Du wie folgt erweitern:

PHP:
_if($file != "." && $file != ".." && $file != "down.php") echo "$file <br>";

Damit wird die Datei "down.php" nicht berücksichtigt, da Du ja die Bedingung stellst, dass
alle Dateien außer "." und ".." und "down.php" angezeigt werden sollen.


Gruß
Delmar
 
herzlichen dank!
 
Danke für die vielen Antworten!

Wie kann ich aber nur ein bestimmtes verzeichnis auslesen? Ich hab das bis jetzt nicht hingekriegt..
 
Das bestimmte Verzeichnis kannst Du im "opendir()" Befehl angeben!

PHP:
<?PHP 
$verz=opendir ('Pfad/DeinVerzeichnis'); 
while ($file = readdir ($verz)) { 
      if($file != "." && $file != "..") echo "$file <br>"; 
} 
closedir($verz); 
?>
 
Guten Morgen Leute!

Ich bin jetzt fleissig an meinem kleinen Script dran. Ich bin jetzt hier angelangt:
PHP:
<? 
$verz=opendir ('.'); 
while ($file = readdir ($verz))
{ 
  if($file{0}!=".")
  {
    $endung = strchr($file, '.');
    $link = substr($file, 0, -4);
    if($file != "." && $file != ".." && $file != "index.php" && $file != "")
    {
      if($endung!=".jpg")
      {
         echo "<a href=\"$file\">$link</a><br>"; 
      }
      else
      {
         echo "<div align=\"center\"><img src=\"$file\" alt=\"$link\"></div>";
      }
    }
  }
} 
closedir($verz); 
?>

Nun habe ich aber das problem, wenn php die Bilder darstellt sind sie mitten der anderen Dateien. Also ich meinedas ungefähr so:

datei
datei2
datei3
BILD
datei4
datei5

Jetzt meine Frage ist, ob man dies irgendwie sortieren kann. So zum Beispiel, dass zuerst alle Dateien kommen und dann die Bilder.

greets balu
 
Man könnte beispielsweise das Ergebnis in ein Array schieben und danach alle Elemente
ausgeben, die nicht die Endung '.gif' oder '.jpg' haben.

PHP:
foreach($deinArray as $value) {
   if(!substr($value, '.gif') && !substr($value, '.jpg'))
   {
        echo $value;
    }
}

Analog dazu mit den Bildern:

PHP:
foreach($deinArray as $value) {
   if(substr($value, '.gif') || substr($value, '.jpg'))
   {
        echo $value;
    }
}

Nicht schön und auch nicht elegant, aber es würde funktionieren. ;)
 
Lösung gefunden

Hab jetzt eine Lösung gefunden für das problem mit den bildern.
Ich habe jetzt einfach einen Ordner gemacht, indem nur bilder sind. Und in diesem ornder steht halt nocheinmal das script.. ist eine nicht so super lösung, mit dem doppelten script.. aber es funktioniert.

greets balu
 
Was heißt nicht so super Lösung ... ich denke, dass dies eine bessere
Lösung ist, da Du die Daten strukturell getrennt hast, was immer
besser ist, als alles in einen "Korb" zu schmeißen.

Sicher hast Du dadruch ein weiteres Skript, hast aber mehr Möglich-
keiten, was Erweiterungen angeht - sollte zu mindest einfacher voll-
zogen werden können.
 
wenn man nur ein Skript haben möchte, müsste man das doch auch mit einer for- oder foreach-Schleife lösen können, die man dann mit den beiden(oder mehr) Verzeichnispfaden füttert.

Ich habs nicht getestet, aber ich denke das müsste machbar sein.
 
Zurück
Oben Unten