Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak auczyć się poprawiać Zawiadomienia (Notice..)
Forum PHP.pl > Forum > Przedszkole
r3pilc3
Witam.
Jak poprawiać zawiadomienia, które wyskakują na stronie po dodaniu w pliku index.php pełnego raportowania błędów:
  1. error_reporting(E_ALL | E_STRICT);


Oto przykładowe zawiadomienie:
-Notice: Undefined index: activeon in C:\xampp\htdocs\Sklep_jubilerski\app\controllers\admin.php on line 240
  1. if($option['activeon'])


Takich zawiadomień mam z 10. Podałem 1przykład, ponieważ wszystkie zawierają ta samą wiadomość czyli są analogiczne.
Bardzo proszę o nie tłumaczenie o co w tym chodzi, ponieważ wiem.
Bardzo proszę o podanie przykładu w jak mam to zrobić - jestem początkujący.
spokoloko123
Jak byś wiedział o co chodzi to byś umiał to rozwiązać na poczekaniu...
  1. if(isset($option['activeon']) && $option['activeon'])
spokoloko123
Wszystko zależy co chcesz sprawdzić. Czy tylko istnienie:
  1. if(isset($option['activeon']))

Czy też to jaka jest wartość, bo w przypadku gdy $option['activeon'] == false lub 0 to warunek nie zostanie spłniony dla:
  1. if(isset($option['activeon']) && $option['activeon'])

natomiast taki warunek został by spełniony dla pierwszego przykładu niezależnie od wartości, ważne, żeby była. wink.gif
spokoloko123
Analogicznie:
  1. if(isset($registry->addon)) $this->addon = $registry->addon;


Cytat(r3pilc3 @ 4.08.2012, 17:56:35 ) *
a potem dalej tak samo dla pozostałych 6 Notice?

Tak wink.gif
spokoloko123
Widzę, że dużo masz tych błędów, weź na początku pliku admin.php daj taką linie:
  1. error_reporting(E_ERROR | E_WARNING | E_PARSE);

Wyłączy to powiadomienia Notice;
spokoloko123
  1. $this->__checklogin($action,$controller,$args,$post,(isset($message)? $message : ""));

To pomoże.
spokoloko123
1.
  1. if($_GET['sid']!='' && isset($_GET['sid']))

2.
  1. $this->template->set('login_details', (isset($_SESSION['Admin_login_details'])?$_SESSION['Admin_login_details']:""));

3.
  1. $this->template->set('flash', (isset( $_SESSION['flash'])? $_SESSION['flash']:""));
abort
  1. $controller = new $class($this->registry, $models, $addons, $layout, $controller);

wykonuje się POZA linią sprawdzającą istnienie $addons (magiczna instrukcja "if")
abort
No bo dalszy kod jest prawdopodobnie uzależniony od inicjalizacji obiektu ($controller = new $class...). Więc się nie dziw.

Ja bym to napisał w postaci
  1. if(isset($addons)) {
  2. // poprawne parametry - wykonujemy kod
  3. $controller = new $class
  4. [... dalszy kod ...]
  5. } else {
  6. // cokolwiek co chcesz zrobić w przypadku błędnego kodu
  7. // przeniesienie na inną stronę, wyświetlenie strony domyślnej...
  8.  
  9. // inwencja zależy tylko od Ciebie
  10.  
  11. }

Tyle.
abort
Wcięcia sugerują, że $controller = new $class[...] ma się wykonać, jeśli $addons jest ustawione.
Tymczasem jeśli $addons jest ustawione, wykonuje się TYLKO PIERWSZA instrukcja foreach.
Naprawdę, poczytaj o składni i dodaj odpowienio nawiasy klamrowe.
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.