从数据库PhpMyAdmin和CodeIgniter生成唯一ID

时间:2016-04-13 07:10:09

标签: php mysql codeigniter

我在生成此唯一ID时遇到问题。 这是表格如下: Table

以下是创建ID的规则:

  1. ID将如下所示:AAyyyymm00x
    • AA是dest_code。
    • yyyy是今年。
    • mm是当月。
    • 00x是注册号。并且每天将重置为1.并且每次注册增加1个。
  2. 所以最终的样子将是:AA201604001
  3. 我的控制器代码:

    public function tambah()
        {
            $this->data['namaNegara'] =  $this->registrasi_model->get_nama_negara();
            $this->data['main_view'] = 'program/administrasi/registrasi_form';
            $this->data['form_action'] = site_url('program/administrasi/registrasi/tambah');
    
            // Data untuk form.
            if (! $_POST) {
                $registrasi = (object) $this->registrasi_model->default_value;
            } else {
                $registrasi = $this->input->post(null, true);
            }   
    
            // Validasi.
            if (! $this->registrasi_model->validate('form_rules')) {
                $this->data['values'] = (object) $registrasi;
                $this->load->view($this->layout, $this->data);
                return;
            }
            $destName = $registrasi['Nama_Negara'];
            echo $registrasi['No_Registrasi'] = $this->registrasi_model->generate_no_reg($destName);
        }
    

    我的模型代码:

    public function generate_no_reg($destName)
        {
            $query = $this->db->query('SELECT Dest_Code from Destination WHERE Dest_Name= "$destName"');
            $id1 = $query->row()->Dest_Code;
    
            $query2 = 'SELECT Reg_ID FROM Registration ORDER BY Reg_ID DESC LIMIT 1';
            $lastid = $this->db->query($query2);
            $id2 = $lastid->row()->Reg_ID+1;
    
            $id3 = format_no_registrasi($id2);
            $kode = $id1.$id3;
            return $kode;
    
        }
    

    我的format_no_registrasi功能代码:

    function format_no_registrasi($no)
    { 
        $leadingzeros = '000';
        $no_reg = date('Y') . date('m') . substr($leadingzeros, 0, (-strlen($no))) . $no;
        return $no_reg;
    }
    

    这是我的错误:error
    显示在底部的文本是我想要的ID,但它没有Dest_Code 很感谢任何形式的帮助。抱歉这件事。

3 个答案:

答案 0 :(得分:0)

在codeigniter中写入函数。在此函数中从表中获取最后的记录并增加一个值然后添加。在增加之前需要拆分并放入正确的年份和月份,然后将dest_code,yyyy,mm和增加值的值连接起来。然后插入你的表。

答案 1 :(得分:0)

在模型中使用以下代码

首先使用以下方法计算您的记录:从tbl中选择count(*)。分配给某个变量$ maxcount

建立你独特的身份...... $ unique_id = $ dest_code.date(" Ym")。str_pad($ maxcount + 1,3,' 0',STR_PAD_LEFT);

将id插入数据库时​​使用$ unique_id。

答案 2 :(得分:0)

public function generate_no_reg($destName)
{
    $this->db->select('Dest_Code');
    $this->db->from('Destination');
    $this->db->where('Dest_Name',$destName);
    $query=$this->db->get();
    return $query->row();
}

我认为这会工作。现在尝试在控制器中打印结果。