【问题标题】:Compatibility of Category with each Category with Checkbox in Codeigniter类别与每个类别与 Codeigniter 中的复选框的兼容性
【发布时间】:2020-02-02 09:58:02
【问题描述】:

我有一个化学品类别,需要检查每个类别的化学品与自己和他人的兼容性。带有复选框的循环内的循环。 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);});

图片

【问题讨论】:

    标签: javascript php jquery codeigniter


    【解决方案1】:

    将复选框值存储在具有唯一ID的单独表中将复选框中的ID值设置为值并将字段名称显示为标签

    因为将来在某些情况下您必须更改复选框名称,以便您可以轻松更改特定的 id 行数据。当您尝试使用逗号分隔符保存时,这是不可能的。

    【讨论】:

      【解决方案2】:

      我在这里找到了一种方法。希望它可以帮助某人。谢谢

      控制器

      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);
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-01
        • 2019-09-06
        • 2012-04-20
        • 1970-01-01
        • 1970-01-01
        • 2017-04-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多