Вы сказали:
Добавить при выборе addAssortment отправить POST запрос по адресу '../nosy/save_form.php'
Обработать данные запроса обратиться к sqlite 3 без pdo процедурно понятно
CREATE TABLE [assortment](
[id] INTEGER PRIMARY KEY AUTOINCREMENT,
[name_assort] TEXT,
[price_cny] INT DEFAULT 0,
[cost_price] INT DEFAULT 0,
[price_no_vat] INT DEFAULT 0,
[qty] INT DEFAULT 0,
[type_select] INT DEFAULT 0);
Запрос SELECT в таблицу assortment где колонка type_select == запросу POST
Вывести собранные данные json_encode ...
Полученые данные добавить еще одно поле class="card mb-3 form-entry" data-index= в formContainer но в Наименование оборудовани search-query
Добавить select (добавить с возможностью select2 js) c выбором со списком name_assort при выборе которого в pfixsum подставлять price_no_vat
Учесть при выборе еще qty==1 тогда переменновать слово Количество в quantity_query Метры и На оборот если qty==0 в Количество
<div id="htmlret" style="margin-bottom:50px"></div>
<div id="htmltable" style="margin-bottom:50px">
<div class="container mt-5">
<h5>Формирование коммерческое предложение</h5>
<div class="d-flex align-items-center gap-2 mb-3">
<button id="createFormBtn" type="button" class="btn btn-primary mb-3">Добавить в КП</button>
<select class="form-control rounded form-select addAssortment" name="addAssortment" id="addAssortment" data-placeholder="Выбрать ассортимент" style="margin-top: -15px; width: auto;">
<option selected>Выбрать ассортимент</option>
<option value="2">Магнитные позиционеры</option>
<option value="3">Разъёмы</option>
<option value="4">Кабели</option>
<option value="5">Штанги</option>
<option value="6">Крепежи профилей</option>
<option value="7">Преобразователи</option>
<option value="8">Государственная поверка</option>
</select>
</div>
<!-- <button id="docPagemencla" class="btn btn-success mb-3 docPagemencla">Создание файла КП</button> -->
<a id="docPagemencla" href="?page=kpcreate" class="btn btn-success mb-3 docPagemencla">Создание файла КП</a>
<div id="formContainer"></div>
</div>
</div>
$(document).ready(function () {
const formKey = 'kpForms';
function saveToLocalStorage(data) {
localStorage.setItem(formKey, JSON.stringify(data));
}
function getFromLocalStorage() {
return JSON.parse(localStorage.getItem(formKey)) || [];
}
function generateForm(index, formData = {}) {
$('#htmltable').show();
return
<div class="card mb-3 form-entry" data-index="${index}">
<div class="card-body" style="padding: 8px;">
<div class="row g-2 align-items-center">
<div class="col-md-3">
<lable>Позиция по проекту</lable>
<input type="text" class="form-control position_project" placeholder="Позиция по проекту" value="${formData.position_project || ' '}">
</div>
<div class="col-md-4">
<lable>Наименование оборудовани</lable>
<input type="text" class="form-control search-query" placeholder="Наименование оборудования" value="${formData.search_query || ''}">
</div>
<div class="col-md-1">
<lable>Количество</lable>
<input type="number" class="form-control quantity_query" placeholder="Кол-во" value="${formData.quantity_query || ''}">
</div>
<div class="col-md-3">
<lable>Цена за ед. товара без НДС, руб.</lable>
<input type="number" class="form-control pfixsum" placeholder="Цена за ед. без НДС, руб." value="${formData.pfixsum || ''}">
</div>
<div class="col-md-1" style="display:none">
<lable>Скидка %</lable>
<input type="number" class="form-control pfixsumsale" placeholder="Скидка % руб." value="${formData.pfixsumsale || ''}">
</div>
<div class="col-md-2 mt-4">
<button type="button" class="btn btn-danger removeBtn">Удалить</button>
</div>
</div>
</div>
</div>;
}
function renderForms() {
const formDataArray = getFromLocalStorage();
$('#formContainer').empty();
formDataArray.forEach((data, index) => {
$('#formContainer').append(generateForm(index, data));
});
}
function collectFormsData() {
let data = [];
$('#formContainer .form-entry').each(function () {
const entry = $(this);
data.push({
position_project: entry.find('.position_project').val(),
search_query: entry.find('.search-query').val(),
quantity_query: entry.find('.quantity_query').val(),
pfixsum: entry.find('.pfixsum').val(),
pfixsumsale: entry.find('.pfixsumsale').val()
});
});
return data;
}
// Добавление новой формы
$('#createFormBtn').on('click', function () {
$('#docPagemencla').show();
const searchVal = $('#search-query').val();
const pfixVal = $('#pfixsum').val();
//const pfixValSale = $('.pfixsumsale').val();
const newData = {
position_project: '', // можно добавить отдельный input, если надо
search_query: searchVal,
quantity_query: '',
pfixsum: pfixVal,
pfixsumsale: ''
};
const data = getFromLocalStorage();
//data.push({}); // пустая форма
data.push(newData); // добавляем, не заменяя
saveToLocalStorage(data);
renderForms();
});
// Удаление формы
$('#formContainer').on('click', '.removeBtn', function () {
const index = $(this).closest('.form-entry').data('index');
let data = getFromLocalStorage();
data.splice(index, 1);
saveToLocalStorage(data);
renderForms();
if ($('#formContainer .form-entry').length) {
// Если элемент существует (length > 0), показываем #docPagemencla
$('#docPagemencla').show();
} else {
// Если элемента не существует (length === 0), скрываем #docPagemencla
$('#docPagemencla').hide();
}
});
// Автосохранение при изменении полей
$('#formContainer').on('input', 'input', function () {
const updatedData = collectFormsData();
saveToLocalStorage(updatedData);
});
$('#htmltable').hide();
// Восстановление данных при загрузке
renderForms();
});