Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ostanio dodane zdjęcie, Poszukuję skryptu, który pokaże ostatnią fotkę.
joka2
post
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 6.07.2009

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


Witam Wszystkich.

Posiadam stronę, na której umieszczam moje zdjęcia. Chciałbym dodać gadżet w postaci ostatnio dodanego zdjęcia.

- fotki znajdują się w katalogu „foto”,
- nazwy zdjęć zaczynają się od 001.jpg, 002.jpg, itd…

Skrypt miałby otworzyć katalog, wczytać do tablicy wszystkie zdjęcia, a następnie wyświetlić zdjęcie o najwyższym numerze.

Widzę to tak:
  1. <?php
  2.  
  3. //Ustalenie katalogu, w którym znajdują się zdjęcia
  4. define('KATALOG_ZDJEC','./page/foto/');
  5.  
  6. //Zmienna x zerujemy
  7. $x=0;
  8.  
  9. //Pętlą pobieramy zdjęcia z katalogu a następnie przypisujemy do zmiennej album, zwiększając o jeden
  10. foreach (glob(KATALOG_ZDJEC."*.jpg") as $zdjecie) $album[$x++]=$zdjecie;
  11.  
  12. //Wyświetlamy zdjęcie
  13. echo "<img src=\"{$album[$x]}\";
  14.  
  15. ?>

Niestety, ale nie wiem, jak mam wyświetlić ostatnie zdjęcie, które jest np. 123.jpg…

Prośba o pomoc. Przeszukałem już to forum pod tym kątem. Niestety, nic nie znalazłem.

Coś mi się udało wyczesać:
  1. <?php
  2.  
  3.    $katalog="zaw";
  4.    $dir=opendir($katalog);
  5.  
  6.    while($nazwa_pliku=readdir($dir))
  7.        {
  8.        if(($nazwa_pliku!=".")&&($nazwa_pliku!=".."))
  9.            {
  10.            $list_plikow.="<img src=./zaw/$nazwa_pliku><br>";
  11.            }
  12.        }
  13.    closedir($dir);
  14.  
  15. echo "$list_plikow";
  16. ?>

Efekt skryptu na stronie: zdjecia z katalogu.

Źródło strony wygląda tak:
  1. <img src=./zaw/002.jpg><br><img src=./zaw/001.jpg><br>


Pozostało mi tylko wyświetlenie tylko ostatniego zdjęcia z katalogu. Ktoś chce mi pomóc?

Coś czuję, że tablica będzie potrzebna...

Ten post edytował joka2 6.07.2009, 13:46:50


--------------------
Zapraszam do mojej prywatnej galerii zdjęć: www.merde.pl.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
sowiq
post
Post #2





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Zrób np. tak:

  1. <?php
  2. $max = -1;
  3. $plik = '';
  4. while($nazwa_pliku=readdir($dir)){ // ta pętla już istnieje, więc możesz ją wykorzystać
  5.    if( (int)$nazwa_pliku > $max ){
  6.        $max = (int)$nazwa_pliku;
  7.        $plik = $nazwa_pliku;
  8.    }
  9. }
  10.  
  11. // tutaj warunek, czy $plik nie jest pusta...
  12. echo 'Najnowszy plik to: '.$plik;
  13. ?>


Ten post edytował sowiq 6.07.2009, 14:58:33
Go to the top of the page
+Quote Post
joka2
post
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 6.07.2009

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


Działa, jak ta lala!
Dziękuję sowiq za pomoc w rozwiązaniu mojego problemu smile.gif

  1. <?php
  2.  
  3.    $katalog="zaw"; // musi być katalog o nazwie na przyklad zaw
  4.    $dir=opendir($katalog); // otwieramy katalog zaw
  5.    $max = -1; // ustalamy zmienna max na -1 ale po co nie wiem...
  6.    $plik = ''; // zerujemy nazwe plik, chyba zerujemy aby nie było śmieci
  7.    while($nazwa_pliku=readdir($dir)){ // petla sprawdza czy kolejny plik w katalogu jest ostatnim
  8.        if( (int)$nazwa_pliku > $max ){
  9.    $max = (int)$nazwa_pliku; // nie czaje tej linii, ale widocznie musi byc
  10.    $plik = $nazwa_pliku; // a teraz przypisujemy do zmiennej plik zawartosc katalogu
  11.        }
  12.    }
  13.  
  14. // tutaj warunek, czy $plik nie jest pusta...
  15. echo 'Najnowszy plik to: <br><img src=./zaw/'.$plik.'>'; // wyswietlanie ostatniego pliku!
  16. ?>


