Поле Ajax (PHP) + Сущность, выпадающий список (ajax): Решено

Все вопросы/проблемы по установке и использовании.
Ответить
Lexxor2011
Спонсор
Спонсор
Сообщения: 67
Зарегистрирован: 01 фев 2023, 18:12
Имя: Алексей Грибков
Откуда: Россия, г. Южно-Сахалинск
Организация: ООО "Интер Энерджи"

Поле Ajax (PHP) + Сущность, выпадающий список (ajax): Решено

Сообщение Lexxor2011 »

Друзья, если кто сталкивался, помогите пожалуйста!
Есть Сущность, выпадающий список (ajax) в форме, где выбираю схему расчета стоимости доставки.
В Сущности "Схемы доставки" есть схемы только с фиксированной ценой (например ЖД контейнер). И есть поля с ценами за 1 КГ, которые рассчитаны в зависимости от объема груза.
В форме есть поле Ajax запрос, в котором я делаю выборку нужных параметров и вывожу значение полученного расчета, в зависимости от того, какая схема расчета выбрана в указанном выше выпадающем списке.
Вот код:

Код: Выделить всё

$total_gw = [749]; // Общий вес брутто
$freight_id = [670]; // ID схемы расчета доставки
// подбираем поле в зависимости от общего веса товаров в КП
if ($total_gw <= 1) {$field_num = 'field_758';}
elseif ($total_gw > 1 and $total_gw <= 2) {$field_num = 'field_759';}
elseif ($total_gw > 2 and $total_gw <= 3) {$field_num = 'field_760';}
elseif ($total_gw > 3 and $total_gw <= 4) {$field_num = 'field_761';}
elseif ($total_gw > 4 and $total_gw <= 6) {$field_num = 'field_762';}
elseif ($total_gw > 6 and $total_gw <= 10) {$field_num = 'field_763';}
elseif ($total_gw > 10 and $total_gw <= 15) {$field_num = 'field_764';}
elseif ($total_gw > 15 and $total_gw <= 20) {$field_num = 'field_765';}
elseif ($total_gw > 21 and $total_gw <= 25) {$field_num = 'field_766';}
elseif ($total_gw > 25 and $total_gw <= 40) {$field_num = 'field_767';}
elseif ($total_gw > 40 and $total_gw <= 60) {$field_num = 'field_768';}
elseif ($total_gw > 60 and $total_gw <= 100) {$field_num = 'field_769';}
elseif ($total_gw > 100) {$field_num = 'field_770';}

$freight_query = db_query("select ". $field_num ." as price_data, field_772 as fix_check_data, field_771 as fix_price_data from app_entity_65 where id=". $freight_id);
// Вычисляем цены для расчета транспортных затрат
if($freight_arr = db_fetch_array($freight_query)){
	$fix_check = $freight_arr[fix_check_data];
	$fix_price = $freight_arr[fix_price_data];
	$price_value = ($total_gw*$freight_arr[price_data]); // вычисляем цену
	
	if($fix_check == 'false'){
		$value = $price_value; // если не фиксированная цена, подставляем цену
		}
		elseif($fix_check == 'true'){
			$value = $fix_price; // если фиксированная цена, подставляем цену
			}
echo '<b style="color:DeepPink;">' . $value . ' ₽</b>';
$form_field_value = $value;
}
else{ // если запрос не сработал, значит нет исходных данных, выводим сообщение
$value = "Необходимо выбрать схему расчета доставки!";
echo '<b style="color:Tomato;">'. $value .'</b>';}
Все в общем то работает, кроме того, что если выбрана схема с фиксированным полем, то все прекрасно, значение при закрытии формы сохраняется в поле формы и при повторном открытии, оно там есть! Но если выбрать схему с расчетом, которая вычисляется от значения подставного поля в запросе (. $field_num .), сумма вычисляется пока ты в форме, но стоит ее закрыть, то при повторном открытии формы там показывается 0 вместо значения! :cry:
И если форму закрыть без повторного выбора схемы в выпадающем списке, то в поле сохранится 0! :oops:
Последний раз редактировалось Lexxor2011 06 мар 2023, 15:18, всего редактировалось 2 раза.
believe
Инвестор
Инвестор
Сообщения: 477
Зарегистрирован: 09 янв 2020, 11:49
Имя: Владимир
Откуда: Тверь
Организация: ООО "ВебСофт"

Re: Нужна помощь! Поле Ajax (PHP) + Сущность, выпадающий список (ajax)

Сообщение believe »

А демки нет?
Попробуйте обратится к элементам массива с кавычками.
Lexxor2011
Спонсор
Спонсор
Сообщения: 67
Зарегистрирован: 01 фев 2023, 18:12
Имя: Алексей Грибков
Откуда: Россия, г. Южно-Сахалинск
Организация: ООО "Интер Энерджи"

Re: Нужна помощь! Поле Ajax (PHP) + Сущность, выпадающий список (ajax)

Сообщение Lexxor2011 »

believe писал(а): 02 мар 2023, 18:41 А демки нет?
Попробуйте обратится к элементам массива с кавычками.
Сделал с кавычками, ничего не изменилось...

Код: Выделить всё

	$fix_check = $freight_arr['fix_check_data'];
	$fix_price = $freight_arr['fix_price_data'];
	$price_value = ($total_gw*$freight_arr['price_data']); // вычисляем цену
