2014-02-26 190 views
0

我已經設置了一組複選框。它們是動態的,所以複選框的數量將根據使用該網站的人而不同。如何創建複選框的結構是:將複選框值傳遞給數組?

<label for="plabackformat-holder-label">Format</label> 
    <div class=" playbackformat-holder-<?php echo $num; ?> playbackformat-holder"> 
    <div class="playback-format-radio-buttons"> 

    <label for="notset-<?php echo $num; ?>"> 
     <input type="checkbox" class="playbackformat-holder-radiobutton" value="notset" name="playback_format[<?php echo $second_num; ?>]" id="notset-<?php echo $num; ?>" <?php if($field['playback_format'] == 'notset') { echo 'checked'; } ?>>None 
    </label> 

    <label for="dvd-<?php echo $num; ?>"> 
     <input type="checkbox" class="playbackformat-holder-radiobutton" value="dvd" name="playback_format[<?php echo $second_num; ?>]" id="dvd-<?php echo $num; ?>" <?php if($field['playback_format'] == 'dvd') { echo 'checked'; } ?>>DVD 
    </label> 

    <label for="bluray-<?php echo $num; ?>"> 
     <input type="checkbox" class="playbackformat-holder-radiobutton" value="bluray" name="playback_format[<?php echo $second_num; ?>]" id="bluray-<?php echo $num; ?>" <?php if($field['playback_format'] == 'bluray') { echo 'checked'; } ?>>Bluray 
    </label>  

    <label for="3d-<?php echo $num; ?>"> 
     <input type="checkbox" class="playbackformat-holder-radiobutton" value="3d" name="playback_format[<?php echo $second_num; ?>]" id="3d-<?php echo $num; ?>" <?php if($field['playback_format'] == '3d') { echo 'checked'; } ?>>3d 
    </label><br /> 

</div>      
</div> 

我保存功能是:

$new = array(); 

for ($i = 0; $i < $count; $i++) { 

    $new[$i]['playback_format'] = $playbackFormats[$i]; 

    } 

我已經在這個問題上讀了,似乎它的,因爲我的輸入字段不包含唯一名。我試圖將數據存儲到數組中,所以它會是['playback_format'] => dvd,3d,bluray或類似的東西。

現在它只存儲上次選中的值。有沒有一種方法,我可以使用forloop或其他東西迭代檢查值並將它們推入我的數組?

回答

1

您可以在每個<input name="playback_format[]"/> html標籤中刪除「$second_num」。一旦你提交表單,這將把所有的東西都放到你的數組中。您可以通過將此行作爲測試添加到頁面來進行檢查。

<?php print_r($_REQUEST['playback_format']); ?>

一般情況下,你要避免任何循環,如果不要求他們。

希望能幫助你在做什麼。

1

什麼是$second_num?它是否需要成爲輸入名稱的一部分?

你可以讓PHP如果你做這種方式認識提交的值作爲數組:

<input name="playback_format[<?php echo $second_num; ?>][]"> 

或者,如果你不需要$second_num作爲名稱的一部分,只是:

<input name="playback_format[]"> 

$_POST['playback_format']將是一個包含所有選定選項的數組。

PHP docs中有一節專門介紹了這種行爲。

1

複選框在您的示例中具有相同的名稱。將它命名爲不同的喜歡:

<label for="plabackformat-holder-label">Format</label> 
    <div class=" playbackformat-holder-<?php echo $num; ?> playbackformat-holder"> 
    <div class="playback-format-radio-buttons"> 

    <label for="notset-<?php echo $num; ?>"> 
     <input type="checkbox" class="playbackformat-holder-radiobutton" value="notset" name="playback_format_notset" id="notset-<?php echo $num; ?>" <?php if($field['playback_format_notset'] == 'notset') { echo 'checked'; } ?>>None 
    </label> 

    <label for="dvd-<?php echo $num; ?>"> 
     <input type="checkbox" class="playbackformat-holder-radiobutton" value="dvd" name="playback_format_dvd" id="dvd-<?php echo $num; ?>" <?php if($field['playback_format_dvd'] == 'dvd') { echo 'checked'; } ?>>DVD 
    </label> 

    <label for="bluray-<?php echo $num; ?>"> 
     <input type="checkbox" class="playbackformat-holder-radiobutton" value="bluray" name="playback_format_bluray" id="bluray-<?php echo $num; ?>" <?php if($field['playback_format_bluray'] == 'bluray') { echo 'checked'; } ?>>Bluray 
    </label>  

    <label for="3d-<?php echo $num; ?>"> 
     <input type="checkbox" class="playbackformat-holder-radiobutton" value="3d" name="playback_format_3d" id="3d-<?php echo $num; ?>" <?php if($field['playback_format_3d'] == '3d') { echo 'checked'; } ?>>3d 
    </label><br /> 

</div>      
</div> 

而在PHP試試這個:

//WHen you want to see what is send in Post : 
var_dump($_POST); 

//So, for get result : 
$tab = array(); 
foreach($_POST as $key =>$value){ 
    $tab[$key] = $value; 
    //Display it 
    echo $key . "=" . $value; 
} 
相關問題