Как разместить значение «множественного выбора» в таблицах данных в codeigniter

#php #json #ajax #codeigniter #datatable

#php #json #ajax #codeigniter #datatable

Вопрос:

у меня в таблице есть значение «множественного выбора», когда я пытаюсь опубликовать его в моей таблице данных, он говорит «Не найдено совпадающих записей». я использую ‘json_encode’ для размещения массива в базе данных.

моя таблица выглядит следующим образом.

мой tb_product:

  ------------ -------------- --------------- ------------ 
| id_product | name_product | id_categories |  price     |
 -------------------------------------------------------- 
| 1          | cola         |   ["1","3"]   |  1         |
| 2          | burger       |   ["2","3"]   |  4         |
 -------------------------------------------------------- 
  

мои tb_categories:

  ------------ -------------- 
| id_cat     | name_cat     |
 --------------------------- 
| 1          | drink        |
| 2          | food         |
| 3          | fat          |
 --------------------------- 
  

когда я пытаюсь показать его в datatable после объединения таблицы, он говорит «Не найдено совпадающих записей».

Модель:

 function get_all_product() {
$this->datatables->select('id_product, name_product, name_cat, price');
$this->datatables->from('tb_product');
$this->datatables->join('tb_stock', 'id_categories=id_cat');

$data = $this->datatables->generate();
  

контроллер:

 function get_product_json() { 
    header('Content-Type: application/json');
    echo $this->m_table->get_all_product();
}
  

Вид:

 <tr>
    <th>Id</th>
    <th>Product Name</th>
    <th>Categories</th>
    <th>Price</th>
</tr>
  

js:

 var table = $("#fproduk").dataTable({
'aoColumnDefs': [{
    'bSortable': false,
    'aTargets': -1
 }],
initComplete: function() {
    var api = this.api();
    $('#fproduk_filter input')
        .off('.DT')
        .on('input.DT', function() {
            api.search(this.value).draw();
    });
},
    oLanguage: {
    sProcessing: "loading..."
},
    processing: true,
    serverSide: true,
    ajax: {"url": "../datatable/get_produk_json", "type": "POST"},
          columns: [
              {"data": "id_product"},
              {"data": "name_product"},
              {"data": "name_cat"},
              {"data": "price", render: $.fn.dataTable.render.number(',', '.', '')}
        ],
        order: [[1, 'asc']],
rowCallback: function(row, data, iDisplayIndex) {
    var info = this.fnPagingInfo();
    var page = info.iPage;
    var length = info.iLength;
    $('td:eq(0)', row).html();
} 

});
  

Другие таблицы данных, которые не используют «множественный выбор», работают нормально, но не с ним.

То, что я хочу от моего результата с данными, похоже на это.

  ------------ -------------- ------------------- ------------ 
| Id         | Product Name |  Categories       |  Price     |
 ------------------------------------------------------------ 
| 1          | cola         |   Drink, Fat      |  1         |
| 2          | burger       |   Food, Fat       |  4         |
 ------------------------------------------------------------ 
  

Спасибо за ваше внимание.

Комментарии:

1. В целях нормализации базы данных не храните значения, разделенные запятыми, в базе данных.

2. итак, как мне сохранить несколько выбранных данных?

3. сохраните их в третьей таблице с именем product_category, в которой сохраняются только product_id,category_id, вы можете легко сохранить несколько категорий для одного и того же продукта.