Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Notice: Undefined index, Ile jeszcze razy?
IIFF
post 25.08.2011, 15:29:07
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 4.11.2008

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


Każdy zna chyba ten błąd, ja aż za dobrze... Jaka zasada powoduje że on się pokazuje/nie pokazuje. Jak zdefiniować index raz a dobrze?!

Cytat
Notice: Undefined index: wyslane in x:\xampp\htdocs\xxx\xxx\xxx.php on line 13

  1. if ($_POST["wyslane"]) { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt


Nie chodzi mi o to co gdzie tam dopisać, ale jak definiować index w ogóle gdzie jest zawsze błąd gdy wyskakuje ten błąd? smile.gif

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
nospor
post 25.08.2011, 15:30:03
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ty nie masz definiować tylko masz sprawdzać czy jest zdefiniowane

NIe: if ($_POST["wyslane"])
a: if (isset($_POST["wyslane"]))

I pisz proszę w dziale przedszkole - przenosze


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
IIFF
post 25.08.2011, 17:33:04
Post #3





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 4.11.2008

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


Ok, dzięki, ale zmiana tego:

  1. if ($blad == 0) {


Daje kolejny błąd, jak rozpoznać kiedy dajemy isset, a kiedy co innego, w ogóle od czego to zależy?
Go to the top of the page
+Quote Post
peter13135
post 25.08.2011, 17:37:07
Post #4





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


  1. $a=1;
  2. echo $a;

tutaj błędu nie będzie, bo przed wyświetleniem zmiennej, jest ona zawsze zdefiniowana

  1. echo $_GET['a'];

tutaj nie mamy pewności, że adres ma postać ?a=jakas_wartosc
więc musimy kod przerobić na:
  1. if(isset($_GET['a']))
  2. echo $_GET['a'];



[/php]


--------------------
:)
Go to the top of the page
+Quote Post
IIFF
post 25.08.2011, 17:56:50
Post #5





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 4.11.2008

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


A jak w TYM KONKRETNYM przypadku to zrobić, bo podajesz mi jakieś GETY których nie ma w moim kodzie, czy proponujesz przerobić to całkiem w taki sposób jak podałeś?

Proszę o tłumaczenie jak krowie na rowie - nie każdy siedzi w tym od lat. wink.gif
Go to the top of the page
+Quote Post
melkorm
post 25.08.2011, 18:01:19
Post #6





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Jeżeli zmienną sobie bierzesz za przeproszeniem z `dupy` to dostaniesz NOTICE, zmienna / indeks itp muszą być zadeklarowane przed jakimkolwiek wykorzystaniem, po to jest metoda isset która informuje Ciebie czy zmienna w ogóle istnieje - i nic więcej o niej nie mówi.

w skrócie :
  1. isset($a); // false
  2. echo $a; // NOTICE
  3.  
  4. $a = 'foo';
  5. isset($a); // true
  6. echo $a; // ok
  7.  
  8. $bar = array();
  9. isset($bar['foo']); // false
  10. echo $bar['foo']; // NOTICE
  11.  
  12. $bar = array( 'foo' => 1 );
  13. isset($bar['foo']); // true
  14. echo $bar['foo']; // ok


Ten post edytował melkorm 25.08.2011, 18:02:46


--------------------
Go to the top of the page
+Quote Post
peter13135
post 25.08.2011, 18:12:18
Post #7





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


jakbyś dokladnie przeczytał, to pewnie byś zrozumiał.. no ale może masz rację, nie pamięta wół jak cielęciem był. Postaram się napisać inacczej.

undefined variable jest wywalane, gdy próbujesz użyć zmiennej która nie istnieje
undefined index jest wywalane, gdy próbujesz użyć elementu tablicy który nie istnieje.

Za dużo kodu nie podałeś, więc ciężko mi na jego przykładzie coś mówić. Napiszę więc po swojemu.
  1.  
  2. if(jakas_funkcja()==false)
  3. $error=1;


Jeśli jakas_funkcja zwróci false, to $error będzie zdefiniowana i jej użycie np. takie:
  1. if($error=2)
nie będzie wywalało błędu.
w przeciwnym wypadku, zmienna nie będzie zdefiniowana, interpreter nie będzie znał tej zmiennej i dlatego wywali błąd.

Rozwiązaniem uprzednie sprawdzenie czy zmienna została zdefiniowanaq, czyli np:
  1. if(isset($error))



drugim sposób, który byś znał, gdybyś znał jakikolwiek język kompilowany to zdeiniowanie od razu tej zmiennej, aby mieć zawsze pewność, że ona istnieje. np.
  1.  
  2. $error=0;
  3. if(jakas_funkcja()==false)
  4. $error=1;
  5. if($error=1)
  6. {
  7. echo 'błąd';
  8. }



--------------------
:)
Go to the top of the page
+Quote Post
IIFF
post 25.08.2011, 18:31:03
Post #8





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 4.11.2008

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


