Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML]Wartość checkbox'ów na podstawie textarea
pela222
post
Post #1





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 17.04.2013

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


Pytanie dotyczy modyfikacji mojego formularza.
W tej chwili moje checkbox'y w formularzu wygladają tak:
  1. <p><input type="checkbox" name="check[]" value=" przykłądowy tekst z wartością">- przykłądowy tekst z wartością
  2. <p><input type="checkbox" name="check[]" value=" przykłądowy tekst z wartością nr2 ">- przykłądowy tekst z wartością nr2 </p>
  3. <p><input type="checkbox" name="check[]" value=" przykłądowy tekst z wartością nr3 ">- przykłądowy tekst z wartością nr3 </p>
  4. oraz mam dodatkowo jeszcze podkoniec sekcji jeden textarea:
  5. <p><textarea name="check[]"></textarea></p>

Chciałbym jednak dla części z checkbox uzyskać zwiększoną funkcjonalność. Chodzi o to. żeby użytkownik formularza mógł zmodyfikować domyślną wartość tego checkboxa "przykłądowy tekst z wartością" na inną.

Czyli chciałbym przesyłać wartość pola textarea, jeżeli odpowiadający mu checkbox został zaznaczony (przesłąć textarea jako wartość checkbox).

  1. <p><input type="checkbox" name="check[]"></p>
  2. <p><textarea name="textcheck[]" >przykłądowy tekst z wartością</textarea></p>
  3. <p><input type="checkbox" name="check[]"></p>
  4. <p><textarea name="textcheck[]" >przykłądowy tekst z wartością nr2</textarea></p>


Założenia:
1) Chciałbym, aby powiązane pary checkbox - textarea znalazły się w tablicy check[], aby uniknąć nadawania każdemy z checkboxów innej nazwy i niepotrzebnego zwielokrotnienia liczby danych przesyłąnych z formularza. Jeżeli nazwa musi być indywidualna dla kazdego checkbox to jak wstawić zaznaczone checkboxy do tabeli check[] przed wysłaniem danych z formularza.

Rozumiem że pary checkbox - textarea powinny być powiązane jakimś id (IMG:style_emoticons/default/questionmark.gif) ? aby stworzyć powiązanie tych dwóch elementów (IMG:style_emoticons/default/questionmark.gif)

Proszę o podpowiedź jak to zrealizować.
Dziekuję
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Puszy
post
Post #2





Grupa: Zarejestrowani
Postów: 279
Pomógł: 42
Dołączył: 10.10.2011

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


  1. echo '<input type="hidden" name="'.$prefix.'_prefix" value="'.$checkboxes_qty.'" />';


Tak, tego fragmentu nie powinno być, pozostałość po starym kodzie. Linijka do wyrzucenia.



Wyjaśnienie funkcji getFromData

  1. function getFormData($prefixes_list){
  2. $output = array();
  3.  
  4. foreach($prefixes_list as $prefix){ // "przechodzisz" przez wszystkie prefixy
  5.  
  6. for($i=0;$i<$_POST[$prefix.'_qty'];$i++){ // "przechodzisz" przez wszystkie zestawy checkbox+<textarea>
  7.  
  8. if(isset($_POST['cb_'.$prefix.'_'.$i])){ // sprawdzasz czy dany checkbox jest zaznaczony
  9. $output[$prefix][$i]['sent'] = true; // jeżeli tak, ustawiasz wartość (bool) true
  10. }else{
  11. $output[$prefix][$i]['sent'] = false; // jeżeli nie, ustawiasz wartość (bool) false
  12. }
  13.  
  14. $output[$prefix][$i]['text'] = $_POST['ta_'.$prefix.'_'.$i]; // przypisujesz do checkboxa wartość <textarea>
  15. }
  16.  
  17. }
  18.  
  19. return $output; // funkcja zwraca przejrzystą, gotową do edycji tablicę danych formularza
  20. }



ostateczna tablica wygląda tak:
  1. (
  2. [qwer] => Array
  3. (
  4. [0] => Array
  5. (
  6. [sent] => 1
  7. [text] => pytanie 1
  8. )
  9.  
  10. [1] => Array
  11. (
  12. [sent] => 1
  13. [text] => pytanie 2
  14. )
  15.  
  16. [2] => Array
  17. (
  18. [sent] =>
  19. [text] => pytanie 3
  20. )
  21.  
  22. )
  23.  
  24. [asdf] => Array
  25. (
  26. [0] => Array
  27. (
  28. [sent] =>
  29. [text] => pytanie 4
  30. )
  31.  
  32. )
  33.  
  34. [zxcv] => Array
  35. (
  36. [0] => Array
  37. (
  38. [sent] => 1
  39. [text] => pytanie 5
  40. )
  41.  
  42. [1] => Array
  43. (
  44. [sent] =>
  45. [text] => pytanie 6
  46. )
  47.  
  48. [2] => Array
  49. (
  50. [sent] =>
  51. [text] => pytanie 7
  52. )
  53.  
  54. [3] => Array
  55. (
  56. [sent] => 1
  57. [text] => pytanie 8
  58. )
  59.  
  60. )
  61.  
  62. )


