Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> form input method=POST
czaszkowy
post 30.12.2009, 16:50:35
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 8.06.2009

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


Witam,

Chciałbym się dowiedzieć czy do jednego 'form' (metody POST) można dać wiele inputów np. poprzez wykorzystanie JS. Mianowicie chodzi mi o to, żeby po zaznaczeniu checkboxów, wszystkie były brane pod uwagę (a nie tylko jeden). Jeszcze inaczej, czy jest możliwość skrócenia tego kodu tak aby użytkownik mógł wpisać wartość do <input type=text>, po czym zaznaczyć wybrane checkboxy, a następnie potwierdzić wybór jednym przyciskiem submit?

CODE

<form method="post" action="index.php?action=bid">
<input type="text" name="value" value="" />
<input type="checkbox" name="id" value="1" />
<input type="submit" value="Submit" />
</form>
<form method="post" action="index.php?action=bid">
<input type="text" name="value" value="" />
<input type="checkbox" name="id" value="2" />
<input type="submit" value="Submit" />
</form>


Pogrzebałem troche w googlach i wyszedł mi taki kod:

CODE

<form action="index.php?action=bid" method="POST" name="someForm">
<input type="text" name="value" value="" />
<input type="checkbox" name="id" value="1" />
<input type="checkbox" name="id" value="2" />
<input type="checkbox" name="id" value="3" />
<a href="#" onclick="document.someForm.submit();">Submit</a>


Jednak, niestety w tym przydaku, brany jest pod uwagę jedynie ostatni checkbox.

Mógłbym liczyć na pomoc, z Waszej strony?

pozdrawiam
Go to the top of the page
+Quote Post
icetique
post 30.12.2009, 17:12:10
Post #2





Grupa: Zarejestrowani
Postów: 72
Pomógł: 13
Dołączył: 12.04.2009

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


Jeśli już koniecznie chcesz mieć jedną nazwę do wszystkich pól to:

  1. <?php
  2.  
  3. print_r($_POST['id']);
  4.  
  5. ?>
  6.  
  7. <form action="index.php?action=bid" method="POST" name="someForm">
  8. <input type="text" name="value" value="" />
  9. <input type="checkbox" name="id[]" value="1" />
  10. <input type="checkbox" name="id[]" value="2" />
  11. <input type="checkbox" name="id[]" value="3" />
  12. <a href="#" onclick="document.someForm.submit();">Submit</a>


Sprawdzałem na Firefoksie, na innych przeglądarkach może nie działać, więc przetestuj (!).
Go to the top of the page
+Quote Post
darko
post 30.12.2009, 17:18:49
Post #3





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Dostosuj do swoich wymogów
  1. <?php
  2. if($_POST["submit"] == "zapisz") {
  3. print_r($_POST);
  4. }
  5. ?>
  6. <html>
  7. <body>
  8. <form name="form" id="form" action="index.php?action=bid" method="post">
  9. <input type="text" id="ile" value="3" />
  10. <input type="button" onclick="addChks();" value="generuj" />
  11. <input type="submit" id="submit" name="submit" value="zapisz" />
  12. </form>
  13. <script>
  14. function addChks() {
  15. var ile = document.getElementById('ile').value;
  16. var form = document.getElementById('form');
  17. for(var i=1;i<=ile;i++) {
  18. var c = document.createElement('input');
  19. c.setAttribute('type','checkbox');
  20. c.setAttribute('name','checkbox-'+i);
  21. //form.appendChild(c);
  22. form.insertBefore(c, document.getElementById('submit'));
  23. }
  24. }
  25. </script>
  26. </body>
  27. </html>


Ten post edytował darko 30.12.2009, 17:21:09


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
czaszkowy
post 30.12.2009, 17:04:10
Post #4





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 8.06.2009

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


icetique, wrzucilem na serwer plik, odpalilem na ff i chrome, ale niestety to samo, nie bierze pod uwagę wszystkich zaznaczonych checkboxów, tylko jedynie ostatni checkbox.
darko, wartości checkboxów są różne (np. 1111, 2033, 1894 - chciałbym manipulować nimi manualnie - np. z poziomu notatnika), tu przykładowo dałem 1,2,3 abyście zrozumieli co staram się wam przekazać w mojej prośbie. Poza tym jak klikam zapisz, to przenosi mnie na stronę, tak, jakby nie czytało wartości zaznaczonych checkboxów.

Chodzi o to żeby skrypt wczytywał wartości wszystkich checkboxów w podobie do tego
Kod
<form action="index.php?action=bid" method="POST" name="someForm">
<input type="text" name="value" value="" />
<input type="checkbox" name="id" value="1" />
<input type="checkbox" name="id" value="2" />
<input type="checkbox" name="id" value="3" />
<a href="#" onclick="document.someForm.submit();">Submit</a>

tyle ze wlasnie, po wpisaniu wartosci (która ma odpowiadać właśnie tym checkboxom) w pole (input type=text), skrypt przeczyta wszystkie 3 checkboxy za jednym razem.

to tak jakby np. w metodzie GET, za pomocą linku wywołać za jednym razem kupno produktów o id: 123, 723, 456, gdzie wszystkie po cenie 100
Kod
http://www.strona.pl/index.php?action=sklep&kupid=123&kupid=723&kupid=456&cena=100


Czy jest możliwość podobnej interakcji w metodzie POST, aby zamiast 2 "form" zrobić jeden, który będzie wykonywał te same czynności co wcześniejsze 2

Kod
<form method="post" action="index.php?action=bid">
<input type="text" name="value" value="" />
<input type="checkbox" name="id" value="1345" />
<input type="submit" value="Submit" />
</form>
<form method="post" action="index.php?action=bid">
<input type="text" name="value" value="" />
<input type="checkbox" name="id" value="938" />
<input type="submit" value="Submit" />
</form>


Ten post edytował czaszkowy 30.12.2009, 17:05:30
Go to the top of the page
+Quote Post
darko
post 30.12.2009, 18:23:55
Post #5





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Jeśli jakieś elementy formularza mają taki sam atrybut name, to, ostatni nadpisuje przedostatni itd. Dlatego użyłem name="id-"+i, może spróbuj tak, że podajesz ilość checkboxów, (przecinek) wartość pierwszego, (przecinek) wartość następnego itd:

  1. <?php
  2. if($_POST["submit"] == "zapisz") {
  3. print_r($_POST);
  4. }
  5. ?>
  6. <html>
  7. <body>
  8. <form name="form" id="form" action="index.php?action=bid" method="post">
  9. <input type="text" id="ile" value="2,723,456" />
  10. <input type="button" onclick="addChks();" value="generuj" />
  11. <input type="submit" id="submit" name="submit" value="zapisz" />
  12. </form>
  13. <script>
  14. function addChks() {
  15. var ile = document.getElementById('ile').value;
  16. var tile = ile.split(',');
  17.  
  18. var form = document.getElementById('form');
  19. for(var i=1;i<=tile[0];i++) {
  20. var c = document.createElement('input');
  21. c.setAttribute('type','checkbox');
  22. c.setAttribute('name','id-'+i);
  23. //c.setAttribute('name','id');
  24. c.setAttribute('value',tile[i]);
  25. form.insertBefore(c, document.getElementById('submit'));
  26. }
  27. }
  28. </script>
  29. </body>
  30. </html>

Może to Cię jakoś naprowadzi.

localhost Firefox 3.5.6 :
Array ( [id-1] => 723 [id-2] => 456 [submit] => zapisz )


--------------------
Nie pomagam na pw, tylko forum.
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 Wersja Lo-Fi Aktualny czas: 19.05.2025 - 07:18