Ok, dzięki, pogłówkowałem sam, dodałem na początku:
  1. $blad = isset($blad);

Błędu nie wywala, ale co to robi właściwie? smile.gif Sprawdza że zmienna nie istnieje i to wszystko? Nie ma to jakiś "ukrytych działań" i niepożądanych skutków?
Go to the top of the page
+Quote Post
peter13135
post 25.08.2011, 18:41:19
Post #9





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


ojej, nie wiem jak inaczej mam Ci to wytłumaczyć :/


--------------------
:)
Go to the top of the page
+Quote Post
IIFF
post 25.08.2011, 19:20:03
Post #10





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 4.11.2008

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


A co? ŹLE? blink.gif
Go to the top of the page
+Quote Post
peter13135
post 25.08.2011, 20:18:33
Post #11





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


Po prostu bez sensu wink.gif

tak trudno zrozumieć, że błąd undefined variable jest wywalany wtedy gdy chcesz użyć niezdefiniowanej zmiennej, a funkcja isset sprawdza czy dana zmienna jest zdefiniowana questionmark.gif


--------------------
:)
Go to the top of the page
+Quote Post
cycofiasz
post 25.08.2011, 20:22:45
Post #12





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

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


Już chyba krowa szybciej by to ogarnęła wink.gif

Daj na początku taki kod:

  1. $_POST["wyslane"] = isset($_POST["wyslane"]) ? $_POST["wyslane"] : '';


Ten post edytował cycofiasz 25.08.2011, 20:25:51
Go to the top of the page
+Quote Post
konole
post 25.08.2011, 20:30:32
Post #13





Grupa: Zarejestrowani
Postów: 275
Pomógł: 32
Dołączył: 21.03.2006
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


Cytat(cycofiasz @ 25.08.2011, 19:22:45 ) *
Już chyba krowa szybciej by to ogarnęła wink.gif

Daj na początku taki kod:

  1. $_POST["wyslane"] = isset($_POST["wyslane"]) ? $_POST["wyslane"] : '';

Używając operatora "?" do konstrukcji warunkowych jeszcze bardziej mu zmącisz w głowie. ;D
Go to the top of the page
+Quote Post
IIFF
post 25.08.2011, 20:52:16
Post #14





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 4.11.2008

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


Cytat(peter13135 @ 25.08.2011, 21:18:33 ) *
tak trudno zrozumieć, że błąd undefined variable jest wywalany wtedy gdy chcesz użyć niezdefiniowanej zmiennej, a funkcja isset sprawdza czy dana zmienna jest zdefiniowana questionmark.gif

Dlatego ją zdefiniowałem, by poprostu sprawdzała czy istnieje, a jeśli istnieje to: KONIEC. Poprostu by nie wywalałóo błędu...

Jaki jest lepszy sposób by: nie wywalało błędu?!

Jeśli ktoś chce więcej: o tej zmiennej, może sprawdzić od razu i mi doradzić, może jest lepszy sposób na zrobienie tego niż ten?
Go to the top of the page
+Quote Post
nospor
post 25.08.2011, 21:01:44
Post #15





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ale durny poradnik na tych webskrypty. Zeby z takimi błędami pisać :/

$blad = 0;
To powinno być na samym początku i po sprawie. Skoro $blad jest zwiększana o 1 to trzeba jej ustawić początkową wartość, w typ przypadku 0.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 14.08.2025 - 01:46