Ausgabe von ordner inhalt in Tabelle mit Dateigröße

Amr0d

Erfahrenes Mitglied
Also ich habe bereits eine php datei die mir einen Ordner ausliest und dann die Dateien anzeigt die dort enthalten sind. Jetzt möchte ich aber gerne das ganze ein wenig verschönern und zwar möchte ich das die Dateien in einer Tabelle angezeigt werden in 2 Spalten. In der linken der Dateiname und in der rechten dateigröße. Ich kann nur leider kein PHP, das Script daunten habe ich auch mit eurer Hilfe gemacht :) Ich habe mal zum reinschauen die Datei angehängt die ich schon habe.

Link

und hier der Code

PHP:
<?php
$ordner = "/is/htdocs/37795/www.shootingamez.de/files/";
$dir_handle = opendir($ordner);
while ($filename = readdir($dir_handle))
{
    if ($filename != '..' && $filename != '.htaccess' && $filename != 'index.php' && $filename != '.')
    {
?>
  <a href="<?php echo $filename; ?>"><?php echo $filename; ?></a><br><br>
<?php
    }
}
closedir($dir_handle);
?>

Was auch ganz schön wäre wenn er die Dateien alpabetisch ordnen könnte
 
Also,
die Dateigröße bekommst du mit filesize() hin. Um alles alphabetisch ordnen zu können wäre es Möglich die Daten alle in ein Array zu packen und dann zu ordnen. Schlussendlich gibst du da Ganze aus.
Wo ist da dein Problem?

Mit freundlichem Gruß
der_maiki
 
PHP:
<?php
$ordner = '/is/htdocs/37795/www.shootingamez.de/files/';
$dir_handle = opendir($ordner);
$files = array();
while ($filename = readdir($dir_handle)) {
    if ($filename != '..' and $filename != '.htaccess' and $filename != 'index.php' and $filename != '.') {
        $files[]['name'] = $filename;
        $files[]['size'] = filesize($filename);
    }
}
closedir($dir_handle);
sort($files, SORT_STRING);
echo '<table>';
foreach ($files as $file) {
    echo '<tr><td>'.$file['name'].'</td><td>'.$file['size'].'</td></tr>';
}
echo '</table>';
?>
 
PHP:
<?php

	$path = '.';
	$dir_handle = opendir($path);
	$items = array();
	while( $item = readdir($dir_handle) ) {
		if( is_dir($item) || $item == '.' || $item == '..' || $item == '.htaccess' || $item == 'index.php' ) {
			continue;
		}
		$items[strtolower($item)] = array(
			'name' => $item,
			'size' => filesize($item)
		);
	}
	closedir($dir_handle);
	ksort($items, SORT_STRING);
	echo '<table>';
	foreach( $items as $item ) {
		echo '<tr><td><a href="'.$path.'/'.$item['name'].'">'.$item['name'].'</a></td><td>'.$item['size'].'</td></tr>';
	}
	echo '</table>';

?>
Ich hab nichts gehört.
 
Komisch, als hätte ich das grad so gesagt. :) :) :)
:-) Du erzählst bisschen was, und ich code. Das nennt man Arbeitsteilung. ;-) ;)

Und Gumbo codet auch noch mit. Die Arbeitsteilung wird immer besser. :-)

/edit: Uh! Ah! Kann es sein, dass man bei mehrdimensionalen Arrays angeben muss, nach welcher Dimension (äh... sagt man das so?) geordnet werden muss? Dann würde ich nämlich auch sehen, wo der Vorteil von Gumbos Version liegt... :eek:
 
Zuletzt bearbeitet:
der_maiki hat gesagt.:
Also,
die Dateigröße bekommst du mit filesize() hin. Um alles alphabetisch ordnen zu können wäre es Möglich die Daten alle in ein Array zu packen und dann zu ordnen. Schlussendlich gibst du da Ganze aus.
Wo ist da dein Problem?

Mit freundlichem Gruß
der_maiki

Mein Problem? Kann ich dir sagen, ich kann kein PHP! Deswegen bin ich euch auch immer sehr verbunden wenn ihr mir erklärt was ich gerade copy+paste :)

Zufrieden? :)

@Gumbo
ist es möglich anstatt der ganzen vielen Zahlen einfach z.b. 1.5 MB anzeigen zu lassen?

Danke für die Hilfe
 
Zuletzt bearbeitet:
ist es möglich anstatt der ganzen vielen Zahlen einfach z.b. 1.5 MB anzeigen zu lassen?
Probier's mal so:
PHP:
<?php

    $path = '.';
    $dir_handle = opendir($path);
    $items = array();
    while( $item = readdir($dir_handle) ) {
        if( is_dir($item) || $item == '.' || $item == '..' || $item == '.htaccess' || $item == 'index.php' ) {
            continue;
        }
        $items[strtolower($item)] = array(
            'name' => $item,
            'size' => filesize($item)
        );
    }
    closedir($dir_handle);
    ksort($items, SORT_STRING);
    echo '<table>';
    foreach( $items as $item ) {
        if ($item['size'] < 1024) {
            $size = $item['size'].' Bytes';
        } elseif ($item['size'] < 1048576) { // 1024^2
            $size = round($item['size']/1024, 2).' KB';
        } else {
            $size = round($item['size']/1048576, 2).' MB';
        }
        echo '<tr><td><a href="'.$path.'/'.$item['name'].'">'.$item['name'].'</a></td><td>'.$size.'</td></tr>';
    }
    echo '</table>';

?>
 
Eine letzte kurze Frage:

Wie kann ich die Schriftart/größe ändern?

Dann möchte ich mal danke sagen für die schnelle flotte hilfe

Gruss

Amr0d
 
Mit <span style="font-family:Courier New; font-size:2em;">/</span>. Einfach an der gewünschten Stelle einfügen.

-> Das ist aber kein PHP-Problem mehr! :-(
 
Zurück