Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z file_exists
Forum PHP.pl > Forum > PHP
dresik
Witam,
napisałem skrypt który wczytuje pliki z katalogu i potem je wyswietla w tablic np 5 kolumnowej.
W jednej pętli funkcja ma sprawdzać czy dany plik istnieje jeżeli nie to nie nie wyswietla odpowiedniej tresci.

Wszystko pliki ładnie wyswietla no ale cóż z tego jak ten skrypt działa tak jakby nie było w niej funkcji file_exist

  1. <?php
  2.  
  3. $kat = opendir("../$foto$gkatalog");
  4. while (false !== ($plik = readdir($kat))) {
  5. if ($plik<>"." and $plik<>".." and $plik<>"index.php" ) $lista[]=$plik;
  6. }
  7. closedir($kat);
  8. if (count($lista)>0) {
  9. sort($lista);
  10. }
  11. $path="../$foto$gkatalog";
  12.  
  13. for ($i=0;$i<count($lista);$i++){
  14. for ($j=0; $j<$gkolumny; $j++){
  15. $filename = "$path$lista[$i]";
  16. if (file_exists($filename)){
  17. echo("<div class=\"photo\"><a href=\"$path$lista[$i]\" rel=\"lightbox[galeria1]\"><img src=\"$path$mini$lista[$i]\" class=\"img\" alt=\"\" border=\"0\" ></a>
  18. <font style=\"text-align: left; \">$lista[$i]</font> <a href=\"../skrypty/delfile.php?id=$path$lista[$i]\" onclick=\"return usunupl();\">usuń</a></div>");
  19. print "r\n";
  20. $i++;
  21. }
  22. }
  23. $i--;
  24. print '<br />';
  25. }
  26.  
  27. ?>


poniżej na zdjęciu jest zrobiony screen wyswietlanej pętli. Jeśli nie zrozumiale to napisałem, to powiem tak że nieche aby sie wyświetlały te ostatnie trzy puste okienka w których juz niema zdjęć.

Jeśli ktoś wie w czym jest problem to prosze o pomoc. Z góry dziękuje i pozdrawiam

pp-layouts
dziwne to, na pierwszy rzut oka nie widzę błędu, ale spróbuj zastąpić "$path$lista[$i]" we wszystkich stringach czymś takim "$path{$lista[$i]}".

z tego co wiem pominięcie nawiasów klamrowych przy umieszczeniu elementu tablicy w znakach "" jest błędem składni i w najlepszym razie da jakiś error, a w najgorszym nie będzie działać...

pomogło?
dresik
niestety nie pomogło ;/
nevt
na starcie - sam budujesz tablicę $lista - na podstawie zawartości plików w pewnym katalogu... więc prosty wniosek że WSZYSTKIE pliki w tej tablicy istnieją...
dalej - sprawdzasz warunek file_exists() w pętli po wszystkich elementach $lista - wniosek - warunek ZAWSZE będzie spełniony, więc nie ma sensu go stosować... (no chyba że ręcznie kasujesz te pliki w trakcie wykonywania skryptu...)
podobnie bez sensu jest wstawianie w tej pętli dwa razy $i++ i raz $i-- (spokojnie wystarczy raz $i++)...
więc gdzie leży twój problem questionmark.gif

otóż budujesz listę plików z jednego katalogu... "$patch$lista..." ale miniaturki zdjęć wyświetlasz z zupełnie innego katalogu... "$path$mini$lista..."

najwyraźniej w obu katalogach są różne pliki (dokładniej różne listy plików)

najciekawsza jest jednak ta linijka: for ($j=0; $j<$gkolumny; $j++)

nie wiem czego oczekujesz, ale na pewno nie odpowiada ona za wyświetlenie fotek w kilku kolumnach, jest zupełnie zbędna, a to że masz dobry rezultat na ekranie to przypadek - najwyraźniej $gkolumny=1

porada - odczytaj $lista na podstawie zawartości katalogu miniaturek, wywal tą zbędna pętlę, wywal niepotrzebny już warunek i będzie cacy smile.gif

powodzenia.
dresik
OK wielkie dzięki teraz smiga wszystko łądnie winksmiley.jpg.

Mam jeszcze takie pytanie bo niewiem jaką funkcje albo cos użyć do tego.

Chce aby miniaturka nie była rozciągana do brzegów tabeli tylko aby była wyświetlana w oryginalnym rozmiarze ale żeby wyświetlało ją w tabeli o danym rozmiarze. heh chyba znowu namieszałem, ale moze obrazek poniżej przedstawi o co mi chodzi.

Po lewej stronie wyświetla obrazek dopasowany do brzegów a po prawej stronie zrobiłem tak jakbym chcial zeby wyświetlało.

Jak ktos wie jak to zrobić to prosiłbym o pomoc

nevt
zamiast
  1. <image src="katalog/plik.jpg" width="200px" height="100px" />

stosuj
  1. <div style="background:transparent url('katalog/plik.jpg') no-repeat; width:200px; height:100px"></div>

powodzenia.
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.