Problem bei Auslesen

Bushman

Erfahrenes Mitglied
Ich ahb da ein problem, und zwar, wenn bei den befehlen
PHP:
$handle = opendir('.');
while ($file = readdir ($handle))
{
...

dann gehen die Befehle

$filemod = filemtime($file);
$filesize = filesize($file);
$filetype = filetype($file);


ändert man aber den Befehl opendir('.'); um z.B. so: opendir($path);
Dann kann man $filemtime etc alle vergessen, sie sind dann nämlich alle leer, woher kommt das??
 
Zuletzt bearbeitet:
PHP:
<table border="0" cellpadding="0" cellspacing="0" width="760">
	<tr>
		<td width="190" align="center">
<?php
if ( $path == "" ) { $path = "./pictures/"; }

$i=0;
$handle = opendir($path);
while ($file = readdir ($handle))
{
    if ($file != "." && $file != "..")
	{
		$filemod = filemtime($file);
		$filemodtime = date("d.M.Y h:i", $filemod);
		$filesize = filesize($file);
		$filetype = filetype($file);

		if ( $filetype=="dir" ) { $insert = "<img src=\"pics/directory.gif\">"; }
?>
		<table border="0" cellpadding="0" cellspacing="0" width="180">
			<tr>
				<td class="two">&nbsp;&nbsp;<?php echo "$insert"; ?> <a class="one" href="?s=<?php echo "$PHPSESSID"; ?>&p=pictures&path=<?php echo "$path$file/"; ?>"><?php echo "$file"; ?></a></td>
			</tr>
			<tr>
				<td class="two">&nbsp;&nbsp;Letzte Änderung <?php echo $filemod; ?><br><br></td>
			</tr>
		</table>
<?php
		if ( $i == 4 ) { echo "</td></tr><tr><td width=\"190\" align=\"center\">"; $i=0; }
		else { echo "</td><td width=\"190\" align=\"center\">"; }
    }
	$i++;
}
closedir($handle); 
?>
		</td>
	</tr>
</table>

Das ist das Script, es ist noch nicht fertig, aber der Teil funktioniert schoneinmal! Der mist mmit den $filemod etc funktioniert aber immer noch nicht
 
Danke erstmal für eure Hilfe, nur leider hat bisher nix geholfen, ich verstehe eins bei der Sache allerdings nicht, und zwar holt er die Informationen ja aus der Variable $file diese Variable wird auch immer zurückgegeben. Aber irgendwie passiert dann nur etwas, wenn man die Root angiebt, bei unterordnern, da passiert nix.:(
 
Hallo,

Was aber mach ich, wenn ich will, dass er ein Verzeichnis ausliest, das 2 Ebenen höher liegt und dort im Ordner pictures? (in html würde man es so schreiben "../../pictures/")
hab aber festgestellt, dass das mit PHP nicht zu funktionieren scheint - was muss man dann schreiben?

Vielen lieben Dank

Willi :confused:
 
geht das vielleicht wirklich gar nicht
Bei mir geht nämlich auch - wie oben beschrieben, ein Unterordner nicht...

Weiß niemand eine Lösung?

Willi :confused:
 
Ich hab das mal fix getestet und konnte ohne Probleme das Verzeichnis ../../translations oeffnen.

Siehe dazu die Ausgabe:
Code:
# ../../translations

    * [DIR]../../translations/de_DE
          o [DIR]../../translations/de_DE/LC_MESSAGES
                + [FILE]lang.mo

Getestet habe ich mit meinem kleinen Datei-Browser aus diesem Tutorial.
Allgemein koennte dort Code enthalten sein, der fuer diesen Thread interessant ist, denn sowohl im Tutorial als auch hier im Thread geht es ja darum Verzeichnisse zu lesen.
 
Hallo! Ich habe ein ähnliche Problem. Und zwar möchte ich auch ein ganz bestimmtes Verzeichnis auslesen. Das klappt auch wunderbar, aber er soll mit alle Folders zusätzlich mit << und >> kennzeichnen. Das klappt aber nicht! Er makiert nur die "." und ".." :suspekt: . HIer mein Code:

PHP:
			 $Pfad=$_SERVER['DOCUMENT_ROOT'].'/SUDDENMEDIA';

                 $dir=scandir($Pfad,0); //$Pfad nach Dateien absuchen und in Array schreiben
                 $x=count($dir); //Anzahl der Dateien (=Objekte in Array) zählen

                 for($i=0; $i<$x; $i++) //Durchläuft so viele Male, wie es Objekte im Array gibt
                 {
				 	echo '<li>';
                     if(is_dir($dir[$i])) //Wenn Objekt ein DIR ist : >> ausgeben!
                     {
                         echo '<<';
                     }
					
                     echo $dir[$i]; //Datei- oder Verzeichnisnamen ausgeben
					
					 
                     if(is_dir($dir[$i]))//Wenn Objekt ein DIR ist : << ausgeben!
                     {
                         echo '>>';
                     }

                     echo '</li>';
                 }
 
Ich nehme an, dass scandir() nicht den kompletten Pfad enthaelt sondern immer nur den jeweiligen Datei-/Verzeichnisnamen.
Daher wirst Du dann bei is_dir() vor $dir[$i] noch den Pfad setzen muessen unter dem das alles zu finden ist.

Ich hab's jetzt nicht getestet, aber so erklaer ich mir das Verhalten.
. und .. gibt es ja in jedem Verzeichnis, von / mal abgesehen, wo es nur . gibt.
 
Danke für Deine schnelle Antwort. Aber das mit dem is_Dir() habe ich nicht verstanden. Kannst mit ein beispiel geben?
 
Wenn Du im gescannten Verzeichnis ein Unterverzeichnis bla hast steht wahrscheinlich in $dir auch nur bla drin.
Da das Script aber nicht im gescannten Verzeichnis laeuft kann Dein is_dir() bla nicht finden, da Du im Verzeichnis des Scripts danach suchst. Daher musst Du auch bei is_dir() Deinen Pfad angeben.
 
Zurück