Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

ausgelesenes Verzeichnis nach Datum sortieren





Frage

Hallo, ich lese mit folgendem Script die Dateien meines Verzeichnisses aus. Ich möchte aber nun erreichen, dass die Dateien zeitlich sortiert angezeigt werden, also sprich, die aktuellste Datei zuerst. Ich habe es schon hinbekommen, die Zeit jeder Datei auszulesen, aber ich habe keine Idee, wie ich die nun sortieren kann? Hier das Script: [code] <? $handle=opendir ('../pdf/'); $path='../pdf/'; echo '<table width="500" border="0" cellspacing="0" cellpadding="0">'; echo '<tr class="normalfett"> <td width="265">Dateiname</td> <td width="99">Dateigröße</td> <td width="136">Datum/Uhrzeit</td> </tr> <tr class="normal"> <td> </td> <td> </td> <td> </td> </tr>'; while (false !== ($file = readdir ($handle))) { if ($file=='.') { $file =''; } if ($file=='..') { $file =''; } if ($file<>'') { $aktuell=stat($path.$file); $timestamp=$aktuell[9]; //enthält das Datum der letzten Modifizierung in Unixtime $datum = date("d.m.Y",$timestamp); $uhrzeit = date("H:i",$timestamp); $size=number_format(filesize($path.$file)/1024); echo '<tr class="normal"> <td><a href="'.$path.$file.'" target="_blank" >'.$file.'</a></td> <td>'.$size.' KB</td> <td>'.$datum.' / '.$uhrzeit.'</td> </tr>'; } } closedir($handle); echo '</table>'; ?> [/code] Wer hat einen Tipp für mich? Kathrin

Antwort 1 von Nessus

Hi,

lege alles in ein Array und sortiere mit der Funktion Sort

http://de2.php.net/manual/de/function.sort.php

Nessus

Antwort 2 von kathrin77

Ah Danke, das werde ich mal probieren. Hoffe, ich komme klar, wenn nicht, dann melde ich mich noch mal :-)))!

Kathrin

Antwort 3 von kathrin77

Also ich habe leider einige Probleme mit den Arrays. Hier ist mal bisheriger Stand (die Sortierfunktion ist aber leider noch nicht enthalten). Anscheinend speichere ich meine Variablen falsch in dem Array $all_stat? Ich möchte ja die statistischen Informationen jeder Datei in einem Array speichern und dann sortiert nach Datum ausgeben.


$dateianzahl=0;
$handle=opendir ('../pdf/');
$path='../pdf/';
echo '<table width="600" border="0" cellspacing="0" cellpadding="0">';
echo '<tr class="normalfett">
    <td width="340">Dateiname</td>
    <td width="100">Dateigröße</td>
    <td width="160">Datum/Uhrzeit</td>
  </tr>
  <tr class="normal">
    <td> </td>
    <td> </td>
    <td> </td>
  </tr>';

//Anahl der Dateien im Verzeichnis ermitteln
while (false !== ($file = readdir ($handle))) 
{
	if ($file=='.')
	{
		$file ='';
	}
 	if ($file=='..')
	{
		$file ='';
	}
	if ($file<>'') $dateianzahl=$dateianzahl+1;
	
}

$all_stat[]=array();	//leere Array
while (false !== ($file = readdir ($handle))) 
{		
	for ($i=0; $i<$dateianzahl; $i++)
	{
		if ($file<>'')
		{
			$aktuell=stat($path.$file);
			$timestamp=$aktuell[9];		//enthält das Datum der letzten Modifizierung in Unixtime
			$size=number_format(filesize($path.$file)/1024);	//Dateigröße
			$dateiname=$file;					//Dateiname
			
			$all_stat[$i]=array_push ($all_stat, $path, $file, $timestamp, $size, $dateiname);
  		}  		
  	}
}
for ($i=0; $i<$dateianzahl; $i++)
{
	$timestamp=$all_stat[$i][2];
	$datum = date("d.m.Y",$timestamp);
	$uhrzeit = date("H:i:s",$timestamp);
	echo '<tr class="normal">
    			<td><a href="'.$all_stat[$i][0].$all_stat[$i][1].'" target="_blank" >'.$all_stat[$i][1].'</a></td>
    			<td>'.$all_stat[$i][2].' KB</td>
    			<td>'.$datum.' / '.$uhrzeit.'</td>
  			</tr>';	
}
closedir($handle);

echo '</table>';


Antwort 4 von kathrin77

Ich hab es nun hinbekommen mit dem Auslesen :-))), aber noch ein Problem mit dem sortieren. Hier mal das Script, welches jetzt für das Auslesen funktioniert:


$dateianzahl=0;
$handle=opendir ('../pdf/');
$path='../pdf/';
$all_stat=array(array());	//leere Array

echo '<table width="600" border="0" cellspacing="0" cellpadding="0">';
echo '<tr class="normalfett">
    <td width="340">Dateiname</td>
    <td width="100">Dateigröße</td>
    <td width="160">Datum/Uhrzeit</td>
  </tr>
  <tr class="normal">
    <td> </td>
    <td> </td>
    <td> </td>
  </tr>';

//Anzahl der Dateien im Verzeichnis ermitteln
while (false !== ($file = readdir ($handle))) 
{
	if ($file=='.')
	{
		$file ='';
	}
	if (($file=='qtofm.php') || ($file=='foldericon.gif') || ($file=='fileicon.gif') || ($file=='arrowicon.gif'))
	{
		$file ='';
	}
 	if ($file=='..')
	{
		$file ='';
	}
	if ($file<>'')
	{
		$dateianzahl=$dateianzahl+1;
		$aktuell=stat($path.$file);
		$timestamp=$aktuell[9];		//enthält das Datum der letzten Modifizierung in Unixtime
		$size=number_format(filesize($path.$file)/1024);	//Dateigröße

		array_push ($all_stat,array($path, $file, $timestamp, $size)); //Dateiinfos zu Array hinzufügen
  	}
}

//Ausgabe der Dateinamen und Co.
for ($i=1; $i<=$dateianzahl; $i++)
{
	$timestamp=$all_stat[$i][2];
	$datum = date("d.m.Y",$timestamp);
	$uhrzeit = date("H:i:s",$timestamp);
	echo '<tr class="normal">
    			<td><a href="'.$all_stat[$i][0].$all_stat[$i][1].'" target="_blank" >'.$all_stat[$i][1].'</a></td>
    			<td>'.$all_stat[$i][3].' KB</td>
    			<td>'.$datum.' / '.$uhrzeit.'</td>
  			</tr>';	
}
closedir($handle);


echo '</table>';


So, nun wollte ich noch nach Datum sortieren und mache es wie folgt:

//Datum aus $all_stat auslesen und in einem Array einlesen
for ($j=1; $j<=$dateianzahl; $j++)
{
$datum[]=$all_stat[$j][2];
}

//Datum sortieren
var_dump($datum);
echo '<br>';
$sort_datum=asort($datum);
var_dump($sort_datum);

var_dump($datum); gibt folgendes aus:
array(6) { [0]=> int(1092916446) [1]=> int(1092916574) [2]=> int(1095159628) [3]=> int(1095159628) [4]=> int(1092915074) [5]=> int(1096547054) }
Das ist , denke ich, ok? Nach der Sortierung erhalte ich mit var_dump($sort_datum); das:
bool(true)

Es sollte doch aber eine sortierte Liste erscheinen, oder??? Steig da nicht ganz durch. Hat jemand einen Tipp? Ich habe schon die verschiedenen Sortierfunktionen durch, also sort, asort, usort....


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: