Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Java][HTML][PHP]tablica array of checkbox zwraca prz dump str
Forum PHP.pl > Forum > Przedszkole
rob_roy
Witam,

Heh mój pierwszy post na tym forum. Przeważnie mi google wystarczało ale mam klina chyba tym razem.
Do rzeczy:
Form z inputami dosyć duży poprzez Post. Nie widze drobnego szczegółu... Albo czegoś nie rozumiem. Interesuje mnie pobieranie z checkbox poprzez metodę POST w formie tablic z zapisem końca członu [] co ma zwracać jako tablicę (raz się udaje a raz nie), ciekawi mnie fakt czemu za pierwszym raz się nie udaje...
  1. <tr>
  2. <td style="width: 15px; text-align: center; vertical-align: top;">&nbsp;</td>
  3. <td style="text-align: left; padding: 5px 0px 2px 0px;">
  4. <span class="NORMAL_TEXT">&nbsp;&nbsp;Promowanie na portalach</span><br>
  5. <input type="checkbox" name="promotion_c[]" value="rybnik"><span class="NORMAL_TEXT">&nbsp;&nbsp;&nbsp;rybnik.com.pl</span><br>
  6. <input type="checkbox" name="promotion_c[]" value="wodzislaw"><span class="NORMAL_TEXT">&nbsp;&nbsp;&nbsp;tuwodzisław.pl</span><br>
  7. <input type="checkbox" name="promotion_c[]" value="zory"><span class="NORMAL_TEXT">&nbsp;&nbsp;&nbsp;tużory.pl</span><br>
  8. <input type="checkbox" name="promotion_c[]" value="jastrzebie"><span class="NORMAL_TEXT">&nbsp;&nbsp;&nbsp;tujastrzebie.pl</span><br>
  9. <input type="checkbox" name="promotion_c[]" value="nul" checked=""><span class="NORMAL_TEXT">&nbsp;&nbsp;&nbsp;brak promocji</span><br>
  10. <input type="checkbox" id="uns" name="unselect" value="unselect" onclick="java script: unselect_promo();"><span class="NORMAL_TEXT">&nbsp;&nbsp;&nbsp;Skasuj wszystkie promocje</span>
  11.  
  12. <script type="text/javascript">
  13. function unselect_promo()
  14. {
  15. u=document.getElementById("uns");
  16. if(u.checked==true){
  17. var list=document.getElementsByName("promotion_c[]");
  18. list[0].checked = false;
  19. list[1].checked = false;
  20. list[2].checked = false;
  21. list[3].checked = false;
  22. list[4].checked = true;
  23. u.checked=false;
  24. }
  25. }
  26. </script>
  27. <input type="checkbox" name="apromotion_c[]" value="ukry1">
  28. <input type="checkbox" name="apromotion_c[]" value="ukry2">
  29. </td>
  30. </tr>

Nic specjalnego. Nie działają <input type="checkbox" name="promotion_c[]">
Ta tablica niby jest stringiem gdy zrobie var_dump:
  1. ["promotion_c"]=> string(5) "Array" ["apromotion_c"]=> array(2) { [0]=> string(5) "ukry1" [1]=> string(5) "ukry2" }

Kod z html jest wykonaniem takiego kodu php:
  1. function form_multi_checkbox($caption,$field_name,$values,$edit)
  2. {
  3. global $CNF["cities"];
  4.  
  5. $field_name.="[]";//pobieramy jako tablice
  6. $values = explode(",",$values);
  7. if($edit==false){$zab=' disabled';}else{$zab='';}
  8. $list = '<tr><td style="width: 15px; text-align: center; vertical-align: top;">&nbsp;</td><td style="text-align: left; padding: 5px 0px 2px 0px;"><span class="NORMAL_TEXT">&nbsp;&nbsp;'.$caption.'</span><br />';
  9. $val = array('rybnik','wodzislaw','zory','jastrzebie','nul');$val_h = $CNF["cities"];
  10. $c=COUNT($val);
  11. $count=0;
  12. for($i=0;$i<$c;$i++)
  13. {
  14. if(in_array($val[$i],$values)){$selected=' checked';$count++;$on_off='on';}else{$on_off='off';$selected='';}
  15.  
  16. if($edit==true)
  17. {
  18. if($count==0 && $i==4){$list.='<input type="checkbox" name="'.$field_name.'" value="'.$val[$i].'" '.$zab.' selected/><span class="NORMAL_TEXT">&nbsp;&nbsp;&nbsp;'.$val_h[$i].'</span><br />';}
  19. else
  20. {$list.='<input type="checkbox" name="'.$field_name.'" value="'.$val[$i].'" '.$zab.$selected.'/><span class="NORMAL_TEXT">&nbsp;&nbsp;&nbsp;'.$val_h[$i].'</span><br />';}
  21. }
  22. else
  23. {
  24. if($count==0 && $i==4){$list.='<img src="layout/checkbox_off.gif"><span class="NORMAL_TEXT">&nbsp;&nbsp;&nbsp;'.$val_h[$i].'</span><br />';}
  25. else
  26. {$list.='<img src="layout/checkbox_'.$on_off.'.gif"><span class="NORMAL_TEXT">&nbsp;&nbsp;&nbsp;'.$val_h[$i].'</span><br />';}
  27. }
  28.  
  29. }
  30. if($edit==false){$list.='<img src="layout/checkbox_off.gif"><span class="NORMAL_TEXT">&nbsp;&nbsp;&nbsp;Nieaktywne</span>';}else{$list.='<input type="checkbox" id="uns" name="unselect" value="unselect" onclick="java script: unselect_promo();"/><span class="NORMAL_TEXT">&nbsp;&nbsp;&nbsp;Skasuj wszystkie promocje</span>';}
  31. $list.= '<script type="text/javascript">
  32. function unselect_promo()
  33. {
  34. u=document.getElementById("uns");
  35. if(u.checked==true){
  36. var list=document.getElementsByName("'.$field_name.'");
  37. list[0].checked = false;
  38. list[1].checked = false;
  39. list[2].checked = false;
  40. list[3].checked = false;
  41. list[4].checked = true;
  42. u.checked=false;
  43. }
  44. }
  45. </script>
  46. <input type="checkbox" name="a'.$field_name.'" value="ukry1"/>
  47. <input type="checkbox" name="a'.$field_name.'" value="ukry2"/>
  48. </td></tr>';
  49.  
  50. return $list;
  51. }


Pytanie czemu czeckbox'y o nazwie promotion_c dają mi string o nazwie Array a nie typ array z danymi jak w przypadku apromotion_c??
Ja nie wiem... Już któraś godzina leci a ja ciągle nie widzę.

pozdrawiam arrowheadsmiley.png
singollo
z czego robisz var_dump ? Wygląda, jakbyś gdzieś wcześniej skonwertował promotion_c na stringa.
rob_roy
Mój dump następuje po sformowaniu forma z checkboxami (wykonanie funkcji form_multi_checkbox) i po wykonaniu POST'a.
  1. var_dump($_POST);exit(0);



Znalazłem...

W momencie walidacji danych przesłanych przez formularz stosuję :

  1. $_POST[$hash]=stripslashes(str_replace('"',"''",$_POST[$hash]));


Niszczyło to tablicę POST'u zawierającą "zmienne" lub 'zmienne' przez co dostawałem tylko string Array

Temat do zamknięcia
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.