@s-zhura

Как вычислить сумму значений из последних 5 записей?

Есть записи в определённой рубрике, в которых яваскриптом считается произведение, в зависимости от условий (win, open и др.):
<?php if( get_field("result") == 'Win'): ?>
<script type="text/javascript">
var kof1 = <?php the_field('koff'); ?>, kof2 = <?php the_field('summa'); ?>, total_Sum;
total_Sum = kof1 * kof2
document.write(total_Sum);
</script> рублей.
<?php elseif( get_field("result") == 'open'): ?> ...рублей.
<?php else: ?> 0.00 рублей.
<?php endif; ?>
Далее, на отдельной странице выводятся  полученные результаты из последних 5 записей:
<?php
$id=2743; // ID заданной рубрики
$n=5;   // количество выводимых записей
$recent = new WP_Query("cat=$id&showposts=$n");
while($recent->have_posts()) : $recent->the_post();
?>
<?php if( get_field("result") == 'Win'): ?>
<script type="text/javascript">
var kof1 = <?php the_field('koff'); ?>, kof2 = <?php the_field('summa'); ?>, total_Sum;
total_Sum = kof1 * kof2
document.write(total_Sum);
</script> рублей.
<?php elseif( get_field("result") == 'open'): ?>... рублей.
<?php else: ?>0.00 рублей.
<?php endif; ?>
<?php endwhile; ?>
На выходе получается, допустим, так:
150.00 рублей.
250.00 рублей.
0.00 рублей.
200.00 рублей.
0.00 рублей.

Вопрос: Подскажите, пожалуйста, как получить сумму полученных значений (150+250+0+200+0)???
  • Вопрос задан
  • 192 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега PHP
♬♬
JavaScript там не нужен, судя по вашему коду. Обойдёмся одним PHP:
<?php
$id	= 2743;	// ID заданной рубрики
$n	= 5;	// количество выводимых записей
$recent = new WP_Query("cat=$id&showposts=$n");
$sum = 0;

while($recent->have_posts()) {

	$recent->the_post();

	if( get_field("result") === 'Win') {
		$value = get_field('koff') * get_field('summa');
		$sum += $value;
		$out = sprintf( '%01.2f', $value); // 1.23
	} elseif( get_field("result") === 'open') {
		$out = "&hellip;"; // троеточие
	} else {
		$out = '0.00';
	}
	
	echo $out . ' рублей.';
}

printf( "<p>Сумма: %01.2f рублей.</p>", $sum);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@WestlE
Если есть прямой доступ к БД - сортируем по ID начиная с последних и цепляем LIMIT 5.
И уже в цикле проводим подсчёт всех полей, подобный пример приведен выше.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы