Автоинкремент не отрабатывает правильно при многопользовательском режиме
Добавлено: 07 ноя 2025, 00:38
Проблема такая, автоинкремент не работает правильно если например: 1 пользователь открыл форму и заполняет ее, в это время другой пользователь открыл тоже форму и заполнил ее быстрее предыдущего, сохранил, автоинкремент присвоился, теперь первый пользователь нажимает сохранить, и уже значение не уникально. Решил проблему через поле Ajax запрос:
Но в одной сущности есть загвоздка с реализацией, там есть поля в которые надо подставить обновленное значение автоинкремента:
Проблема в том что при нажатии сохранить $("#fields_340").trigger('change'); в onSubmit срабатывает, во все поля проставляется обновленное значение автоинкремента, но не сохраняются в бд кроме первого: $('#fields_347').val(" . intval($value) . ");
Уже все перепробовал, помогите как решить проблему.
Код: Выделить всё
$entity_id = 47;
$feld_inc = 700;
$trigger = [704]; //Добавить $("#fields_704").trigger('change'); в onSubmit
$item_id = $_GET['item_id'];
$increment_query = db_query("SELECT field_{$feld_inc} FROM app_entity_{$entity_id} WHERE field_{$feld_inc} > 0 ORDER BY field_{$feld_inc} DESC LIMIT 1");
if($increment = db_fetch_array($increment_query))
{
$last_increment = $increment['field_'.$feld_inc.''];
if(!$item_id)
{
$value = $last_increment+1;
echo '<script>$("#fields_'.$feld_inc.'").val(' . $value . '); $("#fields_'.$feld_inc.'_rendered_value p.form-control-static").text(' . $value . '); </script>';
}
}
Но в одной сущности есть загвоздка с реализацией, там есть поля в которые надо подставить обновленное значение автоинкремента:
Код: Выделить всё
$entity_id = 29;
$feld_inc = 347;
$trigger1 = [340]; //Добавить $("#fields_340").trigger('change'); в onSubmit
$trigger2 = [339];
$trigger3 = [338];
$trigger4 = [343];
$item_id = $_GET['item_id'];
$increment_query = db_query("SELECT field_{$feld_inc} FROM app_entity_{$entity_id} WHERE field_{$feld_inc} > 0 ORDER BY field_{$feld_inc} DESC LIMIT 1");
if ($increment = db_fetch_array($increment_query)) {
$last_increment = $increment['field_'.$feld_inc];
if (!$item_id) {
$value = $last_increment + 1;
echo "<script>
var lastVal = $('#fields_347').val();
$('#fields_347').val(" . intval($value) . ");
$('#fields_347_rendered_value p.form-control-static').text(" . intval($value) . ");
var inp1 = $('#fields_338'),
inp2 = $('#fields_339'),
inp3 = $('#fields_343'),
out = $('#fields_342');
if ($('#fields_340').val() != 7) {
$('#fields_338').val(" . intval($value) . ");
if ((inp1.val() == '') || (inp1.val() == lastVal) || (inp1.val() == 'б/н')) {
out.val('№' + " . intval($value) . " + ' от ' + inp2.val() + 'г. ' + inp3.val());
} else {
out.val('№' + inp1.val() + ' от ' + inp2.val() + 'г. ' + inp3.val());
}
} else {
inp1.val('б/н');
inp2.val('');
out.val('Договор-оферта');
}
</script>";
}
}Уже все перепробовал, помогите как решить проблему.