filesize falsch ausgegeben

-Ener-

Erfahrenes Mitglied
Hi, ich habe ein Script welches Ordner und Dateien eines Ordners ausliest. Das besondere daran ist das das script genau diesen ordner indem es sich befindet ausliest also automatisch. Nun möchte ich das die Datei bzw. Ordnergröße als title="...KB" ausgebenen wird. in meinem Script erscheint aber bei jeder datei bzw. ordner 4.096 KB. irgendwas ist daran falsch, nur was?

PHP:
<?php 
$uri = $_SERVER['REQUEST_URI'];
$dir = "/homepages/7/d101401614/htdocs$uri"; 
$verz = opendir("$dir"); 
while($file = readdir($verz)) 
{ 
  if($file != "." && $file != ".." && $file != "index.php" && $file != "dir.gif" && $file != "file.gif") 
	$files[] = ($file); 
} 
closedir($verz); 
sort($files); 
$size0 = filesize("$dir$$files[$i]");
$size1 = $size0/1000;
for($i = 0; $i < count($files); $i++) 
  echo "<a href=\"$uri".$files[$i]."\" title=\"$size1 KB\">".$files[$i]."</a><br>"; 
?>
 
$size1 = $size0/1000;

du musst durch 1024 teilen, dann klappt das auch. 1024 Bytes sind ein Kilobyte, daran müsste der Fehler liegen :).
 
Liegts womöglich am $size0 = filesize("$dir$$files[$i]");?

Versuch mal $size0 = filesize("$dir.$files[$i]");
 
PHP:
$size0 = filesize("$dir$$files[$i]");
$size1 = $size0/1000;
$i ist hier nicht gesetzt.
Die beiden Zeilen gehören mit in die for-Schleife.
Und wie Bender schon sagte, muss da ein Punkt hin um die Strings aneinander zu Reihen.
 
djwawe hat gesagt.:
Und wie Bender schon sagte, muss da ein Punkt hin um die Strings aneinander zu Reihen.
Da muss kein Punkt hin! Das Ganze steht in einem String.

Entweder
PHP:
$size0 = filesize("$dir$$files[$i]");
oder
PHP:
$size0 = filesize($dir$.$files[$i]);
Aber keine "Mixtur" ;)
 
einfach die beiden in die for schleife setzen oder was dran verändern? bekomme nämlich dAUERND PHP FEHLER
 
Du musst das ganze dann als Codeblock schreiben, also mit { }, ist die einzige Änderung.
Dass die Vars in nem String stehen hab ich ganz übersehen, es ergibt aber auch nicht viel Sinn ;)
 
for{$i = 0; $i < count($files); $i++

{
$size0 = filesize("$dir$$files[$i]");
$size1 = $size0/1024;
}
)
So? lol ich hab ma keine ahnung von Schleifen, sorry
 
So sollte es klappen:
PHP:
<?php
$uri = $_SERVER['REQUEST_URI'];
$dir = '/homepages/7/d101401614/htdocs'.$uri;
$verz = opendir($dir);
$files = array();
while($file = readdir($verz)) {
    if($file != '.' and $file != '..' and $file != 'index.php' and $file != 'dir.gif' and $file != 'file.gif') {
        $files[] = $file;
    }
}
closedir($verz);
sort($files, SORT_STRING);
foreach($files as $file) {
    $size = round(filesize($dir.'/'.$file)/1024, 2); // auf zwei Nachkommastellen runden
    echo '<a href="'.$uri.$file.'" title="'.$size.' KB">'.$file.'</a><br />';
}
?>
 
Zurück