Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Sortowanie zdjęć według daty modyfikacji
arekko
post
Post #1





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 8.01.2015

Ostrzeżenie: (0%)
-----


Witam, mam taki kod który wyświetla miniatury z pliku i chciałbym zmienić go tak aby wyświetlał je według kolejności modyfikacji. Pomoże ktoś?

<div align="center" id="galeria";>
<ul><?php
$katalog = "obrazki";
$katalogminiaturki = "miniaturki";
$galeria = opendir( $katalog );
while ( $zdjecie = readdir( $galeria ) ){
$odczyt = pathinfo( $katalog.'/'.$zdjecie );
if ( $odczyt['extension'] == 'jpg' ){
echo '<li>
<a rel="mlbox[test]" href="'.$katalog.'/'.$zdjecie.'" rel="mlbox" >
<img src="'.$katalogminiaturki.'/'.$zdjecie.'" alt="ZdjÍcie: '.$zdjecie.'" /></a></li>';
}
}
closedir($galeria);
?>
</ul>
</div>
Go to the top of the page
+Quote Post
2 Stron V  < 1 2  
Start new topic
Odpowiedzi (20 - 27)
trueblue
post
Post #21





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


W pętli niepotrzebny klucz.
Ścieżka bez katalogu jest w $filename['zdjecie'], czas w $filename['czas']
Go to the top of the page
+Quote Post
arekko
post
Post #22





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 8.01.2015

Ostrzeżenie: (0%)
-----


Poprawiłem na coś takiego:
  1. <?php
  2. $katalog = "obrazki";
  3. $katalogminiaturki = "miniaturki";
  4. $galeria = opendir( $katalog );
  5.  
  6. while ( false !== ( $zdjecie = readdir( $galeria ) ))
  7. {
  8. $odczyt = pathinfo( $katalog.'/'.$zdjecie );
  9.  
  10. if ($zdjecie != '.' && $zdjecie != '..')
  11. {
  12.  
  13. {
  14. $tablica[] = array($filename['zdjecie'] =>$zdjecie, $filetime['czas'] => filemtime( $katalog.'/'.$zdjecie ));
  15. }
  16. }
  17. }
  18.  
  19.  
  20.  
  21. krsort($tablica);
  22. foreach ($tablica as $filetime => $filename )
  23.  
  24. {
  25. echo date($filetime). '--' .$filename. '
  26. <li><a rel="mlbox[test]" href="'.$filename.'" rel="mlbox" >
  27. <img src="'.$filename.'" alt="ZdjÍcie: '.$zdjecie.'" /></a></li>';
  28. }
  29.  
  30. ?


O jaki klucz chodzi?
Go to the top of the page
+Quote Post
trueblue
post
Post #23





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Trudno to nazwać poprawą. Wcześniej tablica była budowana poprawnie.
W pętli wyświetlającej zdjęcia powinieneś odnieść do elementów tabicy, które podałem - przecież właśnie z tym fragmentem zgłaszałeś problem...

Piąty przykład: http://www.p-programowanie.pl/php/tablice-asocjacyjne/
Go to the top of the page
+Quote Post
arekko
post
Post #24





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 8.01.2015

Ostrzeżenie: (0%)
-----


Teraz coś takiego:
  1.  
  2. $katalog = "obrazki";
  3. $katalogminiaturki = "miniaturki";
  4. $galeria = opendir( $katalog );
  5.  
  6. while ( false !== ( $zdjecie = readdir( $galeria ) ))
  7. {
  8. $odczyt = pathinfo( $katalog.'/'.$zdjecie );
  9.  
  10. if ($zdjecie != '.' && $zdjecie != '..')
  11. {
  12.  
  13. {
  14. $tablica[] = array('zdjecie' =>$zdjecie,'czas' => filemtime( $katalog.'/'.$zdjecie ));
  15. }
  16. }
  17. }
  18.  
  19.  
  20.  
  21. asort($tablica);
  22.  
  23. foreach ($tablica as $klucz => $wartosc)
  24. echo $klucz." --> ".$wartosc.'
  25. <a rel="mlbox[test]" href="'.$katalog.'/'.$filename.'" rel="mlbox" >
  26. <img src="'.$katalogminiaturki.'/'.$filename.'" alt="ZdjÍcie: '.$filename.'" /></a>';
  27.  
  28.  
  29.  
  30. ?>


Zdjęcia wyglądają na posortowane:
5 --> Array ZdjÍcie: 4 --> Array ZdjÍcie: 1 --> Array ZdjÍcie: 3 --> Array ZdjÍcie: 0 --> Array ZdjÍcie: 2 --> Array ZdjÍcie: 6 --> Array ZdjÍcie:

Jednak same obrazki się nie wyświetlają.
Go to the top of the page
+Quote Post
trueblue
post
Post #25





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Cytat(trueblue @ 10.02.2015, 19:49:23 ) *
W pętli wyświetlającej zdjęcia powinieneś odnieść do elementów tablicy, które podałem.

