Probleme beim Verzeichnisauslesen

MelcomB56

Mitglied
Hallo liebe community,

ich stehe gerade vor einem problem bei meinem projekt was mir echt kopfzerbrechen bereitet.

alles im groben erklärt, ich muss ein verzeichniss auf dem webserver auslesen und den inhalt nach monat sortieren. die dateien in dem ordner haben alle die selbe namesformatierung z.b.: tour.daten.2008-05-15.html

ich habe es schon soweit hin bekommen das ich das verzeichniss aufgelistet bekomme mit folgendem code:

PHP:
<?
	if ($handle = opendir('/srv/www/htdocs/web6/html/testumgebung/admin/Tourenplaner/tourendaten'))  {		
		while (false !== ($file = readdir($handle))) {
			if ($file == "." OR $file == "..") {
				echo "";
			} else {
	    		echo '<td><a href="http://www.tutorials.de/tourenplaner/tour.bericht.do.php?tourdate='.$file.'"><img src="http://www.tutorials.de/images/tourenplaner/pdf_symbol.jpg" border="0"></a><a href="http://www.tutorials.de/tourenplaner/tour.bericht.do.php?tourdate='.$file.'">'.$file.'</a>';
			}
			while ($file = readdir($handle)){				    	
				
				$text = $file;
		   
				$arr = preg_split('/-|\./', $text);
		
				$arr[3] = str_replace("01", "Januar", $arr[3]);
				$arr[3] = str_replace("02", "Februar", $arr[3]);
				$arr[3] = str_replace("03", "März", $arr[3]);
				$arr[3] = str_replace("04", "April", $arr[3]);
				$arr[3] = str_replace("05", "Mai", $arr[3]);
				$arr[3] = str_replace("06", "Juni", $arr[3]);
				$arr[3] = str_replace("07", "Juli", $arr[3]);
				$arr[3] = str_replace("08", "August", $arr[3]);
				$arr[3] = str_replace("09", "September", $arr[3]);
				$arr[3] = str_replace("10", "Oktober", $arr[3]);
				$arr[3] = str_replace("11", "November", $arr[3]);
				$arr[3] = str_replace("12", "Dezember", $arr[3]);
	
				if ($file == "." OR $file == ".." OR $file == "tour.plan..html") {
					echo "";
					} else {
						echo '<td>'.$arr[3].'<a href="http://www.tutorials.de/tourenplaner/tour.bericht.do.php?tourdate='.$file.'"><img src="http://www.tutorials.de/images/tourenplaner/pdf_symbol.jpg" border="0"></a><a href="http://www.tutorials.de/tourenplaner/tour.bericht.do.php?tourdate='.$file.'">'.$file.'</a></td>';
					}
			}					    	
		}	
	}
	closedir($handle);
?>

Das problem ist nun, wie bekomme ich das hin das er für jeden monat (in dem fall $arr[3]) eine überschirft macht mit dem monatsnamen. Hört sich echt einfach an aber ich weiss nicht wie ich das lösen soll oder kann.

Ich würde mich freuen wenn mir da jemand weiterhelfen kann, bin für jede hilfe dankbar.

LG

Melcom
 
Zuletzt bearbeitet:
Du musst die Datensätze sortieren und dann beim Durchlauf prüfen, ob die bestimmte Eigenschaft des aktuellen Datensatzes mit der des vorherigen übereinstimmt. Ist das nicht der Fall, wird diese ausgegeben.
Der allgemeine Algorithmus ist etwa folgender:
PHP:
$lastItem = null;
while ($item) {
	if ($lastItem !== $item) {
		echo $item;
		$lastItem = $item;
	}
}
 
Halllo,

es ist immer wieder fastzinierend, wie einfach sowas doch sein kann.

Danke dir für den anstoss, der hat mir sehr weiter geholfen.

danke danke danke... :)

vieleicht kannst du mir noch bei der einen sache einen tipp geben.

die dateien die eingelesen werden sind ja alle im folgenden format :

tour.plan.2008-07-14.html
tour.plan.2008-07-15.html
tour.plan.2008-07-16.html

u.s.w.

wie sollte man das am besten sortieren ?

LG

Melcom
 
Wenn sich das „tour.plan“ nicht ändert, reicht eine normale lexikographische Sortierung. Aber das hängt natürlich ganz von deinen Vorstellungen ab.
 
Hiho,

das "tour.plan" ändert sich nicht. Es klappt auch aber er macht da eine merkwürdige sortierung und zwar macht er alles was zu dem monat gehört unter einer überschrift aber das was unter der überschrift kommt ist nicht sortiert, kommt mir vor als ob er da nach dem erstellt datum der datei geht, was ja nicht soll.

LG

Melcom
 
Hi Gumbo,

nun bin ich doch etwas verwirrt.

wie kann ich denn alle daten aus dem verzeichniss erst sammeln, diese dann sortieren und dann mit preg_split nach den kreterien auseinander hacken ?

Wenn ich die daten alle sammeln will mache ich das im Array. Wenn ich sie Sortieren will, sortiere ich das Array ( sort ($array); ) -> bis dahin ok ... aber wenn ich nun das preg_split machen will bekomme ich immer fehlermeldungen was mir auch logisch erscheint da preg_split ja auch wiederum ein array zurück gibt. Oder habe ich da nun einen denkfehler ?

LG

Melcom
 
Mit Folgendem kannst du sie sammeln und anschließend sortieren:
PHP:
$files = array();
while ($file = readdir($handle)) {
	$files[] = $file;
}
sort($files);
 
Hi Gumbo,

thx für deine antworten und hilfestellung :D

Haber das nun alles so lösen können das es klappt.

Musste lediglich beim auseinandernehmen einen counter mitlaufen lassen damit ich jede dateiei einzeln vor die flinte bekommen konnte ;)

Thx 4 help

:p Melcom :p
 
Zurück