Совместимость категории с каждой категорией с флажком в Codeigniter - PullRequest
0 голосов
/ 02 февраля 2020

У меня есть категория химикатов, необходимо проверить совместимость каждой категории химикатов с собой и другими. A l oop внутри al oop с флажками. 1. Невозможно установить значение по нажатию скрытого элемента через JavaScript; 2. Как я продолжаю и оптимизирую, когда данные для 24 категорий доходят до 14000+ нечетных записей. 3. Значение, разделенное запятыми или отдельная запись предлагается? 4. Как отредактировать запись и оставить флажок при получении данных из таблицы базы данных на той же странице

Вот код:

Контроллер

public function compactibility_chart_master(){
    $data['title'] = 'Compactibility Chart Master';
    $this->form_validation->set_rules('category[]', 'Category Name','required|trim|xss_clean');
    if($this->form_validation->run() === FALSE){
        $data['category'] = $this->admin_model->get_all_active_entities('tbl_category');
        $this->load->view('admin/compactibility_chart_master',$data);
    }else{
        $this->admin_model->set_compactibility_chart_master();
        $this->session->set_flashdata('success','Compacitibiliy Chart Master updated Successfully');
        redirect('compactibility_chart_master', 'refresh');
    }
}

Модель

public function set_compactibility_chart_master(){
    $post = $this->_array_remove_null($this->input->post());
    $insertdata = array();
    for($z=0;$z<count($post['cat_cat']);$z++){
        foreach($post['cat_cat'] as $values){
            $insertdata[] = array(
                'category'          => $post['category'][$z],
                'category_compact'  => $values,
            );
        }
    }
    $this->db->insert_batch('tbl_compactibility_master',$insertdata);
    return true;
}

Вид

<form name="compatibility_form" id="compatibility_form" method="post"  enctype="multipart/form-data" data-parsley-validate>
    <table class="table table-bordered" width="100%">
        <?php if(!empty($category)){ foreach($category as $cat_results){ ?>
        <tr class="data">
            <th>
                <button class="btn btn-primary btn-sm my-2" type="button"><?=$cat_results->category_name;?></button>
                <input type="hidden" name="category[]" class="categooryclass" value="<?=$cat_results->id;?>">
            </th>                           
            <td>
            <div class="row">
                <?php if(!empty($category)){ foreach($category as $key => $cat_res){ $get_single = $this->admin_model->get_single_record_compactibility($cat_results->id);  ?>
                <div class="col-md-6">
                    <div class="form-check-inline">
                        <label class="form-check-label">
                        <input type="checkbox" class="form-check-input my-2 checkedme" name="catcat[]" value="<?=$cat_res->id;?>" <?php if($cat_results->id == $cat_res->id){ ?> checked="checked" disabled="disabled"<?php } ?> data-forcheck="<?=$cat_results->id;?>"> 
                                        <?=$cat_res->category_name;?></label>
                        <input type="hidden" name="cat_cat[]" data-urus="<?=$cat_results->id;?>" value="">
                    </div>
                </div>
                <?php }} ?>
              </div>
           </td>
       </tr>
       <?php }} ?>
   </table>
   <div class="row">
       <div class="col-md-4">
           <div class="form-group">
              <button class="btn btn-primary btn-sm my-4" id="submit_button" type="submit">Save Data</button>
            </div>
        </div>
    </div>
</form>

Сценарий

$('.checkedme').on("click",function() {
   var getVal = $(this).val();
   var test = $(this).data('forcheck');
   $('#compatibility_form').find("input[data-forcheck='"+getVal+"'][value='"+test+"']").prop('checked',this.checked);
   $('#compatibility_form').find("input[name='cat_cat[]'][data-urus='"+getVal+"']").val(test);});

Изображение View Image

Ответы [ 2 ]

1 голос
/ 04 февраля 2020

Сохраните значения флажков в отдельной таблице с уникальным идентификатором, установите значение идентификатора в флажке в качестве значения и покажите имя поля в виде метки

