【问题标题】:Cannot get last inserted id to autofill form field无法获取最后插入的 ID 以自动填充表单字段
【发布时间】:2017-10-15 04:32:12
【问题描述】:

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

帖子已编辑。我正在按正确的顺序工作。

数据库(涉及的表:citas、entregas)

Database

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

【问题讨论】:

    标签: php mysql codeigniter grocery-crud


    【解决方案1】:

    为了在 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;
    

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

    【讨论】:

    • 谢谢,但我使用的是示例 2 (MAX(id)),它不允许我保存并返回列表,并且该字段为空。我究竟做错了什么? (上图为空白)
    • 您想在 Grocery crud 中保存一些东西并再次返回以保存其他东西?老实说,我不太清楚您要做什么。
    • 就是这样,我必须表格所以,在第一个表格中我正在创建一个日期,这个日期是一个回调列,它转到那个日期的内容,但是当我在第二个表格中添加一些东西时,它再次向我询问日期(Cita = 日期)。我想调用我创建的日期的 ID 并将其放入该字段。有可能吗?
    • 你能用你的代码编辑你的帖子吗?我们必须看看你到目前为止做了什么才能帮助你。
    • 当然,问题的编辑顺序正确
    【解决方案2】:

    第一个$this->db->insert($table,$data);

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

    回显 $insert_id;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-01
      • 1970-01-01
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多