Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]prpblem z funkcja
trucksweb
post
Post #1





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

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


oto funkcja wyswietlajaca bledy, dosc skromna ale dla mie wystarczajaca.
Zapytania sql jakos ladnie robi, natomiatt bledy w skrypcie i literowki juz ukrywa (IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif)

  1. <?php
  2. class ERRORS {
  3.  
  4.  /**
  5.    *  Wyświetlanie szczegółów błędów
  6.    */    
  7.  function ErrorHandler($errno, $errstr, $errfile, $errline)
  8.  {
  9.      switch ($errno) {
  10.      case E_USER_ERROR:
  11.          if ($errstr == '(SQL)')
  12.          {
  13.              echo "<div class='error'><b>SQL Error: </b> [$errno] " . SQLMESSAGE . "<br />\n";
  14.              echo "Zapytanie: " . SQLQUERY . "<br />\n";
  15.              echo "W linii: " . SQLERRORLINE . " ,w pliku: " . SQLERRORFILE . "<br />\n";
  16.              //echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
  17.              echo "Zatrzymano wywołanie...<br /></div>";
  18.          } else
  19.          {
  20.              echo "<div class='error'><b>Wystąpił błąd: </b> [$errno] $errstr<br />\n";
  21.              echo "  W linii: $errline ,w pliku: $errfile <br />\n";
  22.              echo "Zatrzymano wywołanie...<br /></div>";
  23.          }
  24.          exit(1);
  25.          break;
  26.  
  27.      case E_USER_WARNING:
  28.      case E_USER_NOTICE:
  29.      }
  30.      return true;
  31.  }
  32.  
  33.  
  34.  /**
  35.    *  Funkcja definiująca zmienne błędów SQL
  36.    */    
  37.  function sqlErrorHandler($error, $query, $phpfile, $line)
  38.  {
  39.      define("SQLQUERY", $query);
  40.      define("SQLMESSAGE", $error);
  41.      define("SQLERRORLINE", $line);
  42.      define("SQLERRORFILE", $phpfile);
  43.      trigger_error("(SQL)", E_USER_ERROR);
  44.  }
  45.  
  46.  
  47. }
  48.  
  49. /**
  50.  *  Przejęcie obsługi błędów przez funkcję
  51.  */
  52. set_error_handler(array('ERRORS', 'ErrorHandler'));
  53. ?>



np taki blad:

  1. <?php
  2. $errors = new ERRORS;
  3. echo($test=5/0);
  4. ?>


juz ukryje.
Mozna to jakos poprawic ? bo chyba powinna wyswietlic elsa z pierwszego if'a
Go to the top of the page
+Quote Post
Axexis
post
Post #2





Grupa: Zarejestrowani
Postów: 98
Pomógł: 14
Dołączył: 13.01.2008
Skąd: Birmingham

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


Albo ja coś przeoczyłem, albo wogóle nie odwołałeś do tej klasy, więc jakim cudem Ty chcesz, aby ona cokolwiek wyświetlała.?
Wewnątrz __construct() nie widzę.

@edit:
Dobra, przeoczyłem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

spróbuj: set_error_handler(array('ERRORS', 'ErrorHandler'), 'E_ALL');

Ten post edytował Axexis 6.12.2008, 19:37:45
Go to the top of the page
+Quote Post
trucksweb
post
Post #3





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

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


z E_ALL probowalem i dalej nic
jak wpisze jak podales, wywali blad:
  1. <?php
  2. et_error_handler() expects parameter 2 to be long, string given
  3. ?>


jak wpisze samo E_ALL to dalej ukrywa pozostale bledy.

poza tym, w pliku config mam: error_reporting(E_ALL);

Ten post edytował trucksweb 6.12.2008, 19:42:25
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
spróbuj: set_error_handler(array('ERRORS', 'ErrorHandler'), 'E_ALL');

Nie tu się wstawia E_ALL. ;P

Cytat
juz ukryje.
Mozna to jakos poprawic ? bo chyba powinna wyswietlic elsa z pierwszego if'a

Nie wyświetli, bo stałe błędów pochodzących z parsera nie zaczynają się od E_USER_. Zerknij tu: error_reporting" title="Zobacz w manualu PHP" target="_manual.
Go to the top of the page
+Quote Post
trucksweb
post
Post #5





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

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


czyli gdybym dal dodatkowa mozliwosc w case to powinno przejsc ? bo cos nie bardzo chce dzialac,

dalem :
  1. <?php
  2. case E_ALL:
  3.            echo "<div class='error'><b>Wystąpił błąd: </b> [$errno] $errstr<br />\n";
  4.              echo "  W linii: $errline ,w pliku: $errfile <br />\n";
  5.              echo "Zatrzymano wywołanie3...<br /></div>";
  6.              break;
  7. ?>


i chyba powinno cos wylapac ?

//edit
samo E_ALL nie zadziala, musi byc rozdzielone na poszczególne typy bledow.
no i teraz az pieknie czytac wszystkie bledy (IMG:http://forum.php.pl/style_emoticons/default/guitar.gif)

Ten post edytował trucksweb 6.12.2008, 20:51:01
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 17.09.2025 - 11:23