Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zniwelowanie błędu empty
Forum PHP.pl > Forum > Przedszkole
Pcbecaw
Wyświetla mi się:
Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in C:\xampp\htdocs\PHP\edycja.php on line 40

wtedy, gdy chcę wstawić warunek, że pole z getimagesize jest dopuszczalne puste. Coś takiego:
  1. list($width, $height, $type, $attr) = getimagesize($avatar);
  2.  
  3. if($type==1 || $type==2 || $type==3 || empty($avatar))

I działa, ale wywala powyższy warning. Jak to obejść?
CuteOne
  1. if(!empty($avatar)) {
  2.  
  3. list($width, $height, $type, $attr) = getimagesize($avatar);
  4. }
potreb
Chyba lepiej tak:

  1. if(!empty($avatar) && file_exists($avatar)) {
  2.  
  3. list($width, $height, $type, $attr) = getimagesize($avatar);
  4. }


W przypadku braku pliku tak samo sypnie błędem.
Pcbecaw
  1. if(!empty($avatar)) {
  2. list($width, $height, $type, $attr) = getimagesize($avatar);
  3.  
  4. if($type==1 || $type==2 || $type==3)
  5. {
  6. echo 'wykonaj update';
  7. }
  8. else
  9. {
  10. echo 'przypisz ścieżke domyślną i daj komunikat, że zepsuł ścieżke avatara';
  11. }
  12. }

Parser w ogóle olewa tego ifa i nie działa.
Próbowałem tak:
  1. list($width, $height, $type, $attr) = getimagesize($avatar);
  2.  
  3. if($type==1 || $type==2 || $type==3 || empty($avatar))
  4. {
  5. echo 'wykonaj update';
  6. }
  7. else
  8. {
  9. echo 'przypisz ścieżke domyślną i daj komunikat, że zepsuł ścieżke avatara';
  10. }

ale wyświetla ten warning. Jakby to zrobić tak, żeby działało?
potreb
A robiłeś z file_exists?
Pcbecaw
tak, totalnie to ignoruje parser
nospor
Co olewa? Kod z ifem na not empty jest całkowicie poprawny.
Jak dasz to ci się zadne echo nie pojawi gdy $avatar bedzie puste wiec może o to ci chodzi z olewaniem? To dorób else dla główngo IF
Pcbecaw
  1. if(!empty($avatar) && file_exists($avatar)) {
  2. list($width, $height, $type, $attr) = getimagesize($avatar);
  3.  
  4. if($type==1 || $type==2 || $type==3)
  5. {
  6. echo 'wykonaj update';
  7. }
  8. else
  9. {
  10. echo 'przypisz ścieżke domyślną i daj komunikat, że zepsuł ściezke avatara';
  11. }}else{echo'cos';}

Jeśli pozostanie puste - wyświetla się 'coś'
Jeśli wpisze cokolwiek - wyświetla się 'coś'
Jeśli wpiszę poprawną ścieżkę - wyświetla się 'coś'
To chyba coś z tym jest nie tak. Jak zrobić to poprawnie?
Powinno być tak, że jeśli wpiszę poprawną ścieżkę, to wyświetli się 'wykonaj update'
nospor
1)
echo $avatar;
co wyswietla?

2) Czy ty przypadkiem nie przechowujesz tam linku do strony www ze zdjeciem? Jak tak to wywal te file_exists
Pcbecaw
To teraz działa, ale jeśli wpiszę byle co np. 'adasdasd', to wywala:
Warning: getimagesize(sad) [function.getimagesize]: failed to open stream: No such file or directory in C:\xampp\htdocs\PHP\edycja.php on line 42

Jak to obejść, żeby wyświetlało komunikat, że ścieżka niepoprawna zamiast takiego warningu?
nospor
To w tym przypadku wyjątkowo wstaw małpę @ przed getimagesize
Pcbecaw
Działa elegancko wink.gif
A jak jeszcze wzbogacić to:
  1. if($type==1 || $type==2 || $type==3)
o wymóg, że musi być mniejsze niż 20kb?
Probowałem coś z:
getimagesize($avatar)<20000, ale nie działa.
nospor
...
przecież getimagesize() zwraca tablicę...
Pcbecaw
To niestety nic mi nie mówi sad.gif
maviozo
getimagesize zwraca rozmiar obrazka, a nie wielkość. Użyj filesize($avatar) do porównania
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.