Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyświetlanie grafiki z serwera danego dnia, badź innego pliku
Forum PHP.pl > Forum > Gotowe rozwiązania > Szukam
ShamY
Witam, nie wiedziałem jak nazwac dokładnie temat, wiec opisze sprawe dokladniej.
szukam dość prostego skryptu, który będzie wyświetlał żdjęcia na dzisiejszy i jutrzejszy dzień, zdjęcie na serwerze będzie w formacie DDMMYYYY i jesli z tym nie ma problemu to nie mam pojęcia jak napisać część że jak tego pliku np. 27032014.png nie będzie na serwerze, to wyświetli się grafika o nazwie "brak.jpg"

Ktoś by wiedział jak to wykonać lub znaleźć gotowy? Ja szuałem, ale niestety nic.
trueblue
Tu jest gotowe rozwiązanie: http://pl1.php.net/file_exists
ShamY
  1. $filename = '/path/to/foo.txt';
  2.  
  3. if (file_exists($filename)) {
  4. echo "The file $filename exists";
  5. } else {
  6. echo "The file $filename does not exist";


Filename mam podać ściżzke do pliku? Np: "adres/images/folder/<?php echo date("Ymd");?>.png" questionmark.gif
trueblue
Tak, ale:
  1. $filename="adres/images/folder/".date("Ymd").".png";
ShamY
  1. <?php
  2. $filename="/images/folder/".date("Ymd").".png";
  3.  
  4. if (file_exists($filename)) {
  5. echo '<img src="$filename">';
  6. } else {
  7. echo '<img src="/images/folder/brak.png">';
  8. }
  9. ?>


mam tak i wyswietla się tylko "brak.png" pomimo iż na serwerze jest plik o nazwie "20140327.png"
trueblue
A ścieżka do tego pliku na pewno jest poprawna (względem pliku php)?
ShamY
Gdy linijkę 5 przekopiuję na 7 to działa więc wychodzi na to, że file_exists zwraca że takiego pliku niema.
trueblue
Sprawdź czy masz wyłączone safe_mode na serwerze.
  1. var_dump(ini_get('safe_mode'));
ShamY
Nie
  1. bool(false)
trueblue
Masz wyłączone, bo false.
Włącz.
Pracujesz na localhost, czy zdalnym serwerze?
ShamY
Na cba.pl, jak mam to zrobić?
trueblue
Na początku kodu PHP:
  1. ini_set("safe_mode","1");

lub w pliku php.ini umieszczonym na serwerze:
safe_mode = On

Ale nie wiem czy to zadziała.
ShamY
Niestety, jedno, ani drugie nie działa... Jest jakiś inny sposób?
trueblue
Pisać od adminów cba.
ShamY
No ale oprócz tego? Jakaś okrężna droga na umieszczanie tego obrazka?
trueblue
Spróbuj tak:
  1. if(is_file($filename)){
  2. }
  3. else{
  4. }
ShamY
Nie bardzo rozumiem
  1. if (file_exists($filename)) {
  2. }
  3. echo '<img src="$filename">';
  4. } else {
  5. echo '<img src="/images/folder/brak.png">';
  6. }


tak?
trueblue
Nie. Podałem przykład z funkcją is_file()
ShamY
Przy
  1. if (is_file($filename)) {
  2. echo '<img src="$filename">';
  3. } else {
  4. echo '<img src="/images/folder/brak.png">';
  5. }

też wyświetla się "brak".
trueblue
A tak?
  1. $filename="/images/folder/".date("Ymd").".png";
  2. if (file_exists($filename)) {
  3. echo '<img src="$filename">';
  4. } else {
  5. echo '<img src="/images/folder/brak.png">';
  6. }
ShamY
Jest :"brak.png" ale jak przekopiowalem linijkę z 4 na 6 to w pasku adresu jest: "adres strony/$filename"
IProSoft
Zamiast:
  1. echo '<img src="$filename">';

wstaw
  1. echo '<img src="' . $filename . '">';
ShamY
Teraz filename dobrze się wyświetla, ale jak jest na swoich miejscach to nadal źle...
trueblue
Na pewno 20140327.png leży w tym samym miejscu co brak.png?
Czy rozszerzenie nie zawiera wielkich liter?
ShamY
Tak w tym samym miejscu są


w całej scieżce do obu plików są małe litery.
trueblue
  1. $filename="/images/folder/".date("Ymd").".png";
  2. if (file_get_contents($filename)!==false) {
  3. echo "<img src=\"".$filename."\">";
  4. } else {
  5. echo '<img src="/images/folder/brak.png">';
  6. }

Może tak, choć bardzo brzydkie rozwiązanie:)

ShamY
Niestety, po zamianie linijek działa, a przed nie...
trueblue
Po zamianie linijek 3 i 5?
Zerknij, bo wcześniej pomyliłem warunek, później zmieniłem.
ShamY
Teraz zrobilem jeszcze raz i nadal to samo. Przy zmianie 3 na 5 wyświetla się grafika 20140327.png...

Zmieniłem na:
  1. <?php
  2. $filename="http://adres/images/folder/".date("Ymd").".png";
  3. if (file_get_contents($filename)!==false) {
  4. echo '<img src="http://adres/images/folder/".date("Ymd").".png">';
  5. } else {
  6. echo '<img src="http://adres/images/folder/brak.png">';
  7. }
  8. ?>

to wyświetla się taki mniejszy obrazek z ikonką zlamanej fotki i jego adres to: "http://adres/images/folder/", czyli teraz nie czyta ".date("Ymd")." w img src.
trueblue
  1. echo '<img src="http://adres/images/folder/"'.date("Ymd").'".png">';
ShamY
Ehh, chyba moja radość była przedwczesna, nadal nie chce samo się rozkodować "Ymd" i jest obrazek z ikonką złamanej fotki.
IProSoft
Co wyświetli Ci kod:
  1. echo '/images/folder/'.date("Ymd").'.png';

?
ShamY
No wyświetla ścieżke do pliku...

Działa, ale gdy nazwa pliku jest np. 20140330.png to wyświetla ja mimo iż powinno być wyświetlane na dzień 27
Turson
Jeżeli
  1. echo date("Ymd");

pokazuje ci inny dzień, to widocznie czas serwera jest zły
ShamY
Jak zmieniam nazwę pliku na 28, 29 czy inne z dwadzieścia to jest to samo czyli czas serwera jest ok
IProSoft
Napisz co wyświetla Ci :
  1. echo date("Ymd");

Dokładnie co wyświetla, a nie co się dzieje jako coś tam zmienisz..
ShamY
Wyświetla się dzisiejsza data (20140327)

Działa!
Dodałem -1 przed końcówką png i teraz wyświetla dobry obrazek smile.gif

Dzięki wszystkim za pomoc, każdemu leci pomógł 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-2024 Invision Power Services, Inc.