Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] usuwanie pliku - zastapienie bledu gdy pliku nie ma
Forum PHP.pl > Forum > Przedszkole
koptus
Witam, bawie dalej się z php, napisalem skrypt usuwajacy plik z zamowieniami. Wszystko ladnie smiga, tylko chcialbym zastapic standradowy blad gdy pliku nie ma:
Kod
Warning: unlink(zamowienia/zamowienia.txt) [function.unlink]: No such file or directory in /var/www/sites/yoyo.pl/k/o/koptusphp/usun.php on line 8

czymś bardziej przyjaznym.
Próbowałem wyłączyć pokazywanie błędów przez error_reporting, a potem "else" potraktować go tongue.gif Noo ale błąd jak się wyświetlał tak się wyświetla. Proszę o pomoc.
  1. <html>
  2. <head>
  3. <title>Panel admina sklepu - kasowanie zamówień</title>
  4. </head>
  5. <body>
  6. <h1>Kasowanie zamówień</h1>
  7. <?php
  8. {
  9. if (unlink('zamowienia/zamowienia.txt'))
  10. echo 'plik został skasowany ;(';
  11. } 
  12. else 
  13. {  
  14. echo 'plik został NIE skasowany ;('; 
  15. }
  16.  
  17. ?>
  18. </body>
  19. </html>
pyro
  1. <?php
  2. try
  3. {
  4. if(unlink('zamowienia/zamowienia.txt'))
  5. {
  6. echo 'plik zostal skasowany pomyslnie!';
  7. }
  8. else
  9. throw new Exception('komunikat', 404);
  10. }
  11. catch(Exception $e)
  12. {
  13. echo 'wystąpił wyjątek: nie ma takiego pliku';
  14. }
  15. ?>


zrobilem maly blad ale juz poprawilem
mike
~koptus musisz stłumić wyświetlanie komunikatu. Masz do tego operator @
Później sprawdź co zwraca funkcja unlink() i w zależności od zwróconej wartości wyświetl swój komunikat.

~pyro stosowanie wyjątków do takich celów to bardzo duży błąd. Wyjątki służą do obsługi sytuacji wyjątkowych i nagłych.
Jeśli wiesz co ma się zdarzyć to mechanizm wyjątków jest Ci potrzebny jak krosta na tyłku. A nie dość że nie jest Ci potrzebny, komplikuje sprawę to jeszcze spowalnia skrypt.
No ale jest "pro" tongue.gif
pyro
Cytat(mike @ 30.03.2008, 13:52:51 ) *
~pyro aleś głupoty zaproponował.
Wiesz jak stosować wyjątki czy tylko o tym słyszałeś i postanowiłeś wprowadzić w błąd innych?


w jaki błąd? na tym polega obsługa wyjątków i skrypt działa wyśmienicie
mike
Napisałem to zanim edytowałeś posta. Zerknij teraz na mój komentarz.
Poza tym to co podałeś i tak wyświetli błąd, którego autor chce uniknąć.
pyro
Cytat(mike @ 30.03.2008, 13:52:51 ) *
~pyro stosowanie wyjątków do takich celów to bardzo duży błąd. Wyjątki służą do obsługi sytuacji wyjątkowych i nagłych.
Jeśli wiesz co ma się zdarzyć to mechanizm wyjątków jest Ci potrzebny jak krosta na tyłku. A nie dość że nie jest Ci potrzebny, komplikuje sprawę to jeszcze spowalnia skrypt.
No ale jest "pro" tongue.gif


skrypt jest może spowalniany o 0.000001 sekundy, poza tym skrypt moze sie przydac w przyszlosci jesli kolega chce tez dodac do obslugi plik w jakim wystapil wyjatek, linia, kod, etc.

Cytat(mike @ 30.03.2008, 13:55:45 ) *
Napisałem to zanim edytowałeś posta. Zerknij teraz na mój komentarz.
Poza tym to co podałeś i tak wyświetli błąd, którego autor chce uniknąć.


mi sie wydaje (chociaż może źle zrozumialem), że autorowi postu pokazuja sie bledy z klasy Exception, a on chce ustawic wlasny komunikat, moj skrypt nie wyswitli bledu jesli plik istnieje i zostanie usuniety -.-
mike
Cytat(pyro @ 30.03.2008, 14:00:07 ) *
skrypt jest może spowalniany o 0.000001 sekundy, poza tym skrypt moze sie przydac w przyszlosci jesli kolega chce tez dodac do obslugi plik w jakim wystapil wyjatek, linia, kod, etc.
Komunikat to standardowy Warning PHP a nie Exception. Tak, są to ułamki sekund ale całość nazywa się dobrym nawykiem programisty.
Jeśli napiszesz duży serwis i nafaszerujesz go takimi zbędnymi rzeczami to ułamki sekund możesz pomnożyć razy dużą liczbę.

Co nie zmienia faktu, że masz po części rację. Jeśli ktoś chce obsługi bardziej zaawansowanej to zwykł if ... else nie wystarczy i trzeba posłużyć się wyjątkami.

Cytat(pyro @ 30.03.2008, 14:00:07 ) *
mi sie wydaje (chociaż może źle zrozumialem), że autorowi postu pokazuja sie bledy z klasy Exception, a on chce ustawic wlasny komunikat, moj skrypt nie wyswitli bledu jesli plik istnieje i zostanie usuniety -.-
Jeśli pliku nie ma Twój skrypt również wyrzuci komunikat Warning.
pyro
Cytat(mike @ 30.03.2008, 18:29:19 ) *
Jeśli pliku nie ma Twój skrypt również wyrzuci komunikat Warning.


nie... to narazie pokaze tylko 'wystąpił wyjątek: nie ma takiego pliku',
żeby wyświetlić komunikat trzebaby użyc $e->getMessage, ktory zostal przekazany podczas uzycia throw
webdice
Zrób tak:

  1. <?php
  2. if (!file_exists ('file'))
  3. {
  4. unlink ('file');
  5. }
  6. ?>


Komunikaty dopisz sobie sam winksmiley.jpg.
pyro
Cytat(webdicepl @ 30.03.2008, 19:41:04 ) *
Zrób tak:

  1. <?php
  2. if (!file_exists ('file'))
  3. {
  4. unlink ('file');
  5. }
  6. ?>


Komunikaty dopisz sobie sam winksmiley.jpg .


Chcesz usuwac nieistniejacy plik tongue.gif? chyba powinno byc:

  1. <?php
  2. if (file_exists ('file'))
  3. {
  4. unlink ('file');
  5. }
  6. ?>
webdice
Początkowo chciałem wstawić komunikaty, ale mieniłem zdanie i zapomniałem usunąć wykrzyknika winksmiley.jpg. Przepraszam za wprowadzenie w błąd.
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.