Простите за английский, надеюсь, вы понимаете мой вопрос ...
В моей программе, когда вы отправляете новую запись в базу данных (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);
}
});
}
})
}
существует буквально так много способов сделать это, что невозможно понять, какой из них подойдет вам. пожалуйста, поделитесь своим кодом и прочтите stackoverflow.com/help/mcve
Я отредактировал свой вопрос, надеюсь, теперь он более понятен ... извините, ребята
$ret = $this->db->insert_id(); return $ret; попробуйте это в модели
Я снова отредактировал код, и с этим -> мне нужны данные, которые я ввел в модальном / форме (для этого я использовал .serialize ()) И идентификатор, сгенерированный в БД ...






Вы можете использовать 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?
Я снова отредактировал это → Мне нужны данные, которые я ввел в модальном / форме (для этого я использовал .serialize ()) И идентификатор, сгенерированный в БД ...
Вы можете добавить данные последнего обновления для отображения записей со вставленным идентификатором.