Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] usuwanie pliku - zastapienie bledu gdy pliku nie ma
koptus
post 30.03.2008, 12:40:23
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 7.03.2005

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


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>


--------------------
trasy rowerowe
Go to the top of the page
+Quote Post
pyro
post 30.03.2008, 12:47:06
Post #2





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


  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

Ten post edytował pyro 30.03.2008, 12:52:09


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
mike
post 30.03.2008, 12:52:51
Post #3





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


~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
Go to the top of the page
+Quote Post
pyro
post 30.03.2008, 12:54:33
Post #4





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


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


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
mike
post 30.03.2008, 12:55:45
Post #5





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


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ąć.
Go to the top of the page
+Quote Post
pyro
post 30.03.2008, 13:00:07
Post #6





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


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 -.-


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
mike
post 30.03.2008, 17:29:19
Post #7





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


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.
Go to the top of the page
+Quote Post
pyro
post 30.03.2008, 18:30:45
Post #8





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


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


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
webdice
post 30.03.2008, 18:41:04
Post #9


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Zrób tak:

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


Komunikaty dopisz sobie sam winksmiley.jpg.

Ten post edytował webdicepl 30.03.2008, 18:41:45
Go to the top of the page
+Quote Post
pyro
post 30.03.2008, 18:54:49
Post #10





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


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. ?>


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
webdice
post 30.03.2008, 21:11:19
Post #11


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Początkowo chciałem wstawić komunikaty, ale mieniłem zdanie i zapomniałem usunąć wykrzyknika winksmiley.jpg. Przepraszam za wprowadzenie w błąd.

Ten post edytował webdicepl 30.03.2008, 21:11:36
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 Wersja Lo-Fi Aktualny czas: 25.06.2025 - 06:01