Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Wyświetlanie zdjęć znajdujących się w katalogu.
Forum PHP.pl > Forum > Przedszkole
papuncio
Witam,

Zaczynam dopiero pisać w php i już mam kłopot. Staram sie napisać prosty skrypt wyświetlający zdjęcia znajdujące się w katalogu. Napisałam jak poniżej, ale za nic w świecie nie moge tego zmusić, żeby wyświetlał tylko pliki określonego typu, tak jak dir *.jpg. Problem pewnie banalny.

  1. <BR><?php <BR><BR>$katalog = dir('.');<BR><BR>while($plik = $katalog->read()){<BR><BR>echo "<img src=" .$plik. ">
  2.  
  3. ";<BR><BR>}<BR><BR>$katalog->close(); <BR><BR>?><BR><BR>
John
Albo skorzystaj z funkcji glob" title="Zobacz w manualu PHP" target="_manual albo dodaj warunek sprawdzając rozszerzenie pliku
potreb
  1. <?php
  2. $folder = ".";
  3. $open = opendir($folder);
  4. while ($fotos = readdir($open))
  5. {
  6.  if (eregi("gif",$fotos) or eregi("jpg",$fotos))
  7. {
  8.  echo $fotos."<br>\n";
  9. }
  10. else if ($fotos=="." or $fotos=="..")
  11. {
  12.  
  13. }
  14. }
  15. ?>


Albo skorzystaj z tego przykładu
bim2
@papuncio
U ciebie wyglądądac to będzie tak:
  1. <?php
  2.  
  3. $katalog = dir('.');
  4.  
  5. while($plik = $katalog->read()){
  6. if (eregi("gif",$plik) or eregi("jpg",$plik))
  7. {
  8. echo "<img src=" .$plik. "><br><br>";
  9. }
  10. }
  11.  
  12. $katalog->close();
  13.  
  14. ?>

winksmiley.jpg
papuncio
Dzięki, dokładnie to było mi potrzebne. Teraz poradzę sobie już z podpisami z pliku tekstowego.
phpion
Kolega ~bim2 chyba nie do końca potrafi żonglować wyrażeniami regularnymi. To:
  1. <?php
  2. if (eregi("gif",$plik) or eregi("jpg",$plik))
  3. ?>

można z powodzeniem zapisać jako:
  1. <?php
  2. if (eregi("gif$|jpg$",$plik))
  3. ?>
bim2
Kolega bim umie żąglować wyrażeniami, ale kopiował od kolegi ~potreb , żeby było analogicznie smile.gif i żeby kolegi ~papuncio nie wprowadzać w błąd. winksmiley.jpg
potreb
Nie ładnie kopiować winksmiley.jpg aczkolwiek phpion dzięki, za twój sposób bo wiem jak u siebie przerobić kawałek kodu smile.gif Z drugiej strony bim2, twój sposób nie uwzględnia katalogów nadrzędnych tongue.gif
papuncio
Zrobiłem jeszcze inaczej:

<?php
foreach (glob("*.jpg") as $filename)

{
echo "<img src=" .$filename. "><br><br>";


if (file_exists(''.$filename.'.txt'))
include (''.$filename.'.txt');
else
include('blank.txt');


}
?>

Wyświetla mi zdjęcia i opisy dołączone w plikach txt.

Mam jednak jeszcze jedno pytanie, jak zmusić, żeby pliki były wyświetlane w innej kolejności? Teraz jest według nazwy, a jak zrobić odwrotnie lub według daty?
bim2
sort" title="Zobacz w manualu PHP" target="_manual
Zainteresuj się tym smile.gif

@down nie znasz się i ty i ja

Powinno być
rsort" title="Zobacz w manualu PHP" target="_manual
smile.gif
Czyli w twoim wypadku:
  1. <?php
  2. $files = rsort(glob("*.jpg"));
  3. foreach ($files as $filename)
  4.  
  5. {
  6. echo "<img src=" .$filename. "><br><br>";
  7.  
  8.  
  9. if (file_exists(''.$filename.'.txt'))
  10. include (''.$filename.'.txt');
  11. else
  12. include('blank.txt');
  13.  
  14.  
  15. }
  16. ?>
bartg
Może się nie znam, ale pliki zapisał bym do tablicy a potem użył funkcji ksort()
papuncio
Dzięki pomogło, a co do tablicy to... może za kilkanaście minut. Narazie biorę manuala.

Jednak jeszcze mały kłopot, jak zejść katalog niżej:
Kod
<?php
foreach (glob("foto/*.jpg") as $filename)

{
echo "<img src="'foto/'.$filename. ">"<br><br>;

}
?>


to mi niestety nie działa.
A w innym skrypcie działałoz include ;(
webdice
Funkcja foreach" title="Zobacz w manualu PHP" target="_manual nie operuje na katalogach, zrób analogicznie do powyższego przykładu w miejsce kropki wstawiając nazwę katalogu.

Cytat(phpion @ 25.01.2008, 17:40:02 ) *
Kolega ~bim2 chyba nie do końca potrafi żonglować wyrażeniami regularnymi. To:
  1. <?php
  2. if (eregi("gif",$plik) or eregi("jpg",$plik))
  3. ?>

można z powodzeniem zapisać jako:
  1. <?php
  2. if (eregi("gif$|jpg$",$plik))
  3. ?>


To ja dorzyce swoje 3 grosze. Powinno być:

  1. <?php
  2. if (eregi(".gif$|.jpg$",$plik))
  3. ?>


Twój kod potraktuje zdjeciejpg jako plik graficzny.
papuncio
Chyba za dużo chcę na raz ;(

Kod
$katalog = dir('foto/'); // bieżący katalog
while($plik = $katalog->read()){
if (eregi("gif$|jpg$",$plik)){
echo "<img src=" foto/.$plik. "><br><br>";
if (file_exists(''.$plik.'.txt'))
include ('''foto/'.$plik.'.txt');
else
include('foto/blank.txt');
}
}
$katalog->close();
?>
mike
~papuncio proszę poprawić wszystkie swoje posty.
Jeśli umieszczasz kod źródłowy na forum to ma on być objęty tagami bbCode.
papuncio
Niestety dalej nie mogę sobie poradzić ;(
Wyświetla mi znaczniki o braku plików (odnośnik jest bez wejścia do podkatalogu)
Próbowałem na różne sposoby dodać "foto/" ala za każdym razem wyskakują błędy.

Kod
<?php

$katalog = dir('foto/');
while($plik = $katalog->read()){
if (eregi("\.gif$|\.jpg$",$plik)){
echo "<img src=".$plik. "><br><br>";
}
}

$katalog->close();
?>
potreb
Sprawdź mój sposób, listujesz folder ale przy okazji katalogi nadrzedne ci wyswietli
papuncio
I udało mi się.
Jeszcze raz dziękuję. To, co chciałem osiągnąć, czyli prosta galeria foto działa.
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.