2015-04-06 4 views
0

Я использую несколько вариантов из раскрывающегося списка, и я хочу сохранить его в базе данных.implode explode data in codeigniter

Я слышал о взрыве взрывов, но я понятия не имею, как их использовать. Пожалуйста, дайте мне представление о том, как взорвать и взорвать код.

Мой HTML форма:

<div class="form-group"> 
    <label> 
     Please Select Proof Of ID Deposit 
    </label> 
    <select multiple="" name="oids" class="js-example-basic-multiple js-states form-control"> 
     <optgroup> 
      <option value="Passport">Passport</option> 
      <option value="National ID Card">National ID Card</option> 
      <option value="Driving Licence">Driving Licence</option> 
      <option value="Univesity ID">Univesity ID</option> 
     </optgroup> 
    </select> 
</div> 

Мой контроллер:

public function customer_insert(){ 
    $data = array(
     'id'=>$this->input->post('up_id'), 
     'Other_id'=>$this->input->post('oids') //here I want to implode my values 
    ) 
    $this->db->insert('customer', $data); 
} 

Просмотр файла:

<table> 
    <thead> 
     <tr><td>ID</td></tr> 
     <tr><td>Other ID</td></tr> 
    </thead> 
<?php foreach ($query as $customer){?> 
    <tr><td><?php echo $customer->id?></td></tr> 
    <tr><td><?php echo $customer->Other_id?></td></tr> // I want to show my imploded value here. 
<?php}?> 
</table> 
+0

Вы должны хранить идентификатор - OID комбинации в отдельной таблице. Таким образом, вы можете искать и фильтровать в будущем. – jeroen

+0

ОК я могу сохранить это, но моя главная проблема заключается в том, что я хочу сохранить несколько значений в одном столбце в моей базе данных и показать их в представлении ... как я могу достичь этого? –

ответ

0

Вы можете использовать implode функцию, чтобы присоединиться к элементам массива в строку и explode функции для разбиения строки на строку. В этом случае вы можете использовать их так.

public function customer_insert() { 
    // Convert array to comma separated value 
    $oidString = implode(",", $this->input->post('oids')); 
    $data = array(
     'id'=> $this->input->post('up_id'), 
     'Other_id'=> $oidString //here I want to implode my values 
    ) 
    $this->db->insert('customer', $data); 
} 

Если вы хотите получить обратно массив из значения, разделенные запятыми, вы можете использовать explode.

// Convert comma separated value to array 
$otherId = explode(",", $customer->Other_id); 

Надеюсь, это будет полезно для вас.

3

Во-первых, в вашем HTML FORM вам необходимо изменить значение name атр с массивом, если он не будет производить массив выбранных значений

<select multiple="" name="oids" class="js-example-basic-multiple js-states form-control"> 

должен быть как

<select multiple="" name="oids[]" class="js-example-basic-multiple js-states form-control"> 

И в пределах вашего функция контроллера

public function customer_insert() { 

    $oidVal = implode(",", $this->input->post('oids'));// Converted array into comma separated value using implode 

    $data = array(
     'id'=> $this->input->post('up_id'), 
     'Other_id'=> $oidVal 
    ) 
    $this->db->insert('customer', $data); 
} 

и в вашем Посмотреть файл

<table> 
    <thead> 
     <tr><td>ID</td></tr> 
     <tr><td>Other ID</td></tr> 
    </thead> 
<?php foreach ($query as $key => $value) { ?> 
    <tr><td><?php echo $value['id']; ?></td></tr> 
    <tr><td><?php echo explode(',',$value['Other_id']);?></td></tr> // exploded value 
<?php } ?> 
</table> 
+0

Это сработает для вас .. –

+0

thanx его работает как волшебство :) –

+0

Тогда принимайте его как ответ, поэтому это нужно рассматривать как закрытую проблему. –