【问题标题】:Prevent Duplicate Entry php with Codeigniter使用 Codeigniter 防止重复输入 php
【发布时间】:2018-01-21 20:54:36
【问题描述】:

我正在尝试使用 codeigniter 防止重复条目,但它不再起作用了。

尽管名称相同,数据仍会插入到数据库中。

这是控制器代码

   public function add(){
        $title['title']='Add New';
                $data['data']='Insert New Group';
                $data['exist']= 'This Group already exists';
                $this->load->view('add_pbk_g', $data);
    }

    public function save(){
        $this->load->helper(array('form', 'url'));
        $this->load->library('form_validation');
        $this->form_validation->set_rules('namegroup', 'Name', 'trim|required|is_unique[pbk_groups.Name]');
        if($this->form_validation->run()==false){
            $this->add_pbk_g($Name);
        } else{
            $this->db->insert('pbk_groups',array('Name'=> $this->input->post('namegroup')));

            $this->load->model('mpbk_grup');
            if($this->mpbk_grup->check_grup_exist('$Name')){
                $title['title']='Add New';
                $data['data']='Insert New Group';
                $data['exist']= 'This Group already exists';
                $this->load->view('layout/header', $title);
                $this->load->view('add_pbk_g');
                $this->load->view('layout/footer');
            } else{
                $this->mpbk_grup->add;
                redirect('cpbk_grup/index');   
            }
        }
    }

这是模型..

    function add($data){
        return $this->db->create('pbk_groups', $data);
    }

    function check_grup_exist($namegroup){
        $this->db->where('Name', $namegroup);
        $this->db->from('pbk_groups');
        $query = $this->db->get();
        if($query->num_rows() >0){
            return $query->result();
        } else {
            return $query->result();
            //return False;
        }
    }

这就是风景

<form method="post" class="form-horizontal" action="<?php echo site_url('cpbk_grup/save');?>">
              <div class="box-body">
                <?php echo validation_errors(); ?>
                <div class="form-group">
                  <label class="col-sm-2 control-label">Nama Group</label>

                  <div class="col-sm-10">
                    <input type="text" name="namegroup" required="" class="form-control" placeholder="Nama Group">
                  </div>
                </div>
              </div>
              <!-- /.box-body -->
              <div class="box-footer">
                <button type="submit" name="submit" value="submit" class="btn btn-info pull-right">Save</button>
                <a href="<?php echo base_URL(); ?>index.php/cpbk_grup" class="btn btn-info pull-right"> Kembali</a>
              </div>
              <!-- /.box-footer -->
            </form>

【问题讨论】:

    标签: php codeigniter validation duplicates


    【解决方案1】:
    public function save(){
            $this->load->helper(array('form', 'url'));
            $this->load->library('form_validation');
            $this->form_validation->set_rules('namegroup', 'Name', 'trim|required|is_unique[pbk_groups.Name]');
            if($this->form_validation->run()==false){
                $this->add_pbk_g($Name);
            } else{
                $data = array ('Name' => $this->input->post('namegroup'));
                $this->mpbk_grup->check_grup_exist($data);
            }
        }
    

    【讨论】:

      【解决方案2】:

      这一行的 $Name 是从哪里来的?

      if($this->mpbk_grup->check_grup_exist('$Name')){
      

      而且它不应该有引号,应该是......

      if($this->mpbk_grup->check_grup_exist($Name)){
      

      【讨论】:

        【解决方案3】:

        尝试在保存功能中执行此操作

        Controller Code:
        $data = array('Name' => $this->input->post('namegroup'));
        $this->Model_Name->check_grup_exist($data);
        

        我的模特

        Model_Name
        
        
        $this->main_table = 'pbk_groups';
         public function check_grup_exist($data)
        {
         $query = $this->db->get_where($this->main_table, array('Name' => $data['Name']));
        if ($query->num_rows() == 0) 
        {
          $this->db->insert($this->main_table, $data);
          return $this->db->insert_id();
        }
        else 
        {
          return false;
        }
        

        在插入数据之前检查重复数据。如果有任何查询,请告诉我。

        【讨论】:

        • 我把控制器代码放在哪里了?内部函数保存?
        • 然后,我得到了 2 个不同的错误。首先,当我输入相同的条目时,$this->add_pbk_g($name) 行出错。其次,当我输入不同的条目时,模型代码上出现语法“get”的错误。
        • 将模型代码放在模型文件中,将控制器代码放在控制器文件中,并在控制器函数中调用模型
        • 是在保存功能内
        • 错误?你能证明我能帮你什么类型的错误
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-27
        • 1970-01-01
        • 1970-01-01
        • 2011-10-25
        • 2011-06-12
        • 1970-01-01
        • 2015-11-08
        相关资源
        最近更新 更多