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...
<td style="width: 15px; text-align: center; vertical-align: top;"> </td> <td style="text-align: left; padding: 5px 0px 2px 0px;"> <span class="NORMAL_TEXT"> Promowanie na portalach
</span><br> <input type="checkbox" name="promotion_c[]" value="rybnik"><span class="NORMAL_TEXT"> rybnik.com.pl
</span><br> <input type="checkbox" name="promotion_c[]" value="wodzislaw"><span class="NORMAL_TEXT"> tuwodzisław.pl
</span><br> <input type="checkbox" name="promotion_c[]" value="zory"><span class="NORMAL_TEXT"> tużory.pl
</span><br> <input type="checkbox" name="promotion_c[]" value="jastrzebie"><span class="NORMAL_TEXT"> tujastrzebie.pl
</span><br> <input type="checkbox" name="promotion_c[]" value="nul" checked=""><span class="NORMAL_TEXT"> brak promocji
</span><br> <input type="checkbox" id="uns" name="unselect" value="unselect" onclick="java script: unselect_promo();"><span class="NORMAL_TEXT"> Skasuj wszystkie promocje
</span>
<script type="text/javascript"> function unselect_promo()
{
u=document.getElementById("uns");
if(u.checked==true){
var list=document.getElementsByName("promotion_c[]");
list[0].checked = false;
list[1].checked = false;
list[2].checked = false;
list[3].checked = false;
list[4].checked = true;
u.checked=false;
}
}
<input type="checkbox" name="apromotion_c[]" value="ukry1"> <input type="checkbox" name="apromotion_c[]" value="ukry2">
Nic specjalnego. Nie działają <input type="checkbox" name="promotion_c[]">
Ta tablica niby jest stringiem gdy zrobie var_dump:
["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:
function form_multi_checkbox($caption,$field_name,$values,$edit)
{
$field_name.="[]";//pobieramy jako tablice
if($edit==false){$zab=' disabled';}else{$zab='';}
$list = '<tr><td style="width: 15px; text-align: center; vertical-align: top;"> </td><td style="text-align: left; padding: 5px 0px 2px 0px;"><span class="NORMAL_TEXT"> '.$caption.'</span><br />';
$val = array('rybnik','wodzislaw','zory','jastrzebie','nul');$val_h = $CNF["cities"]; $count=0;
for($i=0;$i<$c;$i++)
{
if(in_array($val[$i],$values)){$selected=' checked';$count++;$on_off='on';}else{$on_off='off';$selected='';}
if($edit==true)
{
if($count==0 && $i==4){$list.='<input type="checkbox" name="'.$field_name.'" value="'.$val[$i].'" '.$zab.' selected/><span class="NORMAL_TEXT"> '.$val_h[$i].'</span><br />';}
else
{$list.='<input type="checkbox" name="'.$field_name.'" value="'.$val[$i].'" '.$zab.$selected.'/><span class="NORMAL_TEXT"> '.$val_h[$i].'</span><br />';}
}
else
{
if($count==0 && $i==4){$list.='<img src="layout/checkbox_off.gif"><span class="NORMAL_TEXT"> '.$val_h[$i].'</span><br />';}
else
{$list.='<img src="layout/checkbox_'.$on_off.'.gif"><span class="NORMAL_TEXT"> '.$val_h[$i].'</span><br />';}
}
}
if($edit==false){$list.='<img src="layout/checkbox_off.gif"><span class="NORMAL_TEXT"> Nieaktywne</span>';}else{$list.='<input type="checkbox" id="uns" name="unselect" value="unselect" onclick="java script: unselect_promo();"/><span class="NORMAL_TEXT"> Skasuj wszystkie promocje</span>';}
$list.= '<script type="text/javascript">
function unselect_promo()
{
u=document.getElementById("uns");
if(u.checked==true){
var list=document.getElementsByName("'.$field_name.'");
list[0].checked = false;
list[1].checked = false;
list[2].checked = false;
list[3].checked = false;
list[4].checked = true;
u.checked=false;
}
}
</script>
<input type="checkbox" name="a'.$field_name.'" value="ukry1"/>
<input type="checkbox" name="a'.$field_name.'" value="ukry2"/>
</td></tr>';
return $list;
}
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 (IMG:
style_emoticons/default/arrowheadsmiley.png)