Как в php можно получить сумму всех чисел с определенным классом?

Как можно суммировать числовые значения, хранящиеся в полях с классом ".chislovoe_znachenie" и вывести общую сумму на главной странице с разделением по разрядам? Учитывая, что каждая карточка содержит разное значение, и количество карточек может изменяться.
  • 3 января 2024 г. 21:27
Ответы на вопрос 2
PHP работает на серверной стороне, а классы CSS используются на клиентской стороне в браузере. Поэтому PHP не может напрямую получить значения элементов по их классу, так как эти элементы существуют только в HTML, который уже отдан браузеру.

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

Однако, чтобы получать и суммировать значения на клиентской стороне и возможно затем отправить итоговую сумму обратно на сервер, можно использовать JavaScript совместно с jQuery, который упрощает процесс выборки элементов по классу и обработку их значений. Пример с использованием jQuery может выглядеть следующим образом:

```html
<!-- Тут ваш HTML код -->
<div class="chislovoe_znachenie">10</div>
<div class="chislovoe_znachenie">20</div>
<div class="chislovoe_znachenie">30</div>

<!-- место для вывода суммы -->
<div id="summa"></div>

<!-- Подключаем jQuery -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

<script>
$(document).ready(function(){
    var summa = 0;
    $('.chislovoe_znachenie').each(function() {
        summa += parseFloat($(this).text()) || 0; // Парсим число и добавляем к сумме, если возможно
    });
    
    summa = summa.toLocaleString('ru-RU'); // Разделение по разрядам
    $('#summa').text(summa); // Вывод суммы
});
</script>
```

Данный скрипт найдет все элементы с классом `chislovoe_znachenie`, пройдет по каждому, преобразует его текстовое содержимое в число и добавит это число к общей сумме. Затем с помощью метода `toLocaleString` он форматирует число с разделением по разрядам и выводит итоговую сумму в элемент с `id="summa"`.

Если вы хотите сделать это на серверной стороне с использованием PHP, вам придется либо передать значения полей на сервер с помощью формы или асинхронного запроса, либо у вас уже должны быть данные в виде массива в PHP, откуда вы можете их суммировать.
класс тут совершенно ни при чём, т.к. нужно найти у ACF способ получить значение для поля chislovoe_znachenie у всех записей (не работал с ACF), сложить их, а потом вывести точно так же как и одиночное поле с разбиением на разряды
Похожие вопросы