Использование mysql формулы вместо php кода.

Все вопросы/проблемы по установке и использовании.
Ответить
timbios
Сообщения: 103
Зарегистрирован: 25 май 2021, 19:52
Имя: Anthony
Откуда: Tallinn

Использование mysql формулы вместо php кода.

Сообщение timbios »

Доброе утро, знатоки!

Есть следующий php код, который сохраняет значение в БД, т.к. его нужно использовать дальше. Он должен быть динамическим, потому-что использует значение из другой сущности.
Нет ли возможности сделать это как-то через mysql формулу, чтобы можно было подсчитывать сумму в списке?

Что делает код:
Он берёт из дочерней сущности сумму произведенных товаров и сравнивает, если количество меньше 50 - берёт базовую цену, если меньше 300 - цену от 50 пар и так дальше. И умножает количество произведенных на цену.

Вопрос. Как можно сделать такое через mysql формулу или запрос, чтобы можно было высчитывать сумму в списке и дописать суффикс " грн" в конце???

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

$done_sql = db_query('SELECT SUM(field_248) as `acts_sum` FROM app_entity_28 WHERE app_entity_28.parent_item_id =' . [id]);
$current_sql = db_query('SELECT field_315 FROM app_entity_26 WHERE id =' . [id]);

$current_result = db_fetch_array($current_sql);
$current_value = $current_result['acts_sum'];

$done_result = db_fetch_array($done_sql);
$done = $done_result['acts_sum'];

	$amount = [235];

	$base_cost = [236];
	$fifty_cost = [298];
	$three_cost = [353];
	$thousand_cost = [354];

if ($amount >= 1000 and $thousand_cost != 0) {
	$output_value = number_format(($done*$thousand_cost), 2, '.', '') . " грн";
} else if ($amount >= 300 and $three_cost != 0) {
	$output_value = number_format(($done*$three_cost), 2, '.', '') . " грн";
} else if ($amount >= 50 and $fifty_cost != 0) {
	$output_value = number_format(($done*$fifty_cost), 2, '.', '') . " грн";
} else {
	$output_value = number_format(($done*$base_cost), 2, '.', '') . " грн";
}
Снимок экрана-20210914100713-436x332.png

Код выше для отображения на странице заказа.
Код ниже, служебный для расчетов в другую сущность

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

$done_sql = db_query('SELECT SUM(field_248) as `acts_sum` FROM app_entity_28 WHERE app_entity_28.parent_item_id =' . [id]);
$current_sql = db_query('SELECT field_315 FROM app_entity_26 WHERE id =' . [id]);

$current_result = db_fetch_array($current_sql);
$current_value = $current_result['acts_sum'];

$done_result = db_fetch_array($done_sql);
$done = $done_result['acts_sum'];

	$amount = [235];

	$base_cost = [236];
	$fifty_cost = [298];
	$three_cost = [353];
	$thousand_cost = [354];

if ($amount >= 1000 and $thousand_cost != 0) {
	$output_value = $done*$thousand_cost;
} else if ($amount >= 300 and $three_cost != 0) {
	$output_value = $done*$three_cost;
} else if ($amount >= 50 and $fifty_cost != 0) {
	$output_value = $done*$fifty_cost;
} else {
	$output_value = $done*$base_cost;
}


if ($output_value != $current_value) {
	db_query('UPDATE app_entity_26 SET field_315 = ' . $output_value . ' WHERE id = ' . [id]);
}
Ответить