1

我有这样的模型

  function getlastval($prefix,$namatable, $namafield)
{
    $this->db->order_by($namafield,'DESC');
    $key = $this->db->get($namatable);

    if($key->num_rows()>0)
    {

        $lastval= $key->row()->Kode_Material_Jasa;
        $lastval = explode($prefix,$lastval);
        $lv = $lastval[1]; //line 18 refer to this line
        //return ltrim($lv, '0');
        }
    else
    {
        return 0;
    }
}

function gencode($prefix, $digit, $lastval)
{
    return $prefix . str_pad($lastval+1, $digit, '0', STR_PAD_LEFT);
}

它适用于早期的控制器

function addkategorimaterial()
{
    $this->load->model('m_admin');
    $lastval = $this->m_admin->getlastval('KKMJ','ms_kategori_material','Kode_Kategori_Material_Jasa');
    $data['nextval'] = $this->m_admin->gencode('KKMJ',3,$lastval); 
    $data['title'] = 'QB Tambah Kategori Material';
    $this->load->view('head',$data);
    $this->load->view('content/add_kategori_material');
}

它返回KKMJ001,但在另一个控制器上不起作用

     $this->load->model('m_admin');
$lastval = $this->m_admin->getlastval('KMJ','ms_material_jasa','Kode_Material_Jasa');
    $data['nextval'] = $this->m_admin->gencode('KMJ',3,$lastval); 
    $data['kkmj']='';
    $data['title'] = 'QB Tambah Material / Jasa';

    print_r($data['nextval']);
    print_r($lastval);

所以函数会返回KMJ001并且错误是这样的

在此处输入图像描述

我该如何解决这个问题?

4

1 回答 1

0

我不认为那explode()是你所追求的功能。该explode()函数通过分隔符将字符串拆分为数组。

它不采用“前缀”作为您选择的第一个参数(语义上)。它将分隔符作为第一个参数。

由于您KMMJ作为分隔符传递,因此您将获得 1 的数组索引的唯一方法是如果从返回的字符串$key->row()->Kode_Material_Jasa;类似于: fooKMMJbar,这将产生: array('foo', 'bar')...这是极不可能的。

无论如何,你已经调用了getlastval('KMJ'...)and getlastval('KMMJ'...),你确定它们不应该是一样的吗?

于 2012-10-15T02:45:47.917 回答