Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zmienna $_REQUEST zawierająca tablicę, a <SELECT
Forum PHP.pl > Forum > Przedszkole
damazy76
Witam wszystkich,

Jeśli chcemy odebrać metodą GET tablicę, przekazujemy do skryptu argumenty następująco:
skrypt.php?arg[1]=xxx&arg[2]=zzz

Jeśli w formularzu umieścimy:
<SELECT NAME="arg" multiple> itd.,

otrzymujemy:
skrypt.php?arg=xxx&arg=zzz,
a $_REQUEST['arg'] nie jest tablicą - zawiera jedną wartość.

Jak zebrać w php wartości z listy wielokrotnego wyboru?.

Z góry dziękuję i pozdrawiam
Wave
Kod
<SELECT NAME="arg[0]">zzz
<SELECT NAME="arg[1]">yyy
<SELECT NAME="arg[2]">xxx

O to chodzi?
nospor
jezeli masz selecta typu multiple, to musi mu podac nazwe tablicową, czyli z [] na koncu:
  1. <SELECT NAME="arg[]" multiple> itd.,
damazy76
Wave, nie w tym rzecz, nie chcę wyświetlić kilku selectów zwracających po jednej wartości. Wyświetlam jedną listę, z możliwością wyboru kilku odpowiedzi. Problem polega na tym, jak odebrać w php listę wyborów dokonanych przez użytkownika, NA JEDNEJ liście.
Standardowo przeglądarka generuje url zgodnie z poniższym przykładem.

Robię tak:
  1. <form method="GET" action="test.php">
  2. <select size="10" name="arg" multiple>
  3. <option value="1">wart1</option>
  4. <option value="2">wart2</option>
  5. <option value="3">wart3</option>
  6. <option value="4">wart4</option>
  7. </select><input type="submit" value="Prześlij" name="B1"><input type="reset" value="Resetuj" name="B2"></p>
  8. </form>


zatwierdzenie tego, daje nam:
test.php?arg=1&arg=2&arg=3&arg=4&B1=Zapisz
i to wchodzi sobie, np. w perlu jako tablica. W php mamy tylko jedną wartość, ostanią z listy.

Nospor, twój przykład daje tylko tyle, ze do nazwy argumentu dochodzą nawiasy, ale dalej jest to lista np. 4-ech argumentów, o identycznej nazwie. Przeglądarka nie uzupełnia indeksów. Po prostu wali to co podałeś w nazwie i tyle.

Pytanie brzmi zatem, jak przy użyciu php odczytać wszystkie wartości z w.w. URL-a, ewentualnie jak przerobić mój html.
crash
Gdybyś poświęcił chwilę na szukanie to dowiedziałbyś się, że wystarczy dodać do nazwy [] żeby przesłać wszystkie dane jako tablicę.
damazy76
Dobrze, dobrze, wszystko gra.
Przepraszam, Crash ma rację.
To działa prawidłowo.

Byłem przekonany, że konieczne jest umieszczenie jeszcze indeksu, a nie samych nawiasów, więc błędnie zakładałem, że nospor dokonał skrótu myślowego.

Dzięki panowie.
nospor
@damazy ja nie wiem jak ty wykorzystales moj kod, ale zrobiles to źle. to co podalem jest prawidlowe. Masz przyklad. dziwnym trafem on u mnie dziala

  1. <form method="get">
  2.     <select name="test[]" multiple="multiple">
  3.         <option value="1">1</option>
  4.         <option value="2">2</option>
  5.         <option value="3">3</option>
  6.     </select>
  7.     <input type="submit" />
  8. </form>
  9. <?
  10. print_r($_GET['test']);
  11. ?>


edit: tak to jest jak sie pisze w tym samym momencie winksmiley.jpg
damazy76
No już się właśnie poprawiłem. Miałeś rację, piszę przecie ;-), dziękuję.
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.