Nach Name sortieren funktioniert nicht

  • #1
R

Raptor

Bekanntes Mitglied
Themenersteller
Dabei seit
10.08.2006
Beiträge
116
Reaktionspunkte
0
Ort
Hamburg
Bin halt noch Anfänger im programmieren und habe dazu nichts gefunden ausser das mit dem Array.
Wollte die Dateien aus meinem Ordner auslesen, was auch schon lange funktioniert, nur wollte ich jetzt das er mir die dateien sortiert ausgibt.

Funktioniert aber nicht so wie ich will, entweder ich habe eine Endlosschleife mit nur einem Namen oder er gibt mir nur die Datei aus die neu ist, loool.
Also wo liegt jetzt wieder mein Fehler, Anfänger halt :-(

Code:
<?php
$verzeichnis = openDir(tracks/); // oeffnet ein Unterverzeichnis mit den dateien
while ($file = readDir($verzeichnis)) { // Verzeichnis lesen

$dateien = array($file);

clearstatcache();
$zeit_aktuell = time();

$upload_datum = filemtime('tracks/' . $file);

$zeit_vor_woche = $zeit_aktuell - 60*60*24*7;

sort($dateien);

$i=0;
while($dateien[$i]){

if ($upload_datum > $zeit_vor_woche){


 if ($file != . && $file != ..) { // Hoehere Verzeichnisse nicht anzeigen!
  



echo <table align=\center\ border=\0\ width=\400\><tr>

<td align=\center\ background=\../banner/bgdl.jpg\ width=\400\ height=\28\>

<img src=\../banner/new.gif\>

<a href=\tracks/$dateien[$i]\><font color=\gold\><b>$file</b></font></a></td></tr></table>\n; // Link erstellen
 
 $i++;
 
 
 }
}else {

if ($file != . && $file != ..) { // Hoehere Verzeichnisse nicht anzeigen!
  
echo <table align=\center\ border=\0\ width=\400\><tr>

<td align=\center\ background=\../banner/bgdl.jpg\ width=\400\ height=\28\>

<a href=\tracks/$dateien[$i]\><font color=\gold\><b>$file</b></font></a></td></tr></table>\n; // Link erstellen
 
 $i++;
 
 }
 
}
}
}
closeDir($verzeichnis);
?>


Habe auch schon über sort gelesen und ksort, stehe aber voll aufm schlauch damit weil es nicht funktioniert bei mir, son sch... !

Wäre euch echt dankbar für jede Hilfe, weil ich weiß nicht mehr wo der Fehler liegt.
 
  • #2
Nabend,

wenn Du mit readdir beginnst Dein Verzeichnis auszulesen, enthält $file immer nur den aktuellen Dateinamen.

$dateien = array($file);
speichert die Werte jedesmal neu (ohne sich den alten Wert zu merken), dafür gibt es entweder die Funktion array_push() oder Du speicherst es direkt

Code:
<?php
$verzeichnis = openDir(tracks/); // oeffnet ein Unterverzeichnis mit den dateien
$i = 0;
$dateien = array(array());
while (false !== ($file = readdir($verzeichnis))) { // Verzeichnis lesen
 if ($file == . || $file == ..) { continue; }
 $dateien[$i][0] = filemtime('tracks/' . $file); // an erster Stelle im Array das Datum speichern
 $dateien[$i][1] = $file;               // an 2. Stelle den Dateinamen speichern
 clearstatcache();
 $i++;
}
sort($dateien);
...

ist jetzt nicht 100% geprüft aber so in etwa sollte Dein Code aufgebaut sein, vermeide verschachtelte while Schleifen, das geht am Anfang meistens schief ;)

untersuche mit einem Debugger oder am Ende Deine Variablen
echo <pre>;
var_dump($dateien);
echo </pre>;

naja wie auch immer, ich hoffe es hilft Dir
 
Thema:

Nach Name sortieren funktioniert nicht

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.493
Neuestes Mitglied
Flensburg45
Oben