Результат тот же, когда в $value присваивается значение переменной $price_value, оно как бы сохраняется в базе в поле после того как закрываешь форму, но при открытии формы, в самой форме рисуется 0 вместо нужного значения, и если в этот момент закрыть форму, нажав на кнопку "Сохранить", то в поле сохранится 0. Если по новой выбрать из выпадающего списка схему, причем сначала другую, чтобы ID схемы поменялся, а потом ту, которая была, то в поле опять отображается нужная цифра, и при закрытии формы, нажав на кнопку "Сохранить", в поле сохранится нужная цифра, рассчитанная по данному скрипту.
believe
Инвестор
Инвестор
Сообщения: 477
Зарегистрирован: 09 янв 2020, 11:49
Имя: Владимир
Откуда: Тверь
Организация: ООО "ВебСофт"

Re: Нужна помощь! Поле Ajax (PHP) + Сущность, выпадающий список (ajax)

Сообщение believe »

А, так поле ajax, ему действие нужно.
Если условие прописать?
Если =0 то обратись к значению в БД.
Аватара пользователя
Antonyous99
Сообщения: 606
Зарегистрирован: 18 авг 2019, 09:22
Имя: Антон Владимирович
Откуда: Санкт-Петербург
Организация: ООО "РИКОМ-Сервис"
Контактная информация:

Re: Нужна помощь! Поле Ajax (PHP) + Сущность, выпадающий список (ajax)

Сообщение Antonyous99 »

Похоже, что у вас не срабатывает Аякс.
По идее, все поля, которые изменются и задействованы в расчетах, должны указываться.
Попробуйте такую ерунду добавить в начало:

Код: Выделить всё

$bla-bla-bla = [758];
Можно даже закомментировать потом :)
ПУЛЬТ УПРАВЛЕНИЯ БИЗНЕСОМ
ERP/CRM "под ключ"
Lexxor2011
Спонсор
Спонсор
Сообщения: 67
Зарегистрирован: 01 фев 2023, 18:12
Имя: Алексей Грибков
Откуда: Россия, г. Южно-Сахалинск
Организация: ООО "Интер Энерджи"

Re: Нужна помощь! Поле Ajax (PHP) + Сущность, выпадающий список (ajax)

Сообщение Lexxor2011 »

believe писал(а): 03 мар 2023, 12:09 А, так поле ajax, ему действие нужно.
Если условие прописать?
Если =0 то обратись к значению в БД.
Попробовал, изменений нет :cry:
Lexxor2011
Спонсор
Спонсор
Сообщения: 67
Зарегистрирован: 01 фев 2023, 18:12
Имя: Алексей Грибков
Откуда: Россия, г. Южно-Сахалинск
Организация: ООО "Интер Энерджи"

Re: Нужна помощь! Поле Ajax (PHP) + Сущность, выпадающий список (ajax)

Сообщение Lexxor2011 »

Antonyous99 писал(а): 03 мар 2023, 16:03 Похоже, что у вас не срабатывает Аякс.
По идее, все поля, которые изменются и задействованы в расчетах, должны указываться.
Попробуйте такую ерунду добавить в начало:

Код: Выделить всё

$bla-bla-bla = [758];
Можно даже закомментировать потом :)
Тоже не помогло. Аякс работает, при выборе значения из поля с фиксированным значением, оно сохраняется в форме и поле и показывается при повторном открытии формы. Проблема образуется, когда берется значение из поля, которое подбирается из разветвителя if, elseif.
Попробую разделить запрос..
Lexxor2011
Спонсор
Спонсор
Сообщения: 67
Зарегистрирован: 01 фев 2023, 18:12
Имя: Алексей Грибков
Откуда: Россия, г. Южно-Сахалинск
Организация: ООО "Интер Энерджи"

Re: Нужна помощь! Поле Ajax (PHP) + Сущность, выпадающий список (ajax)

Сообщение Lexxor2011 »

В общем понял в чем проблема!!!

Переменная, которая в самом начале моего кода $total_gw = [749] , которая затем прокручивается через разветвитель if-elseif, она берет данные из поля Ajax запрос, это поле [749], в котором рассчитываются данные взятые из другой сущности.
Таже самая история что и с динамическими полями типа MySQL формула и PHP скрипт динамический, в них не сохраняются результаты вычислений, поэтому при открытии формы Аякс запрос, который обращается в поле с Аякс запросом выдает 0.

Поэтому предложение к Сергею:
В новой версии реализуйте пожалуйста возможность, как сохранять значения динамических вычислений в полях, хотя бы для Аякс запроса :)
Или посоветуйте пожалуйста, как обойти эту проблему. :roll:
Можно конечно заново прописать обращение к исходным данным, минуя обращение к полю с Аякс запросом, но это удлинит сам код.. ну и я думаю, увеличит нагрузку на сервер, так как в одной форме будет как бы несколько одинаковых запросов обрабатываться.
Степан
Сообщения: 118
Зарегистрирован: 26 май 2020, 19:01
Имя: Степан
Откуда: Украина, Днепр

Re: Поле Ajax (PHP) + Сущность, выпадающий список (ajax): Решено

Сообщение Степан »

сорян, в вопросе много букф, читал не вникая

но
если передать значение ajax в техническое поле через

Код: Выделить всё

echo '<script>$("#fields_13").val(' . $value . ')</script>';
а потом плясать от него

Поле можно припрятать через JS в форме

Код: Выделить всё

$('.form-group-13').hide(); 
Ответить