Jeśli się mylę, to proszę o podpowiedź, do czego służą niektóre linie kodu.

Jeszcze raz dziękuję.
Efekt Twojej pracy znajduje się na mojej stronie (link w stopce).
Pozdrawiam.


--------------------
Zapraszam do mojej prywatnej galerii zdjęć: www.merde.pl.
Go to the top of the page
+Quote Post
blooregard
post
Post #4


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Cytat
Jeśli się mylę,

Mylisz się, i to bardzo. Pozwolę sobie wyręczyć sowiq'a.
Nie czaisz podstawowych pojęć:

Cytat
$max = -1; // ustalamy zmienna max na -1 ale po co nie wiem...

Inicjalizujemy ją taką wartością, po to, żeby miała jakąś wartość, z którą można byłoby ją porównać w pierwszym warunku.

Cytat
$plik = ''; // zerujemy nazwe plik, chyba zerujemy aby nie było śmieci

Inicjalizujemy pustym ciągiem. Inicjalizacja zmiennych to nawyk, który warto sobie przyswoić. W przypadku PHP, który jest językiem nie kontrolującym typu zmiennej, nie jest to konieczne (zmienną można zainicjalizować w dowolnym momencie, dowolną wartością, wtedy zmienna będzie miała typ wartości, którą ją zainicjalizowałeś), ale zalecane.

Cytat
while($nazwa_pliku=readdir($dir)){ // petla sprawdza czy kolejny plik w katalogu jest ostatni

Pętla iteruje kolejno przez wszystkie pliki w katalogu - f-cja readdir($katalog) zwraca kolejno nazwy plików w danym katalogu (http://pl2.php.net/readdir). Sprawdzenie, czy jest to ostatni plik w katalogu, byłby bez sensu, bo tu chodzi o odczytanie nazw tych plików, po kolei, wszystkich, żeby potem porównac je z oczekiwaną wartością.

Cytat
$max = (int)$nazwa_pliku; // nie czaje tej linii, ale widocznie musi byc

Ta linia rzutuje (wymusza typ zmiennej) na typ podany w nawiasie - czyli tutaj niejako "wymusza" potraktowanie nazwy pliku (będącej ciągiem znaków) jako liczby. Oczywiście byłoby to bez sensu, gdyby nazwa pliku składała się z innych znaków niz cyfry.

Cytat
$plik = $nazwa_pliku; // a teraz przypisujemy do zmiennej plik zawartosc katalogu

Nie, przypisujemy nazwę kolejnego pliku odczytanego instrukcją readdir()

Poczytaj na php.net do czego służą poszczególne funkcje, które zastosował sowiq w tym przykładzie. Wtedy będzie Ci łatwiej zrozumieć jego działanie.
Generalnie polecam zaprzyjaźnić się z dokumentacją na php.net.


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
joka2
post
Post #5





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 6.07.2009

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


To bardzo miłe @blooregard,

że podałeś mi na tacy opisy kolejnych linii kodu.

Dziękuję Ci bardzo.

Niestety,

ale zaobserwowałem problem, ponieważ w katalogu znajdują się także pliki *.txt, z opisami zdjęć...
Oczywiście mogę je (*.txt) przerzucić do innego katalogu, co już testowałem, ale czy jest możliwe ograniczenia wyników tylko do plików graficznych (*.jpg, *.png, *.gif, *.bmp)?

PS. Fajne jest to forum smile.gif


--------------------
Zapraszam do mojej prywatnej galerii zdjęć: www.merde.pl.
Go to the top of the page
+Quote Post
kajzur
post
Post #6





Grupa: Zarejestrowani
Postów: 385
Pomógł: 26
Dołączył: 22.03.2008
Skąd: TM

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


Zamiast readdir możesz użyć funkcji glob, albo do tej dodać warunki..


--------------------
Zapraszam na mojego bloga. Dowiedz się jak uzyskać darmowy, zaufany certyfikat albo jak rozpoznawać głos ;)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 05:11