Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Sprawdzanie czy plik istnieje a jesli nie to ...
Forum PHP.pl > Forum > Przedszkole
php__amator
Witam,
Długo oj długo nie odwiedzałem forum. Wreszcie nadszedł ten dzień i potrzebuję pomocy ... niby człowiek się już trochę nauczył a tu ...
otóż potrzebuję podpowiedzi jak sprawdzić czy w katalogu powiązanym z wpisem w bazie istnieje plik.
Jeśli istnieje idź dalej/pokaż go, jeśli natomiast nie istnieje pokaż plik z określonej lokalizacji.
Najprościej jak to możliwe oczywiście. smile.gif

Dotychczas działało to na zasadzie przekopiowywania pliku/plików z katalogu z template'ami a to z kolei powodowało nadmierne zwiększenie ilości zajmowanego miejsca co przy ograniczonych zasobach .... może być trochę upierdliwe smile.gif I tak na przykład baza miała by powiedzmy 30MB a ma 300MB bo powielają się dziesiątki plików, jak się okazało zupełnie bez sensu wink.gif

Bardziej obrazowo:
Katalog nr 1 jest pusty - skrypt stwierdza brak pliku xxx.cos i kieruje do katalogu w którym znajduje się np uniwersalny zamiennik.
w chwilą za uploadowania do katalogu nr 1 pliku o nazwie xxx.cos skrypt stwierdzi jego obecność i go pokaże.

Mam nadzieję, że moje mętne wyjaśnienie problemu nie jest zbyt mętne ?smile.gif

Pozdrawiam
phpamator
nospor
Nie bardzo rozumiem w czym masz problem.... Nie wiesz jak użyć funkcji file_exists()?
php__amator
Nie wink.gif
Moja dotychczasowa wiedza nie obejmuje tej funkcji jeszcze, dlatego zapytałem tych co "wiedzą" żeby nie marnować czasu ?
Wiem, idę na łatwiznę ale myślę, że prosty przykład ppomógł by mi szybciej się z tym zapoznać smile.gif

Więc ?
nospor
Cytat
Moja dotychczasowa wiedza nie obejmuje tej funkcji jeszcze,
Proszę cię..... poprostu zajrzyj do manuala.... tam masz wyjaśnione jak jej użyć.... nie rób z siebie jakiejś tam ofiary losu
b4rt3kk
No jednak troszkę mętnie to wyjaśniłeś. Pierwszy z brzegu przykład z manuala:

  1. <?php
  2. $filename = '/path/to/foo.txt';
  3.  
  4. if (file_exists($filename)) {
  5. echo "The file $filename exists";
  6. } else {
  7. echo "The file $filename does not exist";
  8. }
  9. ?>
php__amator
Bardzo pomogło i już przećwiczyłem działanie. Bardzo dziękuję za pomoc.
Teraz testuję sprawdzanie w trakcie odczytywania danych z bazy i podstawianie obrazka jeśli nie istnieje w źródłowym katalogu z katalogu w którym są ikony uniwersalne smile.gif

Fajnie działa ten file_exist();

Pozdrawiam


Podczas testowania w nieco bardziej "pomotanym kodzie" nie mogę sobie poradzić ze skryptem, otóż:
  1. $SQL = "SELECT * FROM lista ORDER BY id ASC LIMIT ".mysql_escape_string((int)$_GET['page']*IWNS).",".IWNS;
  2. $RES = mysql_query($SQL);
  3. $filename = ($AFR['first_name'].".".$AFR['last_name'].'/image.jpg'); //<----- sciezka do pliku generowana jest ze zmiennych pobieranych z bazy
  4. while($AFR = mysql_fetch_assoc($RES)){
  5. if (file_exists($filename)) {
  6. $filename = ($AFR['first_name'].".".$AFR['last_name'].'/image.jpg'); // <----------- plik istnieje
  7. } else {
  8. $filename = ('/base/pics/image.jpg'); // <----- wciąż wywala mi ten choć w katalogu istnieje plik
  9. }
  10. echo '<div class="foto" id="foto">'
  11. .'<a href='.$filename.'><img src='.$filename.' width="128" height="160"></a></div>';
  12.  
  13. echo "<div class='id' id='id'><b>ID number:</b> ".$AFR['id']."</div>"


gdzie robię błąd ?

Pozdrawiam
phpamator

Znalazłem, działa smile.gif

  1. while($AFR = mysql_fetch_assoc($RES)){
  2. if (file_exists('../base/'.$AFR['first_name'].".".$AFR['last_name'].'/image.jpg')) { //<--------- zamiast $filename wpisałem pełną ścieżkę do pliku
  3. $filename = ('../base/'.$AFR['first_name'].".".$AFR['last_name'].'/image.jpg');
  4. echo $filename;
  5. } else {
  6. $filename = ('/base/pics/image.jpg');

Może to trochę czerstwa konstrukcja ... ale dopiero raczkuję wink.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.