Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]$_POST a Notice: Undefined Index
Forum PHP.pl > Forum > Przedszkole
Gabrielx
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
mat-bi
A może nic po prostu postem nie wysyłasz -,-
Magic WWW
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']
Gabrielx
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.
Magic WWW
Dwa ostatnie błędy możesz usunąć za pomocą zmniejszenia ilości powtórzeń pętli:
  1. for ($i=0; $i<6; ++$i) {
Gabrielx
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.
Magic WWW
ewentualnie możesz dać przed swtichem warunek.
  1. if(!isset($_POST['step'])) $_POST['step'] = false;


Błędy teoretycznie nie powinno już być.
kadlub
  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
Gabrielx
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"?
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.