Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]$_POST a Notice: Undefined Index
Gabrielx
post 9.04.2011, 11:17:58
Post #1





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


Witam.
Tak wygląda moje drzewo plików:
index.php
  1. switch($_POST['step'])
  2. {
  3. case 0;
  4. {
  5. include_once('step1.php');
  6. break;
  7. }


step1.php
  1. include_once('top.php');
  2.  
  3. echo "<input type='hidden' name='step' value='2'>";
  4. <input type="image" src="images/dalej.png" value="next" alt="Submit" align="center">


top.php
  1. $tab = array("Krok 1", " Krok 2", " Krok 3", " Krok 4", " Krok 5", " Krok 6");
  2. for ($i = 0; $i<7; $i++){
  3. if($tab[$i] == $tab[$_POST["step"]]){
  4. echo "<b>".$tab[$i]."</b>";
  5.  
  6. }
  7. else{
  8. echo $tab[$i];
  9. }
  10. }


Wyskakują dwa ostrzeżenia:
Undefined index: step in \index.php on line 13 - wskazuje na switcha

Notice: Undefined offset: 6 in \top.php on line 16 - gdzie 16 i 21 to linijka z if i z echo $tab[$i]
Notice: Undefined offset: 6 in \top.php on line 21
Go to the top of the page
+Quote Post
mat-bi
post 9.04.2011, 11:18:56
Post #2





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


A może nic po prostu postem nie wysyłasz -,-

Ten post edytował mat-bi 9.04.2011, 11:19:12
Go to the top of the page
+Quote Post
Magic WWW
post 9.04.2011, 11:21:38
Post #3





Grupa: Zarejestrowani
Postów: 123
Pomógł: 32
Dołączył: 9.09.2010
Skąd: Brzeg

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


Przed switchem daj warunek.
  1. if(isset($_POST['step']))
  2. {
  3. // Switch i cała reszta
  4. }


Undefined index oznacza, że w tablicy $_POST nie znajduje się wpis o nazwie 'step'.
Undefined offest oznacza to samo co wyżej, tylko, że nie ma wpisu o danym numerze.

Tak nawiasem próbuj ograniczać cudzysłowie ponieważ może to spowolnić serwer.
  1. $_POST["step"] zmień na $_POST['step']


Ten post edytował Magic WWW 9.04.2011, 11:22:42
Go to the top of the page
+Quote Post
Gabrielx
post 9.04.2011, 11:33:23
Post #4





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


Tak. Ale jeśli dam przed switchem ten warunek, to mi się nic nie wyświetli. Bo tak jakby ten switch jest switchem includującym. $_POST jest przekazywany dopiero po pierwszym case.

Wszystko dobrze się wyświetla, po mojej myśli tylko są te błędy.

Ten post edytował Gabrielx 9.04.2011, 11:33:46
Go to the top of the page
+Quote Post
Magic WWW
post 9.04.2011, 11:38:50
Post #5





Grupa: Zarejestrowani
Postów: 123
Pomógł: 32
Dołączył: 9.09.2010
Skąd: Brzeg

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


Dwa ostatnie błędy możesz usunąć za pomocą zmniejszenia ilości powtórzeń pętli:
  1. for ($i=0; $i<6; ++$i) {
Go to the top of the page
+Quote Post
Gabrielx
post 9.04.2011, 11:59:05
Post #6





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


Tak, to był mój błąd bo usunąłem jeden krok.

Jak proponujecie rozwiązać problem z tym $_POST?

W pierwszym kroku tylko te ostrzeżenie się wyświetla - po prostu nie przekazuje do $_POST żadnej wartości domyślnej.
Go to the top of the page
+Quote Post
Magic WWW
post 9.04.2011, 12:14:33
Post #7





Grupa: Zarejestrowani
Postów: 123
Pomógł: 32
Dołączył: 9.09.2010
Skąd: Brzeg

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


ewentualnie możesz dać przed swtichem warunek.
  1. if(!isset($_POST['step'])) $_POST['step'] = false;


Błędy teoretycznie nie powinno już być.
Go to the top of the page
+Quote Post
kadlub
post 9.04.2011, 12:17:15
Post #8





Grupa: Zarejestrowani
Postów: 548
Pomógł: 105
Dołączył: 4.06.2010

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


  1. case "0":
  2.  
  3. include_once('step1.php');
  4. break;
  5.  
  6.  

za case powinien być dwukropek a nie średnik
a i te klamerki w case nie są potrzebne

Ten post edytował kadlub 9.04.2011, 12:21:27
Go to the top of the page
+Quote Post
Gabrielx
post 9.04.2011, 12:24:58
Post #9





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


Dzięki wielkie Magic WWW smile.gif

Próbowałem inną drogą ustawiając post'a na null, a wystarczyło na false smile.gif

@kadlub

Fakt, nie wiem czemu używałem średników. A co do klamerek to używam ich, bo dla mnie kod wydaje się bardziej przejrzysty. smile.gif
Jest to jakieś "deprecated"?
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: 12.06.2025 - 20:05