Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Undefined offset w checkbox
Forum PHP.pl > Forum > Przedszkole
Wild
Witam, jestem nowy. Zaczynam przygodę z php i w ramach nauki sam dla siebie piszę małe skrypty w php.
Skrypt działa ale tak jakby nie do końca. Może do rzeczy:

1. Poniżej zamieszczam prosty formularz oparty na checkboxach zapisany w pliku: 3.Formularz_checkbox.php
  1. <form method="GET" action="http://localhost/Rozdzial8/Cwiczenia/3.Wykonaj_formularz_checkbox.php">
  2. <br />
  3. <input type="checkbox" name="zaznacz_opcje[]" value="sport" />
  4. Sport<br />
  5. <input type="checkbox" name="zaznacz_opcje[]" value="muzyka" />
  6. Muzyka<br />
  7. <input type="checkbox" name="zaznacz_opcje[]" value="podróże" />
  8. Podróże<br />
  9. <input type="checkbox" name="zaznacz_opcje[]" value="książki" />
  10. książki<br />
  11. <input type="submit" value="Prześlij dane" />
  12. </form>

2. Niżej znajduje się skrypt który wyświetla zaznaczone opcje w formularzu. Skrypt zapisany jest w pliku o nazwie 3.Wykonaj_formularz_checkbox.php

  1. echo $_GET['zaznacz_opcje'][0];
  2. echo "<br />";
  3. echo $_GET['zaznacz_opcje'][1];
  4. echo "<br />";
  5. echo $_GET['zaznacz_opcje'][2];
  6. echo "<br />";
  7. echo $_GET['zaznacz_opcje'][3];
  8. echo "<br />";


Niby wszystko jest dobrze ale jak zaznaczę np. tylko sport to pojawia mi się ostrzeżenie o treści:
Cytat
sport
Notice: Undefined offset: 1 in D:\Dokumenty\SerwerWWW\Rozdzial8\Cwiczenia\3.Wykonaj_formularz_checkbox.php on line 15
Notice: Undefined offset: 2 in D:\Dokumenty\SerwerWWW\Rozdzial8\Cwiczenia\3.Wykonaj_formularz_checkbox.php on line 17
Notice: Undefined offset: 3 in D:\Dokumenty\SerwerWWW\Rozdzial8\Cwiczenia\3.Wykonaj_formularz_checkbox.php on line 19


Jak zaznaczę wszystkie opcje to nie pojawia się ostrzeżenie o niezidentyfikowanej wartości pola. Co należało by zrobić aby taki komunikat się nie pojawiał.
Greg0
Wyświetlić w pętli foreach $_GET['zaznacz_opcje']
Co spowoduje wyświetlenie tylko elementów które istnieją
Wild
Mogę prosić o przykład w jaki sposób zastosować foreach aby nie pojawiało się ostrzeżenie. Mimo zastosowania pętli foreach dalej pojawia się ostrzeżenie jak nie zaznaczę jednej z opcji. Przy zaznaczeniu wszystkich opcji komunikat się nie pojawia.

  1. <?php
  2. $i=0;
  3. $tablica = array(
  4. $_GET['zaznacz_opcje'][$i++],
  5. $_GET['zaznacz_opcje'][$i++],
  6. $_GET['zaznacz_opcje'][$i++],
  7. $_GET['zaznacz_opcje'][$i++]
  8. );
  9.  
  10.  
  11. foreach($tablica as $zaznaczona_opcja){
  12.  
  13. echo $zaznaczona_opcja."<br />";
  14. }
  15. /*
  16. echo $_GET['zaznacz_opcje'][0];
  17. echo "<br />";
  18. echo $_GET['zaznacz_opcje'][1];
  19. echo "<br />";
  20. echo $_GET['zaznacz_opcje'][2];
  21. echo "<br />";
  22. echo $_GET['zaznacz_opcje'][3];
  23. echo "<br />";
  24. */
  25. ?>
buliq
@Wild, zastanów się czy to ma sens...
Powieliłeś swój pierwszy błąd w nowy sposób bo dalej chcesz dostać coś co nie istnieje. A przecież $_GET jest tablicą, tak? Twój input też utworzy tablicę, tak? Spójrz nawet jak sie odwołujesz do elementów.

Więc czy nie prościej i logiczniej byłoby gdybyś tego użył tak:

  1. foreach ($_GET['zaznacz_opcje'] as $zaznaczona) {
  2. echo $zaznaczona . "<br />";
  3. }

questionmark.gif
Wild
Dzięki wielkie.
Od początku nie podobał mi się mój sposób. Widziałem, że coś jest nie tak, że bez sensu jest tworzyć tablicę w której umieszcza się $_GET Zaczynam dopiero naukę PHP, niby rozumiem tablice, instrukcje, pętle itp. ale żeby zastosować to w praktyce zaczynam się gubić. Okazało się to takie łatwe :-)
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.