CodeIgniter, Ajax ... Как использовать insert_id ()

Простите за английский, надеюсь, вы понимаете мой вопрос ...

В моей программе, когда вы отправляете новую запись в базу данных (MySQL), используя модальную + форму, она рисуется в таблице данных без обновления или перезарядки фактической страницы, она добавляется динамически.

Что мне нужно сделать, так это в каждой новой записи нарисовать / добавить данные И 2 кнопки (1 для удаления этой записи и 1 для ее обновления) с идентификатором новых данных.

Я читал, что могу использовать insert_id (), чтобы получить последний вставленный идентификатор, но я не знаю, как его использовать и как работать с результатом в моем вызове Ajax.

Намекните, пожалуйста? Я новичок в программировании.

Спасибо за ваше время.

РЕДАКТИРОВАТЬ

Мне нужны данные, которые я ввел в модальном / форме (для этого я использовал .serialize ()) И идентификатор, сгенерированный в БД ... Я не знаю, как использовать информацию об идентификаторе, возвращенную моделью / контроллером.

У меня в контроллере есть:

    public function nuevo_elemento_diccionario()
{
    $this->load->helper('form');
    $this->load->library('form_validation');

    // Validation rules that I deleted for this post
    if ($this->form_validation->run() === FALSE)
    {              
        $this->load->view("header");
        $this->load->view("section-aside");
        $this->load->view("vista_nuevo_elemento_diccionario", $datos);
        $this->load->view("footer");
    }
    else
    {
        $last_id = $this->mod_diccionarios->nuevo_elemento_diccionario();
        echo json_encode(array('last_id' => $last_id));
        redirect('/diccionarios/lista_diccionarios');
    }
}

Модель:

public function nuevo_elemento_diccionario()
 {
     $datos = array(
        'ELDI_Key' => $this->input->post('eldi_key'),
        'ELDI_Display' => $this->input->post('eldi_display'),
        'ELDI_SuDiccionario' => $this->input->post('eldi_sudiccionario'),
    );
    $this->db->insert('elementos_diccionario', $datos);
   /* $ultima_id = $this->db->insert_id();*/
    $last_id = $this->db->insert_id();
    return  $last_id;
  }

Javascript / Ajax (где вы видите var key = $ ('input [name = "eldi_key"]'). Val (); и используя его, мне нужно использовать идентификатор, чтобы использовать новый идентификатор для удаления и обновления, нажав сгенерированные кнопки):

function nuevo_elemento() 
{
    var id =$('input[name = "eldi_id"]').val();
    var display = $('input[name = "eldi_display"]').val();
    var key = $('input[name = "eldi_key"]').val();
    key = key.split(" ").join("_").toLowerCase();

    swal({
        title: 'Añadir elemento',
        text: "¿Quieres añadir este elemento?",
        type: 'warning',
        showCancelButton: true,
        confirmButtonColor: '#3085d6',
        cancelButtonColor: '#d33',
        confirmButtonText: 'Sí',
        cancelButtonText: 'No'
        }).then((result) => {
        if (result.value) {
            $.ajax({
                type: "POST",
                url: $("#base_url").attr("valor") + 
 "diccionarios/nuevo_elemento_diccionario",
                data: $("#formNuevoElementoDiccionario").serialize(),
                success: function(data) {
                    console.info(data);
                    $('#Modal_Add').modal('hide');

                    $("#formNuevoElementoDiccionario").trigger("reset");

                    var html = 
                    '<tr>'+
                        '<td>' + key + '</td>' +
                        '<td>'+ display +'</td>'+
                        '<td>'+
                            '<span class = "btn btn-default editar_elemento" 
 id=' + key + ' value = "' + key + '">' +
                                '<a href = "'+$("#base_url").attr("valor") + 
 "diccionarios/elemento_diccionario/"+key+'" title = "Editar">' +
                                    '<i class = "material-icons">edit</i>' +
                                '</a>' +
                            '</span>' +
                        '</td>' + 
                        '<td>' +
                            '<span class = "btn btn-default borrar_elemento" 
 id = "'+ key +'" value = "'+ key +'">'+
                                    '<i class = "material- 
 icons">delete_outline</i>'+   
                            '</span>'+
                        '</td>'+
                    '</tr>'

                    $('#tabla-diccionarios').append(html);
                    swal("Añadido", "Elemento añadido correctamente", 
"success");

                    $(".borrar_elemento").off();                        
                    evento_borrar_elemento();
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    console.info("Error: " + textStatus);
                    }
            });
        }
        })
}

Вы можете добавить данные последнего обновления для отображения записей со вставленным идентификатором.

Niklesh Raut 24.07.2018 09:28

существует буквально так много способов сделать это, что невозможно понять, какой из них подойдет вам. пожалуйста, поделитесь своим кодом и прочтите stackoverflow.com/help/mcve

Alex 24.07.2018 09:32

Я отредактировал свой вопрос, надеюсь, теперь он более понятен ... извините, ребята

Nira 24.07.2018 09:59
$ret = $this->db->insert_id(); return $ret; попробуйте это в модели
GGw 24.07.2018 10:07

Я снова отредактировал код, и с этим -> мне нужны данные, которые я ввел в модальном / форме (для этого я использовал .serialize ()) И идентификатор, сгенерированный в БД ...

Nira 24.07.2018 12:51
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
497
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать insert_id () только после вставки данных в БД. Если вам нужен последний идентификатор пользователя в контроллере или js, попробуйте следующее:

public function nuevo_elemento_diccionario()
{
    $datos = array(
        'ELDI_Key' => $this->input->post('eldi_key'),
        'ELDI_Display' => $this->input->post('eldi_display'),
        'ELDI_SuDiccionario' => $this->input->post('eldi_sudiccionario'),
    );
    $this->db->insert('elementos_diccionario', $datos);
    $ultima_id = $this->db->insert_id();
    return $ultima_id;
}

Затем вы можете использовать json_encode () для возврата данных в js в контроллере:

public function nuevo_elemento_diccionario()
{
    $this->load->helper('form');
    $this->load->library('form_validation');

    // Validation rules that I deleted for this post
    if ($this->form_validation->run() === FALSE)
    {              
        $this->load->view("header");
        $this->load->view("section-aside");
        $this->load->view("vista_nuevo_elemento_diccionario", $datos);
        $this->load->view("footer");
    }
    else
    {
        $last_id = $this->mod_diccionarios->nuevo_elemento_diccionario();
        echo json_encode(array('last_id' => $last_id));
        // i`m not sure that you need to use redirect
        redirect('/diccionarios/lista_diccionarios');
    }
}

В вашей функции успеха js edit:

 success: function(data) {
     var result = JSON.parse(data);
     var insert_id = result.insert_id;

Я не могу заставить его работать ... Как мне использовать идентификатор в ajax? используя переменную insert_id вместо $ key?

Nira 24.07.2018 11:54

Я снова отредактировал это → Мне нужны данные, которые я ввел в модальном / форме (для этого я использовал .serialize ()) И идентификатор, сгенерированный в БД ...

Nira 24.07.2018 12:09

Другие вопросы по теме