Podałem Ci:
$filename['zdjecie']
$filename['czas']

Ale skoro teraz zmieniłeś nazwę zmiennej to te dwie dane są w $wartosc.

Klucz nie jest potrzebny w pętli, podałem Ci przykład, bo pytałeś o jaki klucz chodzi, Ty natomiast przepisałeś ten przykład.
Go to the top of the page
+Quote Post
arekko
post
Post #26





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 8.01.2015

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $katalog = "obrazki";
  3. $katalogminiaturki = "miniaturki";
  4. $galeria = opendir( $katalog );
  5.  
  6. while ( false !== ( $zdjecie = readdir( $galeria ) ))
  7. {
  8. $odczyt = pathinfo( $katalog.'/'.$zdjecie );
  9.  
  10. if ($zdjecie != '.' && $zdjecie != '..')
  11. {
  12.  
  13. {
  14. $tablica[] = array('zdjecie' =>$zdjecie,'czas' => filemtime( $katalog.'/'.$zdjecie ));
  15. }
  16. }
  17. }
  18.  
  19.  
  20.  
  21. asort($tablica);
  22. foreach ($tablica as $filetime => $filename )
  23.  
  24. {
  25. echo ($filename['zdjecie']). '--' .$filename['czas']. '
  26. <li><a rel="mlbox[test]" href="'.$filename.'" rel="mlbox" >
  27. <img src="'.$filename.'" alt="ZdjÍcie: '.$filename.'" /></a></li>';
  28. }
  29.  
  30. ?>


Tym razem coś takiego jak powyżej. Zdjęcia wyświetają sie według nazwy a nie daty…


Pozmieniałem trochę i już się sortują:
  1.  
  2. $katalog = "obrazki";
  3. $katalogminiaturki = "miniaturki";
  4. $galeria = opendir( $katalog );
  5.  
  6. while ( false !== ( $zdjecie = readdir( $galeria ) ))
  7. {
  8. $odczyt = pathinfo( $katalog.'/'.$zdjecie );
  9.  
  10. if ($zdjecie != '.' && $zdjecie != '..')
  11. {
  12.  
  13. {
  14. $tablica[] = array('czas' => filemtime( $katalog.'/'.$zdjecie ), 'zdjecie' => $zdjecie);
  15. }
  16. }
  17. }
  18.  
  19.  
  20.  
  21. asort($tablica);
  22. foreach ($tablica as $filename)
  23.  
  24. {
  25. echo ($filename['czas']. '--' .$filename['zdjecie']). '
  26. <li><a rel="mlbox[test]" href="'.$katalog.'/'.$filename.'" rel="mlbox" >
  27. <img src="'.$katalogminiaturki.'/'.$filename.'" alt="ZdjÍcie: '.$filename.'" /></a></li>';
  28. }
  29.  
  30.  
  31.  


Jednak zdjęcia są tak jakby puste, jakby kod nie mógł znaleźć zdjęcia.


Już mam:
problem leżał tutaj
  1. <li><a rel="mlbox[test]" href="'.$katalog.'/'.$filename['zdjecie'].'" rel="mlbox" >
  2. <img src="'.$katalogminiaturki.'/'.$filename['zdjecie'].'" alt="ZdjÍcie: '.$filename.'" /></a></li>';

  1. '.$katalog.'/'.$filename['zdjecie'].'
  2. '.$katalogminiaturki.'/'.$filename['zdjecie'].'


Wygląda na to że działa, zobaczymy jak w praktyce, dzięki (IMG:style_emoticons/default/smile.gif)



Zdjęcia się sortują i wyświetlają ok. Problem jest jednak taki, że jak na serwerze mam jedno zdjęcie z Stycznia 2015 a drugie z Lutego 2015 roku, to nie sortują się one poprawnie.. Jak temu zapobiec, żeby kod uwzględniał pełną datę? sekundy, minuty, godziny, dni, miesiące i lata?

Takie coś nie działa:
  1. date('F d Y, H:i:s', $filename['czas']. '-->' .$filename['zdjecie']).


Ten post edytował arekko 10.02.2015, 22:18:06
Go to the top of the page
+Quote Post
trueblue
post
Post #27





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Ja już nie mam siły Ci tłumaczyć, może znajdzie się ktoś ze stuprocentowym stanem cierpliwości do Ciebie.
Powodzenia!
Go to the top of the page
+Quote Post
arekko
post
Post #28





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 8.01.2015

Ostrzeżenie: (0%)
-----


W takim razie jak mam to napisać?

Zamiast: asort($tablica);

Wystarczyło dać: arsort($tablica);

Dzięki za pomoc (IMG:style_emoticons/default/smile.gif)

Temat można zamknąć.

Ten post edytował arekko 11.02.2015, 19:56:40
Go to the top of the page
+Quote Post

2 Stron V  < 1 2
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.12.2025 - 11:20