Поскольку в будущем вам придется изменить имя флажка в некоторых случаях, чтобы вы может легко изменить этот конкретный идентификатор строки данных. Это невозможно при попытке сохранить с разделителем запятых.

0 голосов
/ 08 февраля 2020

Здесь я нашел способ сделать это. Надеюсь, это поможет кому-то. Спасибо

Контроллер

public function compactibility_chart_master(){
    $data['title'] = 'Compactibility Chart Master';
    $this->form_validation->set_rules('category[]', 'Category Name','required|trim|xss_clean');
    if($this->form_validation->run() === FALSE){
        $data['category'] = $this->admin_model->get_all_active_entities('tbl_category');
        $this->load->view('admin/compactibility_chart_master',$data);
    }else{
        $this->admin_model->set_compactibility_chart_master();
        $this->session->set_flashdata('success','Compacitibiliy Chart Master updated Successfully');
        redirect('compactibility_chart_master', 'refresh');
    }
}

Модель

public function set_compactibility_chart_master(){
    $post = $this->input->post();
    for($z=0;$z<count($post['category']);$z++){
        $sub_cat = "";
        foreach($this->input->post('catcat'. $z) as $values){
            $sub_cat .= $values.",";
        }
        $exp = explode(",",$sub_cat);
        $newexp = array_unique($exp);
        $newexp = implode($newexp, ',');
        $insertdata = array(
            'category'          => $post['category'][$z],
            'category_compact'  => $newexp,
        );
        $this->db->where('category',$post['category'][$z]);
        $exist = $this->db->get('tbl_compactibility_master');
        $exist = $exist->num_rows();
        if($exist == 0){
            $this->db->insert('tbl_compactibility_master',$insertdata);
        }else{
            $this->db->where('category',$post['category'][$z]);
            $this->db->update('tbl_compactibility_master',$insertdata);
        }
    }
    return true;
}

Вид

<form name="compatibility_form" id="compatibility_form" method="post"  enctype="multipart/form-data" data-parsley-validate>
    <table class="table table-bordered" width="100%">
        <?php $cc=0; foreach($category as $cat_results){ ?>
        <tr class="data">
            <th>
                <button class="btn btn-primary btn-sm my-2" type="button"><?=$cat_results->category_name;?></button>
                <input type="hidden" name="category[]" class="categooryclass" value="<?=$cat_results->id;?>">
            </th>                           
            <td>
            <div class="row">
                <?php foreach($category as $key => $cat_res){ $get_single = $this->admin_model->get_single_record_compactibility($cat_results->id);?>
                <div class="col-md-6">
                    <div class="form-check-inline">
                        <label class="form-check-label">
                        <input type="checkbox" class="form-check-input my-2 checkedme" name="catcat<?=$cc;?>[]" value="<?=$cat_res->id;?>" <?php if($cat_results->id == $cat_res->id){ ?> checked="checked" <?php } ?> <?php if(in_array($cat_res->id,$get_single)){ ?>checked="checked"<?php } ?> data-forcheck="<?=$cat_results->id;?>">
                         <label class="form-check-label"><?=$cat_res->category_name;?></label>
                    </div>
                </div>
                <?php } ?>
              </div>
           </td>
       </tr>
       <?php $cc++; } ?>
   </table>
   <div class="row">
       <div class="col-md-4">
           <div class="form-group">
              <button class="btn btn-primary btn-sm my-4" id="submit_button" type="submit">Save Data</button>
            </div>
        </div>
    </div>
</form>

функция get_single_record_compactibility ()

public function get_single_record_compactibility($cat){
    $this->db->where('category',$cat);
    $result = $this->db->get('tbl_compactibility_master');
    $result = $result->row();
    if(!empty($result)){
        return explode(",",$result->category_compact);
    }else{
        return array();
    }
}

Скрипт

$('.checkedme').on("click",function() {
    var getVal = $(this).val();
    var test = $(this).data('forcheck');
    $('#company_form').find("input[data-forcheck='"+getVal+"'][value='"+test+"']").prop('checked',this.checked);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...