0 / 0 / 0
Регистрация: 14.08.2019
Сообщений: 27

Зацикленное сохранение нескольких в базу SQL через AJAX

15.01.2020, 17:56. Показов 826. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую.

Тема больная.
Мучаюсь день.

В теории: Имею таблицу PHP+MySQL.
В таблице 39 строк. Каждая строка - уникальная, и в базе представлена отдельно.
Необходимо по нажатию на одну кнопку сохранять сразу все строки в базу через AJAX.

Т.к строк много, а я сторонник упрощения работы, постарался использовать цикл.

Наброски моего не рабочего кода (Конкретнее, не идут запросы в базу, не передаются данные, я так понял):

Кнопка сохранения:
HTML5
1
<button id="save1" type="button" class="btn btn-success" onClick="save()">Сохранить</button>
Обновляемая таблица AJAX:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function show()
{
$.ajax({
url: "table.php?id=<?php echo $_COOKIE['project_id']; ?>",
cache: false,
success: function(data){
 document.getElementById("tbl-content").innerHTML=data;
}
});
}
 
$(document).ready(function(){
show();
});
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
var suc = 0;
function save(){
let i = 39;
while (i) {
  var id = document.getElementById(i).value;
    var status = document.getElementById('status_'+id).value;
  var name = document.getElementById('name_'+id).value;
  var required = document.getElementById('required_'+id).value;
  var type = document.getElementById('type_'+id).value;
  var regex = document.getElementById('regex_'+id).value;
  var error = document.getElementById('error_'+id).value;
  var op_edit = document.getElementById('op_edit_'+id).value;
  var webs = document.getElementById('webs_'+id).value;
    req = 'id=' + encodeURIComponent(id) + '&status=' + encodeURIComponent(status) + '&name=' + encodeURIComponent(name) + '&required=' + encodeURIComponent(required) + '&type=' + encodeURIComponent(type) + '&regex=' + encodeURIComponent(regex) + '&error=' + encodeURIComponent(error) +'&op_edit=' + encodeURIComponent(op_edit) + '&webs=' + encodeURIComponent(webs);
    var request = new XMLHttpRequest();
    request.open('POST', 'save.php', true);
    request.addEventListener('readystatechange', function () {
      if ((request.readyState == 4) && (request.status == 200)) {
        if (request.responseText == '1') {
        ++suc;
          } else {
              alert('Error! ID: '+id);
          }
      }
    });
    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
  request.send(req);
  i--;
}
  alert(suc);
}
Файл save.php, к которому идут запросы:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
include "functions.php";
    $link = new mysqli(HOST , USERNAME , PASS , DBNAME);
if($_COOKIE['type'] == 'enterpreneur')
{
}
 
if($_COOKIE['type'] == 'operator')
{
  header('Location: '.BASE_URL.'operator');
}
 
