Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Sortowanie wyswietlonych plików znajdujacych sie w katalogu
Forum PHP.pl > Forum > Przedszkole
neiss
Mam skrypcik wyswietlajacy zawartosc katalogu lecz chciałbym aby jeszcze była opcja sortowania tego co zostaje wyświetlone np. wg daty albo wg rozszerzeń lub nazwy pliku dacie rade troche go zmodyfikowac?
  1. <?php
  2. function ICO($dir_name)
  3. { $liczba=0;
  4. $liczba2=0;
  5. if ($dp = opendir($dir_name))
  6. { while (false !== ($plik = readdir($dp)))
  7. if (!is_dir($dir_name.'/'.$plik.'/'))
  8. { $poz=strrpos($plik,'.');
  9. if ($poz!==false)
  10. { if(substr($plik,$poz+1)!='php')
  11. { echo '<a href="'.$dir_name.'/'.$plik.'" target=_blank>';
  12. switch (substr($plik,$poz+1))
  13. { case 'doc': echo '<img border="0" src="gfx/doc.png"> '; break;
  14. ...
  15. case 'exe': echo '<img border="0" src="gfx/exe.png"> '; break;
  16. default: echo '<img border="0" src="gfx/no.png"> ';
  17. }
  18. $dl=20;
  19. if (strpos($plik,'.')<$dl) $dl=strpos($plik,'.');
  20. echo substr($plik,0,$dl).'</a> - '.date ('d-m-y H:i', filemtime($dir_name.'/'.$plik)).
  21. '<br>';
  22. }
  23. if (substr($plik,$poz+1)!='php')
  24. $liczba=$liczba+1;
  25. if ($liczba==20)
  26. { $liczba=0;
  27. $liczba2=$liczba2+1;
  28. echo '</td><td valign="top">';
  29. }
  30. if ($liczba2==20)
  31. { $liczba2=0;
  32. echo '</td></tr><tr><td valign="top">';
  33. }
  34. }
  35. }
  36. closedir($dp);
  37. }
  38. else
  39. return false;
  40. }
  41. ?>
hwao
Odzielasz prezentacje od logiki.

Zbierasz zawartosc folderu do tablicy, nastepnie uzywasz array_multisort.
neiss
Dzieki za podpowiedz dla ludzi majacych ten sam problem zamieszczam zmodyfikowany kod smile.gif
THX hwao
  1. <?php
  2. function ICO($dir_name)
  3. {
  4. $liczba=0;
  5. $liczba2=0;
  6. $liczba_el=0;
  7. if ($dp = opendir($dir_name))
  8. {
  9. while (false !== ($plik = readdir($dp)))
  10. if (!is_dir($dir_name.'/'.$plik.'/'))
  11. {
  12. $poz=strrpos($plik,'.');
  13. if ($poz!==false)
  14. {
  15. if(substr($plik,$poz+1)!='php')
  16. {
  17. $tab[$liczba_el]=$plik;
  18. $liczba_el+=1;
  19. }
  20. }
  21. }
  22. closedir($dp);
  23. }
  24. else return false;
  25. $tab1 = array_map('strtolower', $tab);
  26. array_multisort($tab1, SORT_ASC, SORT_STRING, $tab);
  27. $i=0;
  28. while ($i<$liczba_el)
  29. {
  30. $plik=$tab[$i];
  31. $poz=strrpos($plik,'.');
  32. echo '<a href="'.$dir_name.'/'.$plik.'" target=_blank>';
  33. switch (substr($plik,$poz+1))
  34. {
  35. case 'doc': echo '<img border="0" src="gfx/doc.png"> '; break;
  36.  ...
  37. case 'exe': echo '<img border="0" src="gfx/exe.png"> '; break;
  38. default: echo '<img border="0" src="gfx/no.png"> ';
  39. }
  40. $dl=20;
  41. if ($poz<$dl) $dl=$poz;
  42. echo substr($plik,0,$dl).'</a> - '.date ('d-m-y H:i', filemtime($dir_name.'/'.$plik)).'<br>';
  43. $liczba+=1;
  44. if ($liczba==20)
  45. {
  46. $liczba=0;
  47. $liczba2+=1;
  48. echo '</td><td valign="top">';
  49. }
  50. if ($liczba2==20)
  51. {
  52. $liczba2=0;
  53. echo '</td></tr><tr><td valign="top">';
  54. }
  55. $i+=1;
  56. }
  57. }
  58. ?>

Jest to gotowa finkcja ktora wyswietla zawartosc katalogu i przy przekroczeniu liczby plikow = 20 dzieli na tabelki (trzeba umiescic zamieszczone wyniki w tabelce)
<?php
echo '<table width="504" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td background="gfx/tekst_top.gif" valign="top" height="20">
      <b>DOWNLOAD</b>
</td>
</tr>
<tr>
<td background="gfx/tekst_tlo.gif" valign="top" class="tekst">
Nazwa - data modyfikacji
<div align="left">';
ICO("download");

echo ' </div>
</td>
</tr>
<tr>
<td height="2" valign="top">
<img src="gfx/tekst_bottom.gif" width="508" height="1">
</td>
</tr>
</table>';
?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.