Ordner auslesen / Dateien zäheln

sam

Erfahrenes Mitglied
frage nr.1:
kann ich mit php einen ordner öffnen und die unterordner auslesen?

frage nr.2:
ich will einen ordner öffnen, die bilddateien zählen und die dann in einem dropdownmenü anzeigen...wie? :-)

sollte irgendwas hie schonmal behandelt worden sein, tuts mir leid ;)
mfg
sam
 
verzeichnisse in einem dropdown menue, falls du das unter einem dropdown menue verstehst:

PHP:
$dir = dir("./");
while($file = $dir->read){
if(is_dir($file)) $dir_arr[] = $file;
}
$dropdown = '<select name="wurst">'."\n";
$a = count($dir_arr);
while ($a >= 0){
$dropdown .= '<option value="'.$dir_arr[$a].'">'.$dir_arr[$a].'</option>'."\n";
$a--;
}
$dropdown .= '</select>';

echo $dropdown;
 
danke für deine mühe, aber da zeigt er bei mir nur ein leere dropdownmenü an....
 
kleiner fehler, bei read die klammern vergessen.. hab jetzt noch ein bisschen rumgespielt:

PHP:
<?php
$dir = dir("./");
while($file = $dir->read()){
if(is_dir($file)) $dir_arr[] = $file;
}
asort($dir_arr);

$dropdown = '<form action="'.$PHP_SELF.'" method=POST><select name="showdir">'."\n";

foreach ($dir_arr as $test){
$dropdown .= '<option>'.$test.'</option>'."\n";
}

$dropdown .= '</select></form>';

echo $dropdown;
?>
 
ich als anfänger seh sowas halt nicht :-)
das script jetzt gibt mir aber jetzt nur punkte aus...
also ich seh ein dropdownmenü in dem ich 2 auswahlmöglichkeiten habe:
1.) .
2.) ..
eigentlich wolte ich schon die namen der ordner ;)

edit: ah, wenn ichs so lasse (das verzeichnis nicht ändere oben) dann kommen die ordner, aber die beiden punkt-auswahlmöglichkeiten bleiben...
 
klar. die beiden punkte sind ja nun auch "imaginäre" verzeichnisse, einmal mit "." das aktuelle und bei ".." das übergeordnete.

wenn du das nicht willst:
PHP:
<?php
$dir = dir("./");
while($file = $dir->read()){
if(is_dir($file)) $dir_arr[] = $file;
}
asort($dir_arr);

$dropdown = '<form action="'.$PHP_SELF.'" method=POST><select name="showdir">'."\n";

foreach ($dir_arr as $test){
if($test != "." && $test != "..")$dropdown .= '<option>'.$test.'</option>'."\n";
}

$dropdown .= '</select></form>';

echo $dropdown;
?>

gut, dann das 2. problem:
ich hab es auch nciht geschafft, ein anderes verzeichnis anzuzeigen, als das in dem die datei liegt, auch auf php.net war das nicht genau geschildert. wer weiß wies geht?
habs mit chdir() und eben der angabe des verzeichnis probiert, beides keine richtigen ergebnisse.
 
danke, jetzt funktionierts perfekt.

wenn jemand weiss, wie das mit dem unterverzeichnis geht --> melden! :-)
 
Moin hab so ein ähnliches Problem! Will ne Statistik basteln für ne Gallerie. Die Ordnergröße in MB hab ich schon ein Script (1) rekrusiv ausliest. Kann man dies auch auf JPG dateien begrennzen(nicht so wichtig)? So nun zum Script das mir Probleme bereitet die Anzahl an JPG Dateien soll nun auch aus den Ordner und Untenordner ausgelesen werden. Ein Script (2) zum auslesen von Anzahlen aus Ornder hab ich schon gefunden. Nur meine Sachen dort einflegen scheitere ich drann. Damit meine ich:
- auf JPG begrenzen
- Unterordner mit einbeziehen (rekrusiv)

Ordneraufteilung: .../GFX/
.../GFX/01
.../GFX/02 ...

danke schonmal vorraus

Script1
PHP:
<?php
    
    $dir = ('./GFX/');
    echo round((get_size($dir,'recursive') / 1024 / 1024),2) . ' MB';
    

    function get_size($dir,$mode)
    /* ermittelt die größe aller dateien im Ordner wenn mode = normal
    ** wenn mode = recursive werden auch unterordner berücksichtigt
    */
    {
        $filesize = 0;
        $handle = opendir($dir);
        while($file = readdir($handle))
        {
            if ($file!='..' && $file!='.')
            {
                if (is_file($dir . '/' .  $file))
                    $filesize += filesize($dir . '/' .  $file);
                else if (is_dir($dir . '/' .  $file))
                {
                    if ($mode == 'recursive')
                        $filesize += get_size($dir . '/' .  $file,'recursive');
                }
            }
        }
        return $filesize;
    }

?>

Script 2
PHP:
<?php
$verz = opendir ('./GFX/02/');
$anzahl = 0;
while($file = readdir ($verz))  {

if($file != "." && $file != "..")    {
 $anzahl++;
}

}
echo $anzahl;

closedir($verz);
?>
PHP:
<?php

$ordner = ".";
$dir = opendir($ordner);
$endung = array('php','htm','jpg','gif');

while ($datei = readdir($dir))
{
  if (($datei != ".") && ($datei != ".."))
  {
  if (in_array(substr($datei, -3), $endung))
  { $dateien[] = $datei; }
  }
}

closedir($dir);

$anzahl = count($dateien);

if ($anzahl != 0)
{
  sort($dateien);
    for($i=0; $i<$anzahl; $i++)
    { echo "<a href=\"".$ordner."/".$dateien[$i]."\">".$dateien[$i]."</a><br>"; }
}

echo "<p>".$anzahl." Dateien</p>";

die();

?>
 
Zuletzt bearbeitet:
Zurück