Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [html + php] Odebranie tablicy z formularza
Forum PHP.pl > Forum > Przedszkole
Juhas
Cześć, mam problem z odebraniem tablicy z formularza.
Mam plik(html), w którym jest cały formularz.
M.in.:

  1. <input type="checkbox" name="grupa" id="1" value="1">blabla
  2. <input type="checkbox" name="grupa" id="2" value="2">blabla2
  3. <input type="checkbox" name="grupa" id="3" value="3">blabla3


Dane są przesyłane postem do pliku php

Następnie w pliku php próbuję je normalnie wyciągnąć, łudząc się, że dostanę tablicę:

  1. <?php
  2. $grupa = $_POST['grupa'];
  3. ?>


Jednak tablicy nie dostaję. Dostaję tylko ostatniego zaznaczonego checkboxa.
Jak zrobić, żeby dostać tablicę wszystkich checkboxów?
(wszystkich, lub tylko tych zaznaczonych - wszystko jedno)
kriqs
  1. <input type="checkbox" name="grupa[1]" id="1" value="1">blabla
  2. <input type="checkbox" name="grupa[2]" id="2" value="2">blabla2
  3. <input type="checkbox" name="grupa[3]" id="3" value="3">blabla3

  1. <?php
  2. var_dump( $_POST['grupa'] );
  3. ?>


i wszystko jasne smile.gif
Juhas
Cytat(kriqs @ 26.01.2007, 17:03:16 ) *
  1. <?php
  2. var_dump( $_POST['grupa'] );
  3. ?>


i wszystko jasne smile.gif


No nic nie jest jasne, bo wiem tyle, ile wiedziałem. Że dostaję pojedyńczego stringa, a nie tablicę.
JaRoPHP
Sedno tkwi w nazewnictwie pól <input />. Zauważ, że @kriqs tak nazwał elementy (name="grupa[]"):
  1. <input type="checkbox" name="grupa[]" value="1" />
  2. <input type="checkbox" name="grupa[]" value="2" />
  3. <input type="checkbox" name="grupa[]" value="3" />

Dzięki temu, przesłana zostaje tablica, co można zauważyć np. dzięki funkcji var_dump():
Cytat
array(2) { [0] => string(1) "1" [1] => string(1) "2" }
[u]
Juhas
Kurcze, no nie działa. Cały czas dostaję pojedyńczą wartość :/ - wartość ostatniego zaznaczonego check boxa
Cienki1980
To pokaż jak masz zrobiony cały kod. Może masz jakiegoś bug'a w tym kodzie.
JaRoPHP
@Juhas A jak chcesz odczytać te wartości?
Używasz np. instrukcji foreach" title="Zobacz w manualu php" target="_manual?
Pokaż kod, pewnie wyjaśni się co nieco...
Juhas
OK, oto fragment kodu związany z tą tablicą:

plik .html:

(usunąłem znaczniki związane z tabelą, w tej grupie jest troszkę więcej, ale na takie zasadzie)
  1. <input type="checkbox" name="dzialalnosc[]" id="1" value="1"><LABEL for="1">Meble tapicerowane</LABEL>
  2.  
  3. <input type="checkbox" name="dzialalnosc[]" id="7" value="7"><LABEL for="7">Handel meblami </LABEL>
  4.  
  5. <input type="checkbox" name="dzialalnosc[]" id="2" value="2"><LABEL for="2">Meble do siedzenia </LABEL>
  6.  
  7. <input type="checkbox" name="dzialalnosc[]" id="8" value="8"><LABEL for="8">Produkcja tkanin</LABEL>


No i plik php:

  1. <?php
  2. $dzialalnosc = translateArrayTag($_POST['dzialalnosc'], $_POST['dzialalnosc_inna']);
  3. ?>


Funkcja translateArrayTag zwraca stringa i wygląda następująco:

  1. <?php
  2. function translateArrayTag($arr, $other)
  3. {
  4.  
  5. for($i=0; $i<sizeof($arr); $i++)
  6. {
  7. if($arr[$i]=="13") $s.=translateTag($arr[$i]).$other.', ';
  8.  else $s.=translateTag($arr[$i]).', ';
  9.  
  10. return substr($s, 0, strlen($s)-2);  
  11. }
  12.  
  13. }
  14. ?>


funkcja translateTag, to po prostu same case'y
W tablicy powinienem mieć wartości liczbowe(no, jako łańcuch chyba nie? smile.gif)

Chodzi o to, że w checkboxach jest też pole: "inne" i gdy się to zaznaczy, wtedy trzeba wpisać - to co zostanie wpisane, tutaj mam w zmiennej $other
Na końcu funkcji obcinam 2 ostatnie znaki, czyli przecinek i spację. Ale tutaj już $arr nie jest tablicą.
W ogóle w post już nie dostaję tablicy
Cienki1980
Czyli jeżeli ktoś zaznaczy kilka checkboxów w tym pole inne i wpisze tam jakąś wartość chcesz otrzymać ciąg
Kod
1,3,5,6,jakas_wartosc_z_pola_inne


Czy jakoś to inaczej questionmark.gif
Jeżeli tak to może sprawdź takie rozwiązanie:
  1. <?php
  2. $dzialanosc=implode(',',$_POST['dzialalnosc']);
  3.  
  4. if(isset($_POST['dzialanosc_inna']) && $_POST['dzialanosc_inna']!='')
  5.  $dzialalnosc.=",".$_POST['dzialanosc_inna'];
  6. ?>
Juhas
Oj, wykryłem już błąd okrutnie głupi. Patrzcie, gdzie umieściłem return w funkcji translateArrayTag :/
Przepraszam za te posty winksmiley.jpg
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.