Probleme bei der Sortierung / beim auslesen eines Ordners

  • #1
C

culan

Guest
Hallo
in dem Verzeichnis liegen PDF dateien die dann einzeln geöffnet werden sollen.
Die dateien sind alle mit 1.10 oder 2.3 oder .... am anfang gekennzeichnet.
Sie sollten dann alle schön der reihe nach sortiert werden.
aber ich habe keinen blassen schimmer wie ich das hinbekommen soll.
Den mit SORT() habe ich es schon probiert.
Bitte um kurze denkansetze oder sogar vieleicht gleich die lösung.
Danke
Culan
PS: meine PHP Version 4.3.10
Code:
<table border=0 width=90% cellpadding=3 cellspacing=0>
 <tr class=menukopf>
  <th align=left>Katalogseite</th>
  <th align=right>Größe</th>
  <th align=left>Aktualiesiert</th>
</tr>
<script language=php>

$verzeichnisname = $unc/katalog/pdf;

$verzeichnis = opendir($verzeichnisname);

while($eintrag = readdir ($verzeichnis))
{ sort ($eintrag);
 $test = $verzeichnisname . / . $eintrag;
 
 if(is_dir($test) or (($eintrag==index.php) or ($eintrag==$gesammt)))
  {
   /* echo <!-- $eintrag -->\n; */
  }
 else
   {
   echo <tr onmouseover=\this.bgColor='#DADADA'\ onmouseout=\this.bgColor='#ffffff'\>\n<td align=\left\ class=\text\ ><img src=\/bilder/links.png\ width=\15\ height=\10\ border=\0\><a href=\/katalog/pdf/$eintrag\ target=\_blank\>$eintrag</a></td>\n;
   echo <td align=\right\ class=\text\> . filesize($test) .  Byte</td>\n;
   echo <td align=\left\ class=\text\> . strftime(%A, %d.%b.%y, %H:%M, filemtime($test)) . </td>\n;

   }
}
closedir($verzeichnis);
</script>

</table>
 
  • #2
Versuchs mal so:

Code:
<table border=0 width=90% cellpadding=3 cellspacing=0>
 <tr class=menukopf>
  <th align=left>Katalogseite</th>
  <th align=right>Größe</th>
  <th align=left>Aktualiesiert</th>
</tr>
<?php

$verzeichnisname = $unc/katalog/pdf;

$verzeichnis = opendir($verzeichnisname);

while($eintrag = readdir ($verzeichnis)) {
	if($eintrag == . || $eintrag == ..) continue;
	$path = $verzeichnisname . / . $eintrag;
 	$a[name] = $eintrag;
	$a[size] = filesize($path);
	$a[time] = strftime(%A, %d.%b.%y, %H:%M, filemtime($path));
	$arr[] = $a; 
}
closedir($verzeichnis);

natcasesort($arr);

for($i = 0; $i < count($arr); $i++) {
   echo <tr onmouseover=\this.bgColor='#DADADA'\ onmouseout=\this.bgColor='#ffffff'\>\n<td align=\left\ class=\text\ ><img src=\/bilder/links.png\ width=\15\ height=\10\ border=\0\><a href=\/katalog/pdf/.$arr[$i][name].\ target=\_blank\>.$arr[$i][name].</a></td>\n;
   echo <td align=\right\ class=\text\> . $arr[$i][size] .  Byte</td>\n;
   echo <td align=\left\ class=\text\> . $arr[$i][time] . </td>\n;
}
?>

</table>

Der Befehl natcasesort:
Diese Funktion implementiert einen Sortieralgorithmus, welcher alphanumerische Zeichenketten reiht, wie es auch ein Mensch tun würde. Das wird als natürliche Reihenfolge bezeichnet.

siehe =>


gruss conny
 
  • #3
Hallo conny,
ich danke dir ich hatte absolut ein blackout.
es funktioniert...
aber anstatt asort mußte ich nur sort nehmen. ;-)
 
  • #4
Ups, das asort sollte da eh nicht stehen :-[

Eigentlich sollte dort natcasesort stehen, deshalb hab ich auch den Verweis zum Manual dazugepackt.

gruss conny
 
  • #5
Stimmt... ber mit sort funktioniert es auch wunderbar. ;)
 
  • #6
Jup, das kannste halten wie ein Dachdecker ;) ;D

Der Unterschied zwischen sort und natcasesort ist eigentlich, dass du bei sort manchmal ein dubioses Sortierergebniss bei Numerischen Werten bekommst. Da du in deinem Eingangsposting geschrieben hast, dass die *.pdf Namen z.B 1.10.pdf, 1.12.pdf usw. sind, währe hier doch das natcasesort die bessere Lösung.

Teste mal folgendes Bsp.

Code:
<?php
$arr = array(20.1.10.pdf, 1.10.3.pdf, 10.4.14.pdf, 2.4.8.pdf, 3.7.1.pdf, 12.1.5.pdf, , 12.7.6.pdf, 21.7.9.pdf, 17.1.0.pdf);
sort($arr);
natcasesort($arr);
?>

Ergebnis sort:
1.10.3.pdf
10.4.14.pdf
12.1.5.pdf
12.7.6.pdf
17.1.0.pdf
2.4.8.pdf
20.1.10.pdf
21.7.9.pdf
3.7.1.pdf

Ergebnis natcasesort:
1.10.3.pdf
2.4.8.pdf
3.7.1.pdf
10.4.14.pdf
12.1.5.pdf
12.7.6.pdf
17.1.0.pdf
20.1.10.pdf
21.7.9.pdf


Unterschied erkannt ??? ;)


gruss conny
 
Thema:

Probleme bei der Sortierung / beim auslesen eines Ordners

ANGEBOTE & SPONSOREN

Statistik des Forums

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