Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Proszę o poradę listowanie katalogu
-JaQu-
post
Post #1





Goście







Buduję galerie na lightbox2

Na stronie gdzie dodaje się linki do plików zastosowałem listowanie katalogu.

Kod:

  1.  
  2. <?PHP
  3. $katalog = @dir('galeria/images') or die ("Nie można listować");
  4. while ($plik_kat = $katalog->read())
  5. {
  6. echo "<a href='galeria/images/$plik_kat' rel='lightbox'><img src='galeria/images/$plik_kat' alt=''></a<BR>";
  7. }
  8. $katalog->close();
  9. ?>
  10.  


Listowanie działa, generuje ładnie kolejne linku z plikami, ale dorzuca też jako link katalogi które są w środku oraz katalog główny ("images)

strona generuje taki kod:

  1.  
  2. <a href='galeria/images/bullet.gif' rel='lightbox'><img src='galeria/images/bullet.gif' alt=''></a><BR><a href='galeria/images/..' rel='lightbox'><img src='galeria/images/..' alt=''></a><BR><a href='galeria/images/loading.gif' rel='lightbox'><img src='galeria/images/loading.gif' alt=''></a><BR><a href='galeria/images/close.gif' rel='lightbox'><img src='galeria/images/close.gif' alt=''></a><BR><a href='galeria/images/nextlabel.gif' rel='lightbox'><img src='galeria/images/nextlabel.gif' alt=''></a><BR><a href='galeria/images/prevlabel.gif' rel='lightbox'><img src='galeria/images/prevlabel.gif' alt=''></a><BR><a href='galeria/images/closelabel.gif' rel='lightbox'><img src='galeria/images/closelabel.gif' alt=''></a><BR><a href='galeria/images/.' rel='lightbox'><img src='galeria/images/.' alt=''></a><BR><a href='galeria/images/download-icon.gif' rel='lightbox'><img src='galeria/images/download-icon.gif' alt=''></a><BR><a href='galeria/images/donate-button.gif' rel='lightbox'><img src='galeria/images/donate-button.gif' alt=''></a><BR><a href='galeria/images/zdjecia' rel='lightbox'><img src='galeria/images/zdjecia' alt=''></a><BR><a href='galeria/images/image-1.jpg' rel='lightbox'><img src='galeria/images/image-1.jpg' alt=''></a><BR><a href='galeria/images/thumb-1.jpg' rel='lightbox'><img src='galeria/images/thumb-1.jpg' alt=''></a><BR>
  3.  


jak widać listowane są również katalogi np drugi link a
Proszę o rade jak zmienić kod aby listowało tylko pliki np .jpg i bez katalogów

Bardzo dziękuje
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
lobopol
post
Post #2





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


  1. foreach (katalog/*.{jpg,gif,jpeg,png}', GLOB_BRACE) as $filename) {
  2.   echo realpath($filename);
  3. }
Go to the top of the page
+Quote Post
benio101
post
Post #3





Grupa: Zarejestrowani
Postów: 111
Pomógł: 10
Dołączył: 16.07.2009
Skąd: Toruń

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


Ja bym sprawdził, czy $plik_kat jest na pewno plikiem poprzez funkcję is_file. Tylko przy zwróconym true wykonałbym echo. // Dodałem ifkę, linie 4,6
  1. <?PHP
  2. $katalog = @dir('galeria/images') or die ("Nie można listować");
  3. while ($plik_kat = $katalog->read()){
  4. if(is_file($plik_kat)){
  5. echo "<a href='galeria/images/$plik_kat' rel='lightbox'><img src='galeria/images/$plik_kat' alt=''></a<BR>";
  6. }
  7. }
  8. $katalog->close();
  9. ?>


Ten post edytował benio101 29.07.2011, 17:10:43
Go to the top of the page
+Quote Post
-Gość-
post
Post #4





Goście







Szybka odpowiedź, dzieki, niespodziewałem sie.

Jestem noga w skłądni jezyka php czasem coś przerobie ale nie do końca go kumam,

Bardzo proszę o wstawienie kody jak to ma wyglądać w takim razie gdzie użyć twojego kodu (IMG:style_emoticons/default/smile.gif) <proszę nisko>
Go to the top of the page
+Quote Post
-Gość-
post
Post #5





Goście







benio101

Wrzuciłem twój kod niestety teraz strona niew zwraca żadnych linków
Go to the top of the page
+Quote Post
lobopol
post
Post #6





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


Jego metodą to
  1. if(is_file('galeria/images/'.$plik_kat)){
Go to the top of the page
+Quote Post
-Gość-
post
Post #7





Goście







teraz działą dzieki lobopol.

Teraz bede pracował nad tym żeby csały skrypt pobie raz nazwe plików z jednego katalogu i drugą nazwe z innego katalogu.

i generował linki

  1. <a href='galeria/katalog1/nazwa1.jpg' rel='lightbox'><img src='galeria/katalog2/nazwa2.jpg' alt=''></a>



a najlepiej jak by było aby potrafił połączcz ze sobą w linku pliki np plik1.jpg i thumb_plik1.jpg
Go to the top of the page
+Quote Post
lobopol
post
Post #8





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


A co za filozofia? Podmień w img images na nazwę drugiego katalogu a przed $plik_kat dodaj thumb_
  1. echo "<a href='galeria/images/$plik_kat' rel='lightbox'><img src='galeria/images/$plik_kat' alt=''></a<BR>";
Go to the top of the page
+Quote Post
jaqu
post
Post #9





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 29.07.2011

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


No tak logiczne. Dzięki

Myślałem, że będe musiał listować drugi katalog i jakoś to sklejać potem

P.S Sorka za zmiany moich loginów w tym wątku. ale teraz sie zarejestrowałem własnie i juz będe występował jako "jaqu".

Jeszcze pytanie jak to
  1. if(is_file('galeria/images/'.$plik_kat)){


zmienić aby nie pisać tego "galeria/images" defakto drugi raz. Już to zdefiniowałem jako zmienna $katalog rozumiem?

próbowałem dać
  1. f(is_file($galeria.$plik_kat)){


jedynie jest różnica że do zmiennej $katalog nie ma na końcu "/" slesza
a w if-e jest na końcu
ale nie działą

Ten post edytował jaqu 29.07.2011, 19:15:55
Go to the top of the page
+Quote Post
lobopol
post
Post #10





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


Jeżeli w $galeria masz galeria/images to musisz dodać na końcu / przecież nie masz w katalogu galeria pliku o nazwie imagesnazwa_pliku.jpg
Go to the top of the page
+Quote Post
jaqu
post
Post #11





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 29.07.2011

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


Zrobiłem teraz tak
  1. <?PHP
  2. $katalog = @dir('galeria/images/') or die ("Nie można listować");
  3. while ($plik = $katalog->read()){
  4. if(is_file($katalog.$plik)){
  5. echo "<a href='galeria/images/$plik' rel='lightbox'><img src='galeria/images/$plik' alt=''></a<BR>";
  6. }
  7. }
  8. $katalog->close();
  9. ?>


niestety wywala bład w linie z if

zmieniłem nazwe $plik_kat na $plik (to nie ma znaczenia ) ale informuje
Go to the top of the page
+Quote Post
lobopol
post
Post #12





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


Nie możesz tak mieć w $katalog masz @dir('galeria/images/'), a to nie jest string
Go to the top of the page
+Quote Post
benio101
post
Post #13





Grupa: Zarejestrowani
Postów: 111
Pomógł: 10
Dołączył: 16.07.2009
Skąd: Toruń

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


Sorki, pisałem z palca, zapomniałem o galeria/images/.

@up: Dokładnie, $katalog to uchwyt do pliku (czy coś w tym rodzaju), więc nie jest to łańcuch.
Daj np. $katalog_napis='galeria/images/' i w 4. linii (ifce) podmień $katalog na $katalog_napis

Wtedy zgodność typów zaskoczy i is_file zrozumie, o co się pytasz.
Daj więc coś w deseń:
  1. <?PHP
  2. $katalog_napis='galeria/images/'; // ścieżka do katalogu (folderu)
  3. $katalog = @dir($katalog_napis) or die ("Nie można listować"); // podmieniłem 'galeria/images/' na $katalog_napis, żeby nie dublować wpisu, zgodnie z zasadą DRY
  4. while ($plik = $katalog->read()){
  5. if(is_file($katalog_napis.$plik)){ // i tutaj operacja główna, właściwa -> zamiast tego ala-uchwytu do pliku dałem łańcuch ze ścieżką do folderu ($katalog_napis)
  6. echo "<a href='galeria/images/$plik' rel='lightbox'><img src='galeria/images/$plik' alt=''></a><BR>"; // reszta bez zmian
  7. }
  8. }
  9. $katalog->close();
  10. ?>
Aaa.. i znowu pisałem z palca (IMG:style_emoticons/default/biggrin.gif)
Więc sprawdź porządnie.
Go to the top of the page
+Quote Post

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: 24.08.2025 - 06:08