Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [html + php] Odebranie tablicy z formularza
Juhas
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 25.01.2007

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


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)
Go to the top of the page
+Quote Post
kriqs
post
Post #2





Grupa: Zarejestrowani
Postów: 148
Pomógł: 0
Dołączył: 31.05.2006

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


  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


--------------------
Pozdrawiam
kriqs

mam nadzieje ze pomoglem :)
Go to the top of the page
+Quote Post
Juhas
post
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 25.01.2007

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


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ę.
Go to the top of the page
+Quote Post
JaRoPHP
post
Post #4





Grupa: Zarejestrowani
Postów: 675
Pomógł: 15
Dołączył: 7.11.2004
Skąd: Katowice

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


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]

Ten post edytował JaRoPHP 26.01.2007, 19:37:34


--------------------
Kto pyta, nie błądzi...
Kto zbłądził, ten pyta...
Go to the top of the page
+Quote Post
Juhas
post
Post #5





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 25.01.2007

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


Kurcze, no nie działa. Cały czas dostaję pojedyńczą wartość :/ - wartość ostatniego zaznaczonego check boxa
Go to the top of the page
+Quote Post
Cienki1980
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


To pokaż jak masz zrobiony cały kod. Może masz jakiegoś bug'a w tym kodzie.


--------------------
404
Go to the top of the page
+Quote Post
JaRoPHP
post
Post #7





Grupa: Zarejestrowani
Postów: 675
Pomógł: 15
Dołączył: 7.11.2004
Skąd: Katowice

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


@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...


--------------------
Kto pyta, nie błądzi...
Kto zbłądził, ten pyta...
Go to the top of the page
+Quote Post
Juhas
post
Post #8





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 25.01.2007

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


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
Go to the top of the page
+Quote Post
Cienki1980
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


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. ?>


--------------------
404
Go to the top of the page
+Quote Post
Juhas
post
Post #10





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 25.01.2007

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


Oj, wykryłem już błąd okrutnie głupi. Patrzcie, gdzie umieściłem return w funkcji translateArrayTag :/
Przepraszam za te posty winksmiley.jpg

Ten post edytował Juhas 29.01.2007, 12:37:34
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 Aktualny czas: 22.08.2025 - 02:49