无法将最后插入的ID添加到自动填充表单字段

时间:2017-05-16 07:57:54

标签: php mysql codeigniter grocery-crud

我无法使用codeigniter和杂货店crud获取最后插入的ID,然后将它们传递给自动填充字段。我怎样才能做到这一点?我试图用函数返回id并通过隐藏字段来解决。

邮寄编辑。我正在以正确的顺序工作。

数据库(参与表格:citas,entregas)

Database

Scheme(Cita =插入日期):

Image from the process

模型功能

 public function get_id(){                 

  //$this->db->query('SELECT MAX(cita) FROM citas;');
    $this->db->insert_id();
    $query = $this->db->get();

    echo $query;

    return $query->result();        

}

控制器(完整控制器功能)

 public function entregas_lista($idCarga) {

        $crud = new grocery_CRUD();



        if ($this->Entregas_Model->get_rows($idCarga)) {
            $crud->unset_add();
        }


        $datos = array(
            'title' => "Solicitudes", 
            'username' => "Administrador"
        );

        $this->load->view('commons/header', $datos);



        $crud->set_language("spanish");
        $crud->set_theme('flexigrid');

        $crud->set_table('entregas');


        $crud->display_as('idCitas', 'Cita');
        $crud->display_as('idAcciones', 'Acción');
        $crud->display_as('idEstadoSolicitud', 'Estado Solicitud')
                ->display_as('horaCita', 'Hora Cita')
                ->display_as('numeroEntrega', 'Nº Entrega')
                ->display_as('Origen', 'Orígen')
                ->display_as('cargaPrevista', 'Carga Prevista')
                ->display_as('entregaPrevista', 'Entrega Prevista');



        $crud->where('entregas.idCitas =', $idCarga);

        $crud->display_as('idCarga', 'Nº Entrega');


        $crud->set_relation('idEstadoSolicitud', 'estadosolicitudes', 'nombreEstado');




        $query = $this->Entregas_Model->get_id();

        $crud->field_type('idCitas', 'hidden', $query);

        $output = $crud->render();

        $this->_example_output($output);


        $this->load->view('commons/footer');
    }

2 个答案:

答案 0 :(得分:4)

要在Codeigniter中使用insert_id(),您必须在数据库中插入新行。否则,您必须从表中选择MAX(id)

insert_id()的示例:

$this->db->insert('test_table', $test_data);
return $this->db->insert_id();

MAX(id)的示例:

$qry = $this->db->select('MAX(id)')
                ->from('test_table')
                ->get();
        if ($qry->num_rows() > 0)
            return $qry->row_array();
        return FALSE;

然后你在控制器中抓住它。

答案 1 :(得分:1)

首先$this->db->insert($table,$data);

$insert_id= $this->db->insert_id();

之后

echo $ insert_id;