Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Domyślne zdjęcie jeżeli brak odpowiedniego na serwerze
eeagle
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 18.11.2014

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


Poszukuję pomocy w jaki sposób sprawdzić i zamienić wszystkie pliki jpg (zdjęcia) na domyślny jeżeli brakuje go na serwerze.
Poniżej kod który się sprawdza ale tylko podaniu konkretnego pliku, co przy większej ilości niż 1 robi problem sad.gif
  1. <?php
  2. $plik = "pliki/plik_xs.jpg";
  3. $domyslny = pliki/nophoto_xs.jpg";
  4. $test = file_exists($plik);
  5. if (!$test)
  6. {
  7. echo "<img src=". $domyslny ." /> ";
  8. }
  9. else
  10. {
  11. echo "<img src=". $plik ." /> ";
  12. }
  13.  
  14. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
co przy większej ilości niż 1 robi problem
To napisz jaki problem bo ja osobiscie nie widze zadnego problemu nie liczac faktu, ze masz spierniczone cudzysłowia


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
SaMi
post
Post #3





Grupa: Zarejestrowani
Postów: 173
Pomógł: 14
Dołączył: 27.03.2004
Skąd: Białystok

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


Jeśli zmienna $plik jest pusta, to i tak katalog utrzymuje status true, ponieważ file_exists zwraca true dla plików i katalogów.

Można użyć is_file() w połączeniu z nim:

  1. if(file_exists($plik) && is_file($plik)){ ... }


--------------------
Zapraszam na spływy kajakowe rzekami podlasia www.splywy-kajakiem.pl
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@Sami nie dosc ze to nie mazwiazku ze sprawą, to jeszcze piszesz nieprawdziwe rzeczy.... file_exists dla pustej zmiennej nie zwraca true....


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
eeagle
post
Post #5





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 18.11.2014

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


Cudzysłów zaginął przy przepisywaniu smile.gif.
Może pytanie zadałem nie tak.
Problem polega na tym że skrypt ten sprawdza konkretny plik. W tym wypadku plik_xs.jpg.
Nie bardzo umiem sobie poradzić aby sprawdzał każdy plik np. z rozszerzeniem jpg .
Go to the top of the page
+Quote Post
Turson
post
Post #6





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


glob
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Turson po co glob..przeciez glob zwraca pliki ktore istnieją a jego interesują tez pliki, ktore nie istnieją.

@eeagle no ale gdzies te liste plikow masz przeciez zapisaną no nie? No to w czym problem?
zamiast $plik = "pliki/plik_xs.jpg"; podstawiaj kolejny plik z listy


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Turson
post
Post #8





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


No fakt, że zamysł jest inny wink.gif no to lista plików musi gdzieś być
Go to the top of the page
+Quote Post
SaMi
post
Post #9





Grupa: Zarejestrowani
Postów: 173
Pomógł: 14
Dołączył: 27.03.2004
Skąd: Białystok

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


@nospor masz rację to był skrót myślowy chodziło mi o poniższe sytuacje.
  1. if(file_exists('images/zdjecie.jpg')) echo 'true';
  2. else echo 'false';
  3. // zwraca true
  4. if(file_exists('images/')) echo 'true';
  5. else echo 'false';
  6. //zwraca true
  7. if(file_exists('imag')) echo 'true';
  8. else echo 'false';
  9. //zwraca false


Ten post edytował SaMi 15.12.2014, 09:30:16


--------------------
Zapraszam na spływy kajakowe rzekami podlasia www.splywy-kajakiem.pl
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Skrot myslowy? Wyraznie napisales o pustej zmiennej.
Poza tym po co wyjezdzasz z katalogami, skoro user wyraźnie napisal, że sprawdza pliki. Ale czasami plik nie istnieje. Ani razu nie bylo mowy o sprawdzaniu katalogow i problemow z nimi związanymi
Tak wiec nie ma sensu bawic sie w
if(file_exists($plik) && is_file($plik)){ ... }
skoro zawsze sprawdzane są pliki
A nawet jesli byloby inaczej, to po co tak? Czemu nie lepiej od razu:
if(is_file($plik)){ ... }
?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
eeagle
post
Post #11





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 18.11.2014

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


