Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Czy plik istnieje na serwerze
Forum PHP.pl > Forum > Przedszkole
Szunaj85
Poniżej mam skrypt, który jest w stanie stwierdzić czy plik o konkretnej nazwie/ścieżce znajduje się na serwerze.
  1. <?php
  2. $filename = "folder/nazwa_pliku.php";
  3. if (file_exists($filename)){
  4. echo "Plik istnieje";
  5. } else {
  6. echo "Plik nie istnieje";
  7. }
  8. ?>

Wszystko fajnie jeżeli chcemy sprawdzić 1 plik. Co jednak jeżeli tych plików jest o wiele więcej. Można było by zrobić coś takiego:
  1. <?php
  2. $filename = "folder/nazwa_pliku.php";
  3. if (file_exists($filename)){
  4. echo "Plik istnieje";
  5. } else {
  6. echo "Plik nie istnieje";
  7. }
  8. ?>
  9.  
  10. <?php
  11. $filename = "folder/nazwa_pliku2.php";
  12. if (file_exists($filename)){
  13. echo "Plik istnieje";
  14. } else {
  15. echo "Plik nie istnieje";
  16. }
  17. ?>
  18.  
  19. <?php
  20. $filename = "folder/nazwa_pliku3.php";
  21. if (file_exists($filename)){
  22. echo "Plik istnieje";
  23. } else {
  24. echo "Plik nie istnieje";
  25. }
  26. ?>

Załużmy, że pliki "nazwa_pliku", "nazwa_pliku2" znajdują się na serwerze, a plik "nazwa_pliku3" nie. Powinien wyskoczyć następujący komunikat:

Plik istnieje
Plik istnieje
Plik nie istnieje

Jak uzyskać ten sam efekt skracając kod?
Nie wiem może tablica lub pętla. Ponieważ dopiero początkuję w PHP proszę o podpowiedzi, sugestie.
piotrooo89
może tak:

  1. <?php
  2. $filename1 = "folder/nazwa_pliku1.php";
  3. $filename2 = "folder/nazwa_pliku2.php";
  4. $filename3 = "folder/nazwa_pliku3.php";
  5.  
  6. if ($x1=file_exists($filename1))
  7. {
  8.  if($x1)
  9.  {
  10. echo "Plik istnieje";
  11.  }
  12.  else
  13.  {
  14. echo "Plik nieistnieje";
  15.  }
  16. }
  17. elseif ($x2=file_exists($filename2))
  18. {
  19.  if($x2)
  20.  {
  21. echo "Plik istnieje";
  22.  }
  23.  else
  24.  {
  25. echo "Plik nieistnieje";
  26.  }
  27. }
  28. elseif ($x3=file_exists($filename3))
  29. {
  30.  if($x3)
  31.  {
  32. echo "Plik istnieje";
  33.  }
  34.  else
  35.  {
  36. echo "Plik nieistnieje";
  37.  }
  38. }
  39. ?>


pisane z palca może nie działać
l0ud
Dokładnie, użyj tablicy i pętli.

[edit]ciach ciach, za późno tongue.gif

Temat się raczej bardziej nadaje do przedszkola
Nightmare
Możesz również umieścić ścieżki w tablicy i przejechać po nich pętlą:

  1. <?php
  2.  
  3. $sciezki = array('sciezka1', 'sciezka2'); // itd..
  4.  
  5. foreach ($sciezki as $sciezka) {
  6.  if (file_exists($sciezka)) {
  7. echo 'Plik istnieje';
  8.  } else {
  9. echo 'Plik nie istnieje';
  10.  }
  11. }
  12.  
  13. ?>
pyro
  1. <?php
  2.  
  3. $pliki = array('plik1.php', 'plik2.php', 'plik3.php');
  4. $wyniki = array();
  5. foreach($pliki as $p)
  6. {
  7.  
  8. if(file_exists($p))
  9. {
  10. $wyniki[$p] = 'plik istnieje!';
  11. }
  12. else
  13. {
  14. $wyniki[$p] = 'nie istnieje!';
  15. }
  16.  
  17. }
  18. foreach($wyniki as $plik => $czy_istnieje);
  19. {
  20. echo 'plik '.$plik.' '.$czy_istnieje;
  21. }
  22.  
  23. ?>
MWL
zawsze możesz zajrzeć na http://4programmers.net/PHP/FAQ/Lista_plik%C3%B3w_z_katalogu
Szunaj85
Jeszcze jedno w obu przypadkach wyniki wyświetlane są w jednej lini. Gdzie wstawić <br/> aby każdy komunikat wyświetlał się w nowej lini. Po za tym dzięki z resztą już sobie poradzę. yahoo.gif
piotrooo89
o to chodzi?

  1. <?php
  2. echo '<br />Plik istnieje';
  3. ?>
Szunaj85
Tak sobie jeszcze myślę, że ładnie by to wyglądało gdyby do wyświetlanych wyników dodać numerowanie, czyli zamiast:
Plik istnieje
Plik istnieje
Plik nie istnieje
Wyświetlało by:
1. Plik istnieje
2. Plik istnieje
3. Plik nie istnieje
Wydaje mi się, że co pętlę trzeba by było zwiększać o jeden, ale to tylko teoria. cool.gif
pyro
nie znasz php, co? smile.gif, ale i tak masz:

  1. <?php
  2.  
  3. $pliki = array('plik1.php', 'plik2.php', 'plik3.php');
  4. $wyniki = array();
  5.  
  6. foreach($pliki as $p)
  7. {
  8.  
  9. if(file_exists($p))
  10. {
  11. $wyniki[$p] = 'plik istnieje!';
  12. }
  13. else
  14. {
  15. $wyniki[$p] = 'nie istnieje!';
  16. }
  17.  
  18. }
  19. $i = 1;
  20. foreach($wyniki as $plik => $czy_istnieje)
  21. {
  22. echo $i.'. '.'plik '.$plik.' '.$czy_istnieje.'<br />';
  23. $i += 1;
  24. }
  25.  
  26. ?>
Szunaj85
Nie znam PHP to trochę za dużo powiedziane, ale zgadza się, że jeszcze dużo mi brakuje.
Ale wracając do tematu sprawdziłeś czy ten skrypt działa bo mi nie.
Ogólnie rzecz biorąc już sobie poradziłem. yahoo.gif
pyro
Jak sobie poradziłeś?
Szunaj85
Cytat(pyro @ 27.05.2008, 23:53:11 ) *
Jak sobie poradziłeś?

Ogólna zasada jest taka jaką podałeś. Ja jednak robiłem to na podstawie przykładu Nightmare jest według mnie lepszy i ma jedną pętlę. A jak mi to wyszło? To kwestia odpowiedniego ułożenia nawiasów klamrowych. Za to kocham PHP.
Z powodu jedenego szczegółu możesz się zakopać. laugh.gif
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.