Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы Как вывести сумму дополнительного поля?

Как вывести сумму дополнительного поля?


     06.03.2016    Общие вопросы, Хаки    670

вопрос
Добрый вечер.

Реализовал под нужду компании веб проект под ДЛЕ 11. Работает шикарно. Но вот застрял в одном моменте:

Как вывести сумму дополнительного поля так, чтобы в каждой категории оно суммировалось относительно тех значений что относится именно этой категории.

Грубо говоря: Есть категории Дом и Дача. В категории Дом есть 6 записей с дополнтельным полем цена, а в категории Дача 13 записей, тоже с дополнтельным полем цена. Как сделать чтобы при просмотре категории Дом выводилась сумма 6 записей, а в категории Дача 13-ти.

Заранее благодарю!

Ответа пока нет


Комментарии пользователей (12)

Gameer
226

1124 | 396

Gameer - 6 марта 2016 20:59 - Эксперт

1. Создать файл в /engine/modules - countf.php вставить в него
<?php
/*
Автор : Gameer
-----------------------------------------------------
URL: http://gameer.name/
*/
if( ! defined( 'DATALIFEENGINE' ) ) return;
if($dle_module == "cat")
{
    $field = $db->safesql(trim(strip_tags(stripslashes($field))));
    $count_xfield = dle_cache('news_c_xf_' . $category_id . $field, $config['skin']);
    if(!$count_xfield)
    {
        $count_xfield = $db->super_query("SELECT SUM(SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  '{$field}|', -1 ) ,  '||', 1 )) as count FROM " . PREFIX . "_post WHERE SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  '{$field}|', -1 ) ,  '||', 1 ) != '' AND approve='1' AND category REGEXP '[[:<:]]({$category_id})[[:>:]]'");
        $res = $count_xfield['count'];
        echo $res;
        create_cache('news_c_xf_' . $category_id . $field, $res, $config['skin']);
    }
    else echo $count_xfield;
}

2. Подключить в main.tpl -
{include file="/engine/modules/countf.php?field=test"}

Заменить test на латинское имя нужного доп поля.

Истина в противоречии.​

neo-azazello
14

neo-azazello - 6 марта 2016 21:38 - Юзер


Gameer, вы гений! Спасибо вам за решение!

Но вот одно остется загадкой: Почему некоторые категории выдают слишком длинные десятичные цифры? Сравните:

Gameer
226

1124 | 396

Gameer - 6 марта 2016 23:02 - Эксперт

Замените это
$res = $count_xfield['count'];
На это:
$res = round($count_xfield['count'], 2);

Истина в противоречии.​

neo-azazello
14

neo-azazello - 7 марта 2016 08:04 - Юзер

Сейчас всё работает прекрасно. Вопрос решен. Спасибо, Gameer!

neo-azazello
14

neo-azazello - 9 марта 2016 19:39 - Юзер

Вышла маленькая проблема: Во время вывода суммы, десятичные цифры разделяется запятой. При арифметических калькуляции запятая выдает ошибку. Можно чтобы сумма выводилась точкой вместе запятой?

Gameer
226

1124 | 396

Gameer - 9 марта 2016 19:44 - Эксперт

neo-azazello, замените
$res = round($count_xfield['count'], 2);
на
$res = number_format($count_xfield['count'], 2, '.', '');

Истина в противоречии.​

neo-azazello
14

neo-azazello - 9 марта 2016 20:19 - Юзер


Начал считать, но :

neo-azazello
14

neo-azazello - 9 марта 2016 20:42 - Юзер

Можно чтобы разделителем остался точка, но округлялась до сотой части?

Gameer
226

1124 | 396

Gameer - 9 марта 2016 20:47 - Эксперт

neo-azazello, замените
$res = number_format($count_xfield['count'], 2, '.', '');
на
$res = str_replace(",",".",round($count_xfield['count'], 2));

Истина в противоречии.​

neo-azazello
14

neo-azazello - 9 марта 2016 20:52 - Юзер

Супер! Великолепно! Спасииибо снова, Gameer! :)

neo-azazello
14

neo-azazello - 3 августа 2016 09:32 - Юзер

Еще один вопрос по поводу этой темы: Можно ли разделить тысячные значении точкой или зяпятой? Пробелом видимо не реально из-за арифметической точки зрения.

neo-azazello
14

neo-azazello - 6 августа 2016 14:13 - Юзер

@Gameer можете что-нибудь предложить?

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы