Как сделать динамическую вставку SQL через xhr?

0

Я загружаю свою БД в таблицы, и моя идея заключалась в том, чтобы включить динамическое редактирование "на лету", например, в phpMyAdmin. Это было не так сложно. По крайней мере, с передней стороны. Создание функции удаления для записей было также легким, но я не могу придумать, как сделать динамическую вставку. В частности, как сформулировать запрос, который будет обращаться к значениям из недавно отредактированной строки таблицы, которая предназначена для новой записи.

Что касается удаления записей, я использую:

var xhr;
xhr=new XMLHttpRequest();

xhr.onreadystatechange=function()
{
  if (xhr.readyState==4 && xhr.status==200)
  {
    document.getElementById("output").innerHTML=xhr.responseText;
  }
}

$.fn.delClick = function() {

  var table = $(this).parent().parent().parent();
  var row = $(this).parent()

  if(confirm("Are you sure?"))
  {

    var tableName = table.find('.add').data('tablename');
    var idName = table.find('.add').data('idname');
    var rowId = row.children('td.id').html();

    xhr.open("POST","scripts/delete?tableName="+tableName+"&idName="+idName+"&rowId="+rowId,true);
    xhr.send(); 

    row.remove();


  }
}

и в scripts/delete.php:

$this->ci =& get_instance(); 

$remove = $this->ci->db->query("DELETE FROM ".$_GET['tableName']." WHERE ".$_GET['idName']." = '".$_GET['rowId']."'");

Я надеюсь сделать что-то похожее на вставку записей, но я застрял.
Основная проблема с вставкой записей заключается в том, что я не могу передавать переменные через POST, потому что количество столбцов меняется для каждой таблицы, так что количество переменных, которые мне нужно будет передавать на мои scripts/insert.php, также будет меняться. Или, может быть, есть способ?

  • 0
    Вы должны делать проверки безопасности, ваш сценарий в его нынешнем виде является катастрофой. В любом случае, что касается динамических полей, вы можете использовать .serialize () в javascript, который будет принимать поля и подготавливать их для отправки через ajax-запрос.
Теги:
codeigniter
xmlhttprequest

1 ответ

1
Лучший ответ

использовать объект

var inputs = {};
$('.formInput').each(function(){

    var id = $(this).attr('id');
    var val = $(this).val();
    inputs[id] = val ;
});

$.post( insert_url , {inputs:inputs});

также вы можете проанализировать несколько более простых систем crud, например

https://github.com/maxxxir/mz-codeigniter-crud

Ещё вопросы

Сообщество Overcoder
Наверх
Меню