Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> [PHP]Wyświetlanie zdjęć według kolejności modyfikacji - PHP
arekko
post 17.01.2015, 14:27:46
Post #1





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

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


Witam, mam taki plik PHP, który pobiera mniaturki z folderu i tworzy galerie. Chciałbym go edytować tak żeby wyświetlał zdjęcia w kolejności ostatniej modyfikacji. Co musze w nim zmienić?

<html>
<head>
<link rel="stylesheet" href="img/style.css" type="text/css" />
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript" src="img/mlbox.js"></script>
<title>Galeria zdjęć - plener</title>
</head>
<body>
<a href="../galeria.html">Wróć</a>
<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>
</body>
</html>

Ktoś pomoże?
Go to the top of the page
+Quote Post
Daimos
post 17.01.2015, 20:05:13
Post #2





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

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


Musisz w pętli sprawdzić datę modyfikacji każdego pliku. Pierwsze lepsze rozwiązanie ze stackoverflow:
  1. function scan_dir($dir) {
  2. $ignored = array('.', '..', '.svn', '.htaccess');
  3.  
  4. $files = array();
  5. foreach (scandir($dir) as $file) {
  6. if (in_array($file, $ignored)) continue;
  7. $files[$file] = filemtime($dir . '/' . $file);
  8. }
  9.  
  10. arsort($files);
  11. $files = array_keys($files);
  12.  
  13. return ($files) ? $files : false;
  14. }


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post
arekko
post 17.01.2015, 23:36:00
Post #3





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

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


Mógłbyś dokładniej powiedzieć mi jak mam to zastosować? smile.gif
Go to the top of the page
+Quote Post
Daimos
post 18.01.2015, 22:33:26
Post #4





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

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


Nie wiesz jak funkcje wywoływać? Oj, chyba trzeba zacząć od podstaw
  1. $nazwaFolderu = '/moj-folder-z-plikami/';
  2. $pliki = scan_dir($nazwaFolderu);
  3. // teraz pod zmienną $pliki masz tablicę z plikami, posortowanymi według daty modyfikacji, jak chciałeś
  4. // przykład wyświetlenia:
  5. var_dump($pliki);

Żeby wyświetlić ładnie te pliki, wystarczy, że skorzystasz z dowolnej pętli, najłatwiej foreach i celowo nie napisałem Ci całości, żebyś trochę ruszył głową, to dział do pomagania, nie do odwalania roboty wink.gif


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post
arekko
post 6.02.2015, 16:07:40
Post #5





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

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


Zrobiłem coś takiego, zdjęcia się wyświetlają z datą modyfikacji i nazwą jednak nie są posortowane według kolejności. Wyskakuje mi też coś takiego:

Warning: filemtime() [function.filemtime]: stat failed for 2.png in /home/u181711956/public_html/test/test.php on line 33

A 33 linia to: $zdjecia[filemtime($zdjecie)] = $zdjecia;

A to kod:
  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. $zdjecia[filemtime($zdjecie)] = $zdjecia;
  15. }
  16. }
  17.  
  18. krsort($zdjecia);
  19. foreach ($zdjecia as $filetime => $filename )
  20.  
  21. {
  22. echo date('F d Y, H:i:s', $filetime) . '-' . $filename . '
  23. <a rel="mlbox[test]" href="'.$katalog.'/'.$zdjecie.'" rel="mlbox" >
  24. <img src="'.$katalogminiaturki.'/'.$zdjecie.'" alt="ZdjÍcie: '.$zdjecie.'" /></a>';
  25.  
  26.  
  27. }
  28. }
  29.  
  30.  
  31. ?>


Gdzie tu jest problem?

Zrobiłem już coś takiego:

  1. <?php
  2. $katalog = "../admin/dodaj/krajobraz/obrazki";
  3. $katalogminiaturki = "../admin/dodaj/krajobraz/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. $zdjecia[filemtime($katalog)] = $zdjecia;
  15. }
  16. }
  17.  
  18. krsort($zdjecia);
  19. foreach ($zdjecia as $filetime => $filename )
  20.  
  21. {
  22. echo date('F d Y, H:i:s', $filetime) . '-' . $filename . '
  23. <a rel="mlbox[test]" href="'.$katalog.'/'.$zdjecie.'" rel="mlbox" >
  24. <img src="'.$katalogminiaturki.'/'.$zdjecie.'" alt="ZdjÍcie: '.$zdjecie.'" /></a>';
  25.  
  26.  
  27. }
  28. }
  29.  
  30.  
  31. ?>


Jednak zdjęcia dalej się nie sortują według daty. Obok każdego zdjęcia wyskakuje taka sama informacja o kodzie: "January 24 2015, 16:30:28-Array"

Ten post edytował arekko 6.02.2015, 16:06:13
Go to the top of the page
+Quote Post
trueblue
post 6.02.2015, 17:46:11
Post #6





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


1. Nadal przekazujesz nie taki jak być powinien argument, do filemtime.
2. Nadal przypisujesz do elementu tablicy całą, samą siebie.
3. Argument, który przekazujesz do filemtime mógłbyś użyć jako źródło <img> (gdyby był poprawny).


--------------------
Go to the top of the page
+Quote Post
arekko
post 6.02.2015, 20:49:06
Post #7





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

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


Zmodyfikowałem lekko kod:

  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[filemtime($katalog)] = $zdjecie;
  15. }
  16. }
  17.  
  18. krsort($tablica);
  19. foreach ($tablica as $filetime => $filename )
  20.  
  21. {
  22. echo date('F d Y, H:i:s', $filetime) . '.' . $filename . '
  23. <a rel="mlbox[test]" href="'.$katalog.'/'.$zdjecie.'" rel="mlbox" >
  24. <img src="'.$katalogminiaturki.'/'.$zdjecie.'" alt="ZdjÍcie: '.$zdjecie.'" /></a>';
  25.  
  26.  
  27. }
  28. }
  29.  
  30.  
  31. ?>


W tej chwili wyświetlają mi się już nazwy poszczególnych zdjęć, jednak daty modyfikacji wszędzie są takie same..
Go to the top of the page
+Quote Post
trueblue
post 6.02.2015, 20:54:02
Post #8





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


1. Kup okulary.
2. Kiedy zakupisz okulary, to sprawdź co napisałem w poście wyżej, w punkcie 1.


--------------------
Go to the top of the page
+Quote Post
arekko
post 6.02.2015, 20:55:51
Post #9





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

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


Wiem że zły argument ale nie wiem jaki .. próbowałem już każdego chyba ..

Edytowany:
Już mam! $katalog.'/'.$zdjecie
Daty są ok teraz

Tylko że powstał kolejny problem. Każde zdjęcie wyświetla się po dwa-trzy razy..

Ten post edytował arekko 6.02.2015, 20:59:04
Go to the top of the page
+Quote Post
nospor
post 6.02.2015, 21:46:11
Post #10





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6297
Dołączył: 27.12.2004




pytaz o to samo w kilku tematach....


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Closed TopicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.04.2024 - 07:26