W zależności co chcesz z nią zrobić możesz użyć np foreach i wybrać tylko interesujące Cię checkboxy czy też znaleźć konkretną wartość <textarea> i sprawdzić przy jakim checkbox się znajdowała. Dla przykładu tak jak napisałeś, wylistujemy checkboxy które zostały zaznaczone i pobierzemy nową tablicę, tylko zaznaczonych checkboxów:

  1. function listChecked($prepared_form_data){
  2. foreach($prepared_form_data as $prefix_name => $prefix){
  3. foreach($prefix as $cb_no => $set){
  4. if($set['sent']){
  5. print_r('Zaznaczony zostal checkbox nr '.($cb_no+1).' w zestawie pytań "'.$prefix_name.'" a wartosc przypisanego do niego textarea to: '.$set['text'].'<br />');
  6. }
  7. }
  8. }
  9. }
  10.  
  11. function getChecked($prepared_form_data){
  12. $output = array();
  13.  
  14. foreach($prepared_form_data as $prefix_name => $prefix){
  15. foreach($prefix as $cb_no => $set){
  16. if($set['sent']){
  17. $output[] = array(
  18. 'prefix' => $prefix_name,
  19. 'cb_no' => $cb_no+1,
  20. 'text' => $set['text']
  21. );
  22. }
  23. }
  24. }
  25.  
  26. return $output;
  27. }
Go to the top of the page
+Quote Post

Posty w temacie
- pela222   [HTML]Wartość checkbox'ów na podstawie textarea   2.10.2014, 12:54:37
- - Puszy   Nie wiem czy o to Ci chodzi ale naskrobałem coś ta...   2.10.2014, 14:21:26
- - pela222   Super to napisałeś tylko, że ja potrzebuje podać d...   2.10.2014, 15:22:21
- - Puszy   W takim razie dorzuciłem tablicę Twoich wartości, ...   2.10.2014, 15:33:42
|- - pela222   Cytat(Puszy @ 2.10.2014, 15:33:42 ) [...   2.10.2014, 16:07:23
- - Puszy   Nie wiem do końca o co chodzi z tym Ryszardem, wię...   3.10.2014, 08:53:01
- - pela222   No i o to chodziło mistrzu ;-) Ryszard to tylko pr...   3.10.2014, 09:32:48
- - Puszy   Nie musisz łączyć stringów w nawiasach i nie ma ta...   3.10.2014, 09:49:08
- - pela222   Dzięki za kolejną wskazówkę. Na koniec (chyba już...   3.10.2014, 16:51:15
- - Puszy   Wrzuć to sobie w funkcję, stwórz jakąś klasę. Poda...   7.10.2014, 15:21:45
- - pela222   @Puszy Strasznie doceniam twoj czas i pomoc... nie...   7.10.2014, 19:03:42
- - Puszy   [PHP] pobierz, plaintext echo '<input type=...   10.10.2014, 09:25:59
- - pela222   To co robisz to jest dla mnie inna liga... Powiem ...   10.10.2014, 09:47:59
- - Puszy   W którym miejscu uzywasz var_dump? Jeżeli w funkc...   10.10.2014, 10:36:35
- - pela222   [PHP] pobierz, plaintext function getFormData...   10.10.2014, 11:05:24
- - Puszy   I tak i nie, funkcja działa poprawnie, ale widoczn...   10.10.2014, 11:34:39
- - pela222   Już rozumiem dlaczego nie wyświetlało mi struktury...   10.10.2014, 13:14:57
- - Puszy   Znowu podajesz jako parametr zmienną która nie ist...   10.10.2014, 13:29:25
- - pela222   Ok...mam to :-) Na koniec jeszcze raz super dzięku...   10.10.2014, 13:43:31
- - Puszy   Nie ma problemu. Nie jestem specjalistą. Jakbyś sz...   10.10.2014, 13:46:34
- - pela222   W moim przypadku zastosowanie polega na tym, że uż...   15.10.2014, 10:31:50
- - Puszy   Jeżeli potrzebujesz trzech tablic zamiast jednej w...   15.10.2014, 14:28:59
- - pela222   Tak jak pisałem kiedyś. Potrzebuje zmienne $t...   15.10.2014, 14:35:00
- - Puszy   No to w czym problem. $tablica_wielowymiarow...   15.10.2014, 15:34:50
- - pela222   No tak ale: [PHP] pobierz, plaintext function getC...   15.10.2014, 15:58:05
- - Puszy   W fanej tablicy na jednym poziomie nie możesz mieć...   15.10.2014, 23:05:25
- - pela222   Ja nie potrzebuję nic innego niż: $qwer = arr...   17.10.2014, 16:21:06
- - Puszy   Nie potrzebujesz dwóch funkcji które robią to samo...   20.10.2014, 14:56:53


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: 6.10.2025 - 06:40