Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]While + If (sprawdzenie czy dany plik istnieje)
Forum PHP.pl > Forum > Przedszkole
Masterson
Witam.

W PHP jestem bardzo początkujący. Chciałbym zrobić skrypt, który sprawdza czy dany plik istnieje, a jeśli tak to chciałbym aby wyświetlał jego nazwę. Chciałby sprawdzać 20 plików, ale wyświetlić te istniejące. Potrafię osobno sprawdzić czy plik istnieje oraz osobna zrobić pętlę, która kolejno listuje mi pliki (bez sprawdzania czy istnieją). W chwili obecnej jestem na poziomie, w którym nie potrafię połączyć powyższych funkcji.

  1. <?php
  2. $file = "fotki/".$fotka.".jpg";
  3. $filetest = file_exists($file);
  4. if (!$filetest)
  5. {
  6. $filetest = false;
  7. }
  8. else
  9. {
  10. $filetest = true;
  11. }
  12.  
  13. while ($fotka_nr<=10){
  14. echo $fotka."_".$fotka_nr.".jpg<br/>";
  15. $fotka_nr++;
  16. }
  17. ?>


Wybaczcie jeśli kod jest zły. Improwizuję/ próbuję metodami prób i błędów, ale moja wiedza jest jeszcze bliska zeru :].
Oprócz sprawdzania warunku (file_exist) w pętli chciałbym aby pierwsze zdjęcie nie miało w nazwie podkreślnika, a miało każde kolejne, które jest sprawdzane. W jaki sposób to można zrobić?

Pozdrawiam
gorden
nie zdefiniowałeś zmiennej $fotka_nr, zrób to przed rozpoczęciem pętli
gdzie definiujesz zmienną $fotka? co ona zawiera?

co do tego podkreślnika, wystarczy prosty warunek w oparciu o wartość $fotka_nr:
  1. $fotka_nr = 1;
  2. while($fotka_nr<=10) {
  3. if(file_exists($fotka.'_'.$fotka_nr)) { //tutaj musi byc taki sam warunek jak nizej, jesli chodzi o pierwsza fotke
  4. if($fotka_nr == 1) {
  5. echo $fotka.$fotka_nr.'.jpg<br />';
  6. } else {
  7. echo $fotka.'_'.$fotka_nr.'.jpg<br />';
  8. }
  9. }
  10. $fotka_nr++;
  11. }



w Twoim kodzie, po co wyznaczasz $filetest true/false, skoro funkcja file_exists sama je zwraca? nie potrzebny ten warunek, ta zmienna domyślnie będzie miała taką wartość.
thek
A to nie możesz spróbować IF zrobić wewnątrz WHILE? smile.gif
Masterson
Zrobiłem tak:

  1. <?php
  2. $fotka = $record['filename'].".jpg";
  3. $fotka_nr = 1;
  4. while($fotka_nr<=10) {
  5. if(file_exists($fotka.'_'.$fotka_nr)) {
  6. if($fotka_nr == 1) {
  7. echo $fotka.$fotka_nr.'.jpg<br />';
  8. } else {
  9. echo $fotka.'_'.$fotka_nrr.'.jpg<br />';
  10. }
  11. }
  12. $fotka_nr++;
  13. }
  14. ?>


Jeśli $record['filename'] = zwierzak.jpg, a w folderze są zdjęcia zwierzak_1.jpg zwierzek_2.jpg to i tak wynik nie zwraca żadnych wartości.
Niby proste rzeczy i fajnie się wymyśla, ale gorzej z zapisaniem tego, chyba muszę się poddać sad.gif.

Inna sprawa: czy za pomocą opendir można wyświetlić pliki o określonych parametrach (zawierających w nazwie konkretny string)?
peter13135
za pomocą opendir nie, do tego służą wyrażenia regularne np. funkcja preg_match(), albo funkcje "stringowe"
Masterson
Serdecznie dziękuję za pomoc. Oczywiście kod napisany przez gordona działa. W najlepsze testowałem sobie procedurkę w przekonaniu, że spełnia warunek (są pliki o zadanych nazwach). Moje zdziwienie było przeogromne kiedy sprawdzałem je nie w tym folderze <lol>.

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