Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Listowanie obrazów według daty.
Forum PHP.pl > Forum > Przedszkole
ScriptKinG
Witam! Znalazłem w internecie i lekko zmodyfikowałem kod na listowanie katalogu. Potrzebuję teraz zmienić go tak, aby posortować go według daty (Obojętne w którym kierunku).

CODE
<?
$dir = 'thumbs';
$imagesExtensions = array('jpg', 'jpeg', 'gif', 'png');
$files = scandir($dir);

foreach($files AS $file)
{
$fileinfo = pathinfo($file);
if(is_file($dir.'/'.$file) AND in_array($fileinfo['extension'], $imagesExtensions))
{
echo "<center><a href='XXXXX' rel='lightbox' target='blank'><img src='thumbs/$file' alt=''></a><br><small><a href='XXXXX' rel='lightbox' target='blank'>$file</a></small><br><br></center>";
}
}
?>


Jak najłatwiej tego dokonać?
nospor
$files to tablica.

Teraz zajrzyj do manuala do działu TABLICE - masz tam funkcje do sortowania
ScriptKinG
Myślę, że miałeś na myśli tą funkcję:

  1. asort($files);
  2.  
  3. foreach ($files as $key => $val) {
  4. echo "$key = $val<br>";
  5. }


Tylko jak ją użyć do daty, a nie nazwy pliku?
_Borys_
Przykład
  1. <?php
  2.  
  3. $dir = "../folder_name";
  4. $dh = opendir($dir);
  5. while (false !== ($file = readdir($dh)))
  6. {
  7. if ($file != "." && $file != "..")
  8. {
  9. $files[filemtime($file)] = $file;
  10. }
  11. }
  12. krsort($files);
  13. foreach ($files as $filetime => $filename)
  14. {
  15. echo date('F d Y, H:i:s', $filetime) . ' - ' . $filename . '<br />';
  16. }
  17.  
  18. ?>
ScriptKinG
Czy na pewno w zmiennej $dir powinny być dwie kropeczki? Po usunięciu jednej z nich strona wyświetla jedynie dwa pliki z katalogu.
_Borys_
W ten sposób jest ustawione skanowanie folderu w którym jest ten skrypt php.
ScriptKinG
Okej, rozumiem. Przy dwóch kropeczkach strona się wczytuje, wczytuje i nic - białe tło, czyżby hosting był tutaj winny?
_Borys_
Spróbuj ustawić tak jak w swoim skrypcie.
ScriptKinG
Po połączeniu skryptów:

  1. <?php
  2.  
  3. $dir2 = "../images";
  4. $dh = opendir($dir2);
  5. $dir = 'thumbs';
  6. $imagesExtensions = array('jpg', 'jpeg', 'gif', 'png');
  7. $files = scandir($dir);
  8.  
  9. while (false !== ($file = readdir($dh)))
  10. {
  11. if ($file != "." && $file != "..")
  12. {
  13. $files[filemtime($file)] = $file;
  14. }
  15. }
  16.  
  17. krsort($files);
  18. foreach ($files as $filetime => $filename)
  19. {
  20. echo "<center><a href='XXX' rel='lightbox' target='blank'><img src='thumbs/$filename' alt=''></a><br><small><a href='XXX' rel='lightbox' target='blank'>$filename</a></small><br><br></center>";
  21. }
  22.  
  23. ?>


Wyświetla się to samo - Czysta, biała strona.
_Borys_
Po co scandir jak jest readdir
  1. <?php
  2.  
  3. $dir2 = "../images";
  4. $dh = opendir($dir2);
  5. //$dir = 'thumbs';
  6. $imagesExtensions = array(
  7. 'jpg',
  8. 'jpeg',
  9. 'gif',
  10. 'png');
  11. //$files = scandir($dir);
  12. while (false !== ($file = readdir($dh)))
  13. {
  14. if ($file != "." && $file != "..")
  15. {
  16. $files[filemtime($file)] = $file;
  17. }
  18. }
  19. krsort($files);
  20. foreach ($files as $filetime => $filename)
  21. {
  22. echo "<center><a href='XXX' rel='lightbox' target='blank'><img src='thumbs/$filename' alt=''></a><br><small><a href='XXX' rel='lightbox' target='blank'>$filename</a></small><br><br></center>";
  23. }
  24.  
  25. ?>

Pokombinuj ze ścieżkami do folderów, nie wiem czy dobrze. Domyślam się, że nazwy miniatur są takie same jak dużych obrazków.
ScriptKinG
Tak, nazwy w obydwu przypadkach są takie same. Niestety, lecz po kilku kombinacjach ze ścieżkami nadal nie pozbyłem się problemu. Po zastosowaniu:
  1. ini_set( 'display_errors', 'On' );
  2. error_reporting( E_ALL );


wyskoczyły takie błędy:

Kod
Warning: opendir(/htdocs/images): failed to open dir: No such file or directory in /vhome/s/scriptking/www/htdocs/listowanie2.php on line 5
Warning: readdir() expects parameter 1 to be resource, boolean given in /vhome/s/scriptking/www/htdocs/listowanie2.php on line 13


13 linią jest:

Kod
while (false !== ($file = readdir($dh)))


5 linią jest:

Kod
$dh = opendir($dir2);


Może podam również ścieżki:
/htdocs/listowanie2.php - skrypt listowania
/htdocs/images/2128204.jpg - przykładowa ścieżka do obrazka
/htdocs/thumbs/2128204.jpg - przykładowa ścieżka do miniaturki

Wszystko odnosi się do ścieżki, więc na pewno miałeś rację. Tylko pozostaje pytanie - Jak ją odpowiednio zintegrować ze skryptem?
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.