opendir-Problem
tomgk
- php
Hallo,
Ich möchte ein Verzeichnis mitsampt Unterverzeicnise auflisten.
Mein Problem: Wie kann man wissen ob die Rückgabe von readir eine Datei oder ein Ordner ist?
MFg
tomgk
Grüße,
is_dir(), is_file() mehr in der docu php.net
MFG
bleicher
Grüße,
is_dir(), is_file() mehr in der docu php.net
MFG
bleicher
thx für die schnelle Hilfe
Hallo,
Ich habe ein Problem beim Auflisten des Verzeichnisbaumes.
Ich bin jetzt so weit:
<html>
<head>
<title>tWeb</title>
<link rel="icon" href="./favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="./favicon.ico" type="image/x-icon" />
</head>
<body>
<style>
img
{
position:relative;
top:6px;
}
</style>
<img src="Bilder/Icons/folder_open.gif">Main<br>
<?php
$max=0;
function sdir($dir, $vor)
{
global $max;
$o = opendir($dir);
$files = "";
$gefunden="";
//echo("DIR:".$dir."<br>");
while ($gefunden = readdir($o))
{
if ($gefunden != "." && $gefunden != "..")
{
++$max;
if(is_dir($dir.'/'.$gefunden))
{
echo('<div style="position:relative;top:-'.($max*4.5).'">'.$vor.'<img src="Bilder/Icons/nend.gif"><img src="Bilder/Icons/folder_open.gif">'.$gefunden.'</div>');//Ordner-Sympol
sdir($dir.'/'.$gefunden,$vor.'<img src="Bilder/Icons/sline.gif">');
}
else
echo('<div style="position:relative;top:-'.($max*4.5).'px">'.$vor.'<img src="Bilder/Icons/nend.gif">'.$gefunden."</div>\n");//nend=Symbol
}
}
}
sdir('/oProgramme/xampp/htdocs/tWeb', '');
?>
</body>
</html>
Zur Info:
Bilder/Icons/ ist der Ordner mit den Sympolen(Ordnersymbol,...)
folder_open.gif das Ordner-symbol
sline.gif das Symbol |
nend.gif das Abzweigungssymbol
Das Problem: Wie kann man wissen wann kein |-Symbol mehr nötig ist?
MfG
tomgk
Grüße,
Das Problem: Wie kann man wissen wann kein |-Symbol mehr nötig ist?
so gar nciht . du gibst das | aus, BEVOR du den ordner nach untervezeichnissen untersuchst. style es so um, dass der nicht nach sondern vor einem verzeichniss ausgegeben wird.
MFG
bleicher
Hello,
Ich möchte ein Verzeichnis mitsampt Unterverzeicnise auflisten.
Mein Problem: Wie kann man wissen ob die Rückgabe von readir eine Datei oder ein Ordner ist?
dafür gibt es die Funktion is_dir(). http://www.php.net/manual/de/function.is-dir.php
Du musst nur darauf achten, _welchen_ Pfad Du für die Überprüfung übergibst.
readdir() http://www.php.net/manual/de/function.readdir.php
arbeitet (auch) relativ zum active working directory
(pwd, getcwd() http://www.php.net/manual/de/function.getcwd.php),
is_dir() möchte aber den vollständigen Pfad haben.
Du hast aber in allen Dateisystemen, die Links zulassen, noch ein weiteres Problem zu handhaben: Abfangen eines zyklischen Verlaufes. Wenn ein Link im Verzeichnis auf ein höheres Verzeichnis verweist, würdest Du eine Endlosschleife produzieren.
Da aber Links durchaus legitim sind, solltest Du, um die Endlosschleife zu vermeiden, die Directorynamen vorher mit realpath() http://www.php.net/manual/de/function.realpath.php expandieren und in einem Array einsammeln. Dieses kannst Du dann abarbeiten, um die Files zu finden.
Dabei hilft Dir dann wieder is_file() http://www.php.net/manual/de/function.is-file.php
Außerdem schau Dir mal glob() an http://www.php.net/manual/de/function.glob.php
Es gibt auch einen Thread zum Thema Rekursion bzw. zyklischer Verlauf beim Dateibaum:
http://forum.de.selfhtml.org/archiv/2007/12/t163759/#m1066568
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg