Dir auslesen.
yannis
- php
Hallo,
ich möchte ein verzeichniss auslesen und dann die unterverzeichnisse anzeigen:
while ($subdir = readdir($fp)){
if (is_dir($subdir)&&$subdir!="."&&$subdir!=".."){
echo "<td class="std"><b><a href="$PHP_SELF?seite=$seite&PHPSESSID=$PHPSESSID&sub=$subdir">$subdir</a></td>";
}
}
Problem: Er zeigt das erste Verzeichniss richtig an, andere aber nicht. Porque?
Danke für hilfe,
y
Hello,
<?php ### dirlist.php ###
//----------------------------------------------------
function get_dirlist($dir)
{
$dirlist=array();
$dh=opendir($dir);
if ($dh)
{
while ($filename=readdir($dh))
{
if (!is_file($filename) and !is_dir($filename))
{
$dirlist[]=$filename;
}
}
closedir($dh);
}
else
{
// ggf. Fehlermeldung setzen
return false;
}
asort($dirlist);
return $dirlist;
}
//-----------------------------------------------------
$dir = get_dirlist("..");
echo "<pre>";
print_r($dir);
echo "</pre>";
?>
liebe Profis, schaut euch doch bite mal diese Funktion an, die da eben zusammengekotzt habe. DIE liefert tatsächlich die Unterverzeichnisse des angegebenen Verzeichnisses.
Da stimmt doch irgend was nicht?
PHP-Version PHP Version 4.3.1 auf Redhat Linux Ver ??
Grüße
Tom
Hello,
habe den Fehler gefunden.
Man muss natürlich bei is_dir($dir."/".$filename) auch im passenden Verzeichnis nachschauen. *grummel*
Und hier nun noch die gewünschte rekursive Funktion für get_tree() und die reparierte für get_subdirs()
<?php ### dirlist.php ###
//----------------------------------------------------
function get_subdirs($dir)
{
$dirlist=array();
$dh=@opendir($dir);
if ($dh)
{
while ($filename=readdir($dh))
{
if (is_dir($dir."/".$filename) and ($filename !=".") and ($filename !=".."))
{
$dirlist[]=$filename;
}
}
closedir($dh);
}
else
{
// ggf. Fehlermeldung setzen
return false;
}
asort($dirlist);
return $dirlist;
}
//-----------------------------------------------------
function get_tree($dir)
{
$dirlist=array();
$dh=@opendir($dir);
if ($dh)
{
while ($filename=readdir($dh))
{
if (is_dir($dir."/".$filename) and ($filename !=".") and ($filename !=".."))
{
$dirlist[$filename]= get_tree($dir."/".$filename);
}
elseif(is_file($dir."/".$filename))
{
$dirlist[]=$filename;
}
}
closedir($dh);
}
else
{
// ggf. Fehlermeldung setzen
return false;
}
asort($dirlist);
return $dirlist;
}
//======================================================
$tree = get_tree("..");
echo "<pre>";
print_r($tree);
echo "</pre>";
?>
Grüße
Tom