2017-06-02 46 views
0

我有以下多選代碼的形式:笨如何處理多選數據模型

<div class="form-group" style="margin-bottom: 45px;"> 
         <label class="control-label" for="non-compatibility"><?php echo _l('invoice_suboption_noncompatible'); ?></label> 
         <select multiple class="selectpicker display-block" data-width="100%" name="non-compatibility[]" id="non-compatibility" title='<?php echo _l('invoice_suboption_noncompatible'); ?>'> 
          <option value=""></option> 
          <?php foreach($suboptions as $suboption){ ?> 
          <option value="<?php echo $suboption['name']; ?>" data-subtext="<?php echo $suboption['plat_option']; ?>"><?php echo $suboption['name']; ?></option> 
          <?php } ?> 
         </select> 
        </div> 

在我的模型我想借此選定的值,並將其加入到相隔一個字符串管'|'然後將該字符串連同表單數據的其餘部分一起插入到我的數據庫中。我不確定如何去做這件事。我如何通過'非兼容性'循環',以便我可以做到這些值。表單數據作爲$數據進入我的模型。

編輯:

我控制器會後並將其保存到$的數據,然後調用模型插入$數據到我的數據庫。

$data = $this->input->post(); 
$this->invoice_items_model->add($data); 
+0

'implode('|',$ _POST ['non-compatibility'])' –

+0

@u_mulder因爲我將發送從表單中進入模型的$ data,我將如何循環遍歷$ data ['non-compatibility []']字段爲了解除它們? –

+0

@u_mulder在將數據發送給我的模型之前,使用您在我的控制器中說過的話,然後取消設置非兼容性即可使其工作。如果您發佈答案,我可以接受。 –

回答

0

這是通過使用什麼u_mudler說如果任何人好奇解決。在控制器我做了以下:

$data['non_compatible'] = implode('|', $_POST['non-compatibility']); 
unset($data['non-compatibility']); 

這需要由形式被傳遞該個體「非兼容性」字段,並將它們加入到由管分離的單個字段。然後將$ data中的原始「非兼容性」字段取消設置,然後將$ data發送到模型。被插入到數據庫中。

0

多選的數據只會進來破滅格式,如果你通過每一個選擇的數據要循環,爆發,並把它保存在一個變量。然後使用foreach循環遍歷每個數據。

例如,請考慮我收到一個變量$的數據全部多個選擇的數據,那麼我會

$partThis = explode(",",$data); 
foreach($partThis as $value) 
{ 
    if($value==true) 
    { 
     //execute your code 
    } 
} 

您還可以在模型中爆炸$數據來了解數據是如何接收。

+0

我檢查了我的表單提交,並注意到多選擇似乎沒有發送逗號分隔值。相反,它會發送多個名爲'non-compatibility []'的字段,每個字段都有一個選定的值。你是說當控制器把這個帖子發送到它收到的模型時,它是以逗號分隔的字段?另外,我並不確定如何真實地查看模型中的數據。我對這種框架相當陌生。 –

+0

這甚至更好。直接在$ non-compatibility上使用foreach循環 –