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


Generate unique ID from database PhpMyAdmin and CodeIgniter

我在生成这个唯一ID时遇到了一些问题。这张桌子看起来像:桌子

以下是创建ID的规则:

  1. ID如下所示:AAyyyymm00x
    • AA是dest_code
    • yyyy是当前年份
    • mm是当前月份
    • 00x是注册号。并且将每天重新设定为1。每次注册增加1
  2. 所以最终的外观将是:AA201604001

我的控制器代码:

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

这是我的错误:错误
底部显示的文本是我想要的ID,但它没有Dest_Code
非常感谢您的帮助。很抱歉给你带来麻烦。

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

我想这会奏效的。。现在尝试在控制器中打印结果。

在codeigniter中写入函数。在这个函数中,从表中获取最后一条记录,并增加一个值,然后相加。在增加之前,需要拆分并放置正确的年份和月份,然后连接dest_code、yyyy、mm和增加的值。然后插入表格。

在您的模型中使用以下代码

首先使用:select count(*)from tbl获取记录计数。分配到某个变量$maxcount

建立您的唯一id。。。$unique_id=$dest_code.date("Ym").str_pad($maxcount+1,3,'0',str_pad_LEFT);

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