Тема: ajax + mysql
Показать сообщение отдельно
  #6 (permalink)  
Старый 20.04.2015, 14:24
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А если все-таки "не ради забавы" и использовать поля таблиц в формах, то нужно тогда определять префикс для них - при обращении к таблицам используется префикс, а в полях формы без него.

Тогда запрос к базе, это:
$prefix = 'a1b_'; //префикс полей
$sql = 'INSERT INTO shipments (' . $prefix . implode(','.$prefix, array_keys($_POST)) . ')
VALUES ("' . implode('","', array_map('mysql_real_escape_string', $_POST)) . '")'; //это без учета того, что данные еще проверять нужно на корректность


Но и по структуре самой - зачем же поля Дата и Время (надо полагать именно эти данные и хранят поля delivery_date и delivery_tame) хранить в разных полях, если есть тип DATETIME, из которого всегда можно получить любую составляющую даты и времени?

data: "&ADDRESS_ID=" + ADDRESS_ID - это не верно, ибо данные запроса начинаются с ?, а вот между собой ключи разделяются &. Но проще поступать так:

а) таблица, содержащая поля, вложена в форму;
б) отправка формы не по щелчку ячейки <td class="add1">, а по кнопке <button >сохранить</button>
в) обрабатывать событие отправки формы

$('селектор_формы').submit( function () {
    $.ajax({
        type: "POST",
        url: "/insert_data.php",
        dataType: "text", //вообще то сервер возвращает html
        data: $(this).serialize(), // получаем данные для отправки в БД из полей
        success: function(data){
            //data - содержание ответа сервера
        }
    });
    return false
});

убрав из кода var ADDRESS_ID = $('input[name=ADDRESS_ID').val(); и т.д.

PS. Де-факто в верхнем регистре пишут константы. Писать в верхнем регистре имена полей нет надобности, да и ошибиться проще, и запрос плохо читаем будет. Уж лучше операторы языка SQL в верхнем регистре, а именование полей и переменных в нижнем. В таком запросе легко понять что есть что.
То же самое и на клиенте придется учитывать регистр.

Последний раз редактировалось laimas, 20.04.2015 в 15:46.
Ответить с цитированием