Listy to nie ma , ale to nie problem. Mi nie chodzi tylko o sprawdzenie czy istnieje ale jeszcze umieszczenie (nophoto.jgp) w to samo miejsce ( w kodzie html) gdzie powinien być brakujący plik.
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No to przeciez to masz juz zrobione....

Od biedy jak chcesz miec ładnie, to załaduj to w funkcje, jako parametr funkcji przekazuj sciezke do pliku i po sprawie


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
eeagle
post
Post #13





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 18.11.2014

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


możesz mi to badziej wytłumaczyć?
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Czy wiesz co to są funkcje?
Jesli wiesz, to kod co masz masz wlozyc w funkcję.
Jak nie wiec co to są funkcje, to wpierw doczytaj.

http://php.net/manual/en/functions.arguments.php
http://php.net/manual/en/functions.returning-values.php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
eeagle
post
Post #15





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 18.11.2014

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


Nie jestem mistrzem w funkcjach sad.gif wymyśliłem taką :

  1. function sprawdzenie ($plik = "pliki/plik_xs.jpg" , $domyslny = "pliki/nophoto_xs.jpg") {
  2. $test = file_exists($plik);
  3. if (!$test)
  4. {
  5. echo "<img src=". $domyslny ." /> ";
  6. }
  7. else
  8. {
  9. echo "<img src=". $plik ." /> ";
  10. }
  11.  
  12.  
  13. }
  14.  
  15. sprawdzenie();


robi to samo co poprzedni skrypt. Czyli ani kroczku do przodu sad.gif
Poniżej kod html w jaki sposób wyświetlam pliki - w tym miejscu chciałbym aby mi sprawdzało czy plik jest czy nie i wrzucanie odpowiednio nophoto_xl , nophoto_xs a jeżeli jest to zostawić tak jak jest.

  1.  
  2. <div class="main-image">
  3. <div class="outer">
  4. <span class="inset"><a href="pliki/plik_xl.jpg"><img src="pliki/plik_xs.jpg" alt="" /></a></span>
  5. </div>
  6. </div>
Go to the top of the page
+Quote Post
nospor
post
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
robi to samo co poprzedni skrypt. Czyli ani kroczku do przodu
facepalmxd.gif
No toc ci mowilem, ze masz tam wstawiac potem nazwy plikow jakie chcesz miec... no same sie nie wstawią....

sprawdzenie('jakisplik');
sprawdzenie('jakisplik2');
sprawdzenie('jakispli3');
itd....


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
by_ikar
post
Post #17





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Tylko po co do tego w ogóle angażować php, jak zwyczajnie można zrobić tło dla tego diva z klasą outer, czy tam spana z klasą inset ? Kiedyś ktoś miał podobny problem: http://forum.php.pl/index.php?s=&showt...st&p=920180
Go to the top of the page
+Quote Post
Pyton_000
post
Post #18





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Czarny scenariusz... Wyświetlasz listę 10 tyś obrazeczków. Pech chciał że 3/4 nie ma wink.gif
Po co robić bezsensowne 10001 requestów skoro można tylko 3001 wink.gif

Ten post edytował Pyton_000 15.12.2014, 12:52:44
Go to the top of the page
+Quote Post
nospor
post
Post #19





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Bo z tamtego tematu wynika, ze by_ikar zaoszczedzil na tym 10000 file_exists wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
by_ikar
post
Post #20





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


PHP działa synchronicznie, więc sprawdzenie czy działa 10 tysięcy plików, będzie dużo wolniejsze i zasobożerne niż w przypadku sprawdzenia tego przez webserwer. Wolniejsze, bo w przypadku rozłożenia tego na background, połączenia do sprawdzenia czy obrazki istnieją wykonywane są asynchronicznie (po kilka na raz, w zależności od limitu połączeń przeglądarki), więc nie czekasz na skrypt a na szybkość odpowiedzi przez webserwer który będzie dla statycznego contentu kilka razy szybszy niż PHP. Dodatkowo, tworzysz sobie jakiś loader obrazków w javascript, który będzie pobierać background dopiero kiedy user dojedzie scrollem do obrazka (lazy loading).

Się śmiejecie, a zobaczcie jak to ma zrobione allegro, czy jakieś inne większe strony, które nie trzymają obrazków w obrębie tego samego webserwera.. Powodzenia z file_exists do jakiegoś cdn'a.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 14:39