if(isset($_POST['id']) && isset($_POST['status']) && isset($_POST['name']) && isset($_POST['required']) && isset($_POST['type']) && isset($_POST['regex']) && isset($_POST['error']) && isset($_POST['op_edit']) && isset($_POST['webs'])){
 
    $id = $_POST['id'];
    $name = mysqli_real_escape_string($link, $_POST['name']);
    $regex = mysqli_real_escape_string($link, $_POST['regex']);
    $error = mysqli_real_escape_string($link, $_POST['error']);
    $status = $_POST['status'];
    $required = $_POST['required'];
    $type = mysqli_real_escape_string($link, $_POST['type']);
    $op_edit = $_POST['op_edit'];
    $webs = mysqli_real_escape_string($link, $_POST['webs']);
    mysqli_query($link, "UPDATE `user_project_settings_inputs` SET `status` = '".$status."', `name` = '".$name."', `required` = '".$required."', `type` = '".$type."', `regex` = '".$regex."', `error` = '".$error."', `op_edit` = '".$op_edit."', `webs` = '".$webs."' WHERE `id` = '".$id."'");
    echo '1';
} else {
    echo 'id';
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.01.2020, 17:56
Ответы с готовыми решениями:

Сохранение формы через ajax с записью файла в базу данных
Здравствуйте! У меня есть форма, расположенная в модальном окне. Форма предназначена для сохранения информации в базу данных. Одной из...

Сохранение изображения в базу sql-server
Как можно сделать так что бы прикрепив фото после нажатия кнопки можно было сохранить фото в базу sql-server динамическим путем?

Сохранение байт в базу данных sql
С базами не работал поэтому нз как сделать сохранение байт в колонку image имя базы SSCompany. Подскажите как сделать. public...

5
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
16.01.2020, 10:04
Раметку таблицы покажите. Достаточно одной строки.
Из того, что хочется сказать сходу: НИКОГДА не отправляйте ajax-запросы на сервер в цикле и НИКОГДА не обращайтесь к базе в цикле, если иное возможно.
Соберите все данные со всей таблицы и отправьте одним запросом.
1
0 / 0 / 0
Регистрация: 14.08.2019
Сообщений: 27
16.01.2020, 17:34  [ТС]
Balanaar,
PHP
1
2
3
4
5
6
 echo '
  <tr>
  <input type="hidden" id="'.$row['pos'].'" value="'.$row['id'].'">
          <td>'.$pos.'</td><td><div class="checkbox"><label><input id="status_'.$row['id'].'" type="checkbox" '.$status.'> '.$row['name'].'</label></div></td><td><input id="name_'.$row['id'].'" type="text" class="form-control" value="'.$row['name'].'" '.$st_dis.'></td><td><div class="checkbox"><label><input type="checkbox" id="required_'.$row['id'].'" '.$required.' '.$st_dis.'> </label></div></td><td><select id="type_'.$row['id'].'" class="form-control"  '.$disrules.' '.$st_dis.'><option value="line" '.$line.'>Строка</option><option value="text" '.$text.'>Текст</option><option value="list" '.$list.'>Список</option><option value="check" '.$check.'>Галка</option><option value="mask">Маска</option><option value="date">Дата</option></select></td><td><input id="regex_'.$row['id'].'" type="text" class="form-control" '.$disrules.' value="'.$row['regex'].'" '.$st_dis.'></td><td><input id="error_'.$row['id'].'" type="text" class="form-control" value="'.$row['error'].'" '.$st_dis.'></td><td><div class="checkbox"><label><input id="op_edit_'.$row['id'].'" type="checkbox" '.$op_edit.' '.$st_dis.'> </label></div></td><td><select id="webs_'.$row['id'].'" class="form-control"><option value="hide_all" '.$hide_all.'>Скрывать колонку от ВМ</option><option value="hide_data" '.$hide_data.'>Показывать колонку, но скрывать данные</option><option value="seeing" '.$seeing.'>Показывать колонку и данные</option></select></td>
        </tr>
       ';
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
16.01.2020, 20:53
elecktro1337, после рендеринга php-скриптом
0
0 / 0 / 0
Регистрация: 14.08.2019
Сообщений: 27
16.01.2020, 21:19  [ТС]
Balanaar, вот.
0
0 / 0 / 0
Регистрация: 14.08.2019
Сообщений: 27
16.01.2020, 21:26  [ТС]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.01.2020, 21:26
Помогаю со студенческими работами здесь

Добавление данных в базу SQL и DataGridView из нескольких окон
Создал некую программу для просмотра, редактирования, перехода по таблицам базы данных SQL Server. Вывод таблиц осуществляется на одной...

Не работает сохранение второй подключенной таблицы к форме в базу SQL
Нужно сохранить поле во вторую подключенную таблицы из базы к форме, стандартный способ типа Me.СкладBindingSource.EndEdit() почему-то не...

Передача нескольких значений через $.Ajax
Всем привет. Ситуация такая: есть кнопочка, по нажатии на которую на другую страницу handler.php передается значение переменной из формы с...

Добавление сразу нескольких полей в базу данных (sql server 2014)
Здравствуйте. Есть 3 таблицы в БД. 1 - Услуги, 2 - Клиенты, 3 - Заказы. БД подключена к проекту соответственно. Выбираю пользователя и...

Вставка записей из формы в базу данных через jQuery-AJAX
Добрый день! Я пишу сайт для стоматологического кабинета. Есть форма для записи пациента к врачу, и нужно вставить пациента и дату приёма,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru