Вывести сумму переменных цикла в html
function registerSubmitForm(formSelector, resultSelector, url) { $(formSelector).submit(function(e) { e.preventDefault(); var data = $(this).serialize(); $.ajax({ type: "POST", url: url, data: data, success: function(result) { $(resultSelector).html(result); } }); }); } function minusOrPlus(id, kosz, amount) { var inc = +$(".result" + id).data("inc"); inc = Math.max(0, inc + amount); document.getElementById("inc" + id).innerHTML = inc; var sum = inc * kosz; document.getElementById("summ" + id).innerHTML = sum; $(".result" + id).data("inc", inc); } while (($cat = mysqli_fetch_assoc($products))){ $id=$cat['id']; $order = mysqli_query($connection, "SELECT * FROM `order` WHERE `id`=1"); //// products $zamowienie = mysqli_fetch_assoc($order); if($zamowienie[$id]>0){ $x++; $y=$x%2; if($y==1){ $color='czemny'; }else{$color='szwetly';} $summ_of+=$zamowienie[$id]*$cat['price']; echo '<tr class="'.$color.'"> <td class="t_title">'.$cat['name'].'</td> <td>'.$cat['characteristic'].'</td> <td> <form method="POST" onsubmit="" id="minus'.$id.'" style="float:right"> <input class="serle" name="test" value="'.$id.'"> <input onclick="minusOrPlus(\''.$id.'\', '.$cat['price'].', -1)" data-inc="'.$zamowienie[$id].'" class="result'.$id.'" type="submit" value=" – "> </form> <script>registerSubmitForm("#minus'.$id.'", "#result'.$id.'", "minus.php");</script> <span style ="margin-left:3px" id="inc'.$id.'">'.$zamowienie[$id].'</span> шт. <form method="POST" id="plus'.$id.'" style="float:left"> <input class="serle" name="test" value="'.$id.'"> <input onclick="minusOrPlus(\''.$id.'\', '.$cat['price'].', 1)" data-inc="'.$zamowienie[$id].'" class="result'.$id.'" type="submit" value=" + " id="pulse"> </form> <script>registerSubmitForm("#plus'.$id.'", "#result'.$id.'", "plus.php");</script> </td> <td>'.$cat['price'].' р</td> <td class="nie_maly"><span id="summ'.$id.'">'.$zamowienie[$id]*$cat['price'].'</span> р</td> </tr>'; } } В каждой строке цикла есть кнопки + и - при нажатии на них выполняются js формулы Мне нужно чтобы по нажатию на эти кнопки переменная $summ_of(сумма переменных в цикле) выводилась в <span id="ryczalt"> </span>, подскажите как это реализовать |
После цикла (поскольку в нём вычисляется сумма) напечатайте PHP
echo ' <span id="ryczalt" data-ryczalt="' . json_encode($summ_of) . '" >' . $summ_of . '</span>₽ '; JavaScript функцию minusOrPlus, которая идёт перед циклом, замените на новую версию function minusOrPlus(id, kosz, amount) { var summ_of = +$("#ryczalt").data("ryczalt"); var inc = +$(".result" + id).data("inc"); var normalizedInc = Math.max(0, inc + amount); var sum = normalizedInc * kosz; summ_of = Math.max(0, summ_of + (normalizedInc - inc) * kosz); $("#inc" + id).html(normalizedInc); $("#summ" + id).html(sum); $(".result" + id).data("inc", normalizedInc); $("#ryczalt").html(summ_of).data("ryczalt", summ_of); } |
Цитата:
$summ_of+=$zamowienie[$id]*$cat['price']; поскольку в случае такой функции не учитывается количество находящееся в базе |
Цитата:
|
Цитата:
function minusOrPlus(id, kosz, amount) { var summ_of = +$("#ryczalt").data("ryczalt"); var inc = +$(".result" + id).data("inc"); var normalizedInc = Math.max(0, inc + amount); var sum = normalizedInc * kosz; summ_of = Math.max(0, summ_of + (normalizedInc - inc) * kosz); $("#inc" + id).html(normalizedInc); $("#summ" + id).html(sum); $(".result" + id).data("inc", normalizedInc); $("#ryczalt").html(summ_of).data("ryczalt", summ_of); } а как изм енить функциючтобы в "#ryczalt" передавалось именно переменная $summ_of+=$zamowienie[$id]*$cat['price']; и есть ли смысл менять эту функцию может можно написать дополнительную не конфликтующую функция Мне нужно чтобы по нажатию на на кнопку + или - в #ryczalt выводилась переменная $summ_of+=$zamowienie[$id]*$cat['price']; |
Цитата:
<tag_name data-xxx="<?=($summ_of+=$zamowienie[$id]*$cat['price'])">...</tag_name> то переменная $summ_of получит значение равное текущему плюс рассчитанному $zamowienie[$id]*$cat['price'], это же значение будет помещено в в атрибут data-xxx. Это ли вам нужно не знаю, лично я думаю, что вряд ли. Но какое отношение к этому имеет некая клиентская функция? Задайте вопрос корректно - чего вы хотите? |
Цитата:
![]() у меня есть три столбца в одном есть две кнопки '+' и '-' по нажатию на плюс в число в ревом столбце увеличивается на 1 (грубо говоря) умножается на второй столбец и записывается в третий по нажатию на - число в первом столбце уменьшается на 1, умножается на второй и также записывается в третий Мне необходимо чтобы и при нажатию на '+' и по нажатию на '-' внизу под таблицей (черное большое число) отображалась актуальная сумма третьих столбцов. Всего-то-навсего))) |
А причем тут РНР код с суммированием и помещения суммы в атрибут? Или вы вопрос корректно задать не можете или не понимаете что нужно.
У вас может быть и не 3 столбца, это никак не изменит сути задачи клиентского кода добавления товара, если это решается исключительно клиентом. Но есть одно НО. Интернет магазины можно разделить на три категории: шабашники - им главное чтобы заказали, а есть ли у них заказанное на момент заказа, это не важно, далее вопросы буду решаться сугубо "зуб даю, достану"; челночники/базарники - практически что и первое, но с большей ответственностью перед покупателями; полноценный магазин - этот магазин отличается от всех иных обязательным учетом товара (наличие на складе, реализация, порча, списание и т.д.). Исходя из категории магазина рассмотрим два возможных сценария добавления товара. 1) Магазин "неполноценный", возможные форс-мажорные ситуации между продавец-покупатель скрипта никак не касаются, его обязали, он и считает. То есть все делается на клиенте. Но все делать на клиенте, это не значит вывалить ему все в непотребном для обработке виде. Конечно можно достать из колонки 2 цену товара и умножить ее на выбранное количество. Но в данном случае обрабатываются события нажатия кнопок + и -, а значит цена товара в колонке 2 должна выполнять чисто информативную роль и к расчетам не иметь отношения. Выгоднее цену получать из элемента, который вызвал событие, которое и обрабатывается скриптом. То есть, при запросе страницы сервер формируя html код страницы товаров помещает цену в атрибуты элементов + и -. Я не изучаю ваш код, как обрабатываются эти кнопки не важно, скажу лишь, что совсем не обязательно проверять, что кнопка "минус" или "плюс", можно просто оперировать числами. А это поступить так: а) html код кнопки "+" - <tag_name data-count="1" data-price="<?=$price?>">+</tag_name> б) html код кнопки "-" - <tag_name data-count="-1" data-price="-<?=$price?>">-</tag_name> Как видно из кода, кнопки в атрибутах будут иметь одинаковые значения, но с разными знаками, это количество и вставляемая в атрибуты РНР выводом цена товара, которая также выводится и в колонку 2 для информации и с единицами - "руб." Обработчик нажатия этих кнопок должен извлекать из data-count значение, суммировать его с количеством набранных, а значение цены из data-price суммировать с суммой набранного. То есть здесь не будет умножения. Можно поступить иначе. Если количество набранного (колонка 2) сделать полем ввода без возможности ручного ввода в него, то цену за товар можно вставить только в его атрибут. На это поле повесить событие обрабатывающее ввод, в котором из атрибута поля извлекается цена за товар и умножается на количество набранного, а результат пишется в сумму (колонка 3). 2) Полноценный магазин. В этом случае товар либо не может быть добавлен если его нет, и сообщается об этом, возможно с указанием срока когда он будет, либо товар добавляется, но заказ будет обслуживаться по мере поступления товара. Либо, товар есть, но каждое добавление товара, это не JS расчет, а запрос на сервер, где проверяется его наличие на складе, и пользователю уже дается расчет за набранное количество, либо отказ. В этом случае выражение $summ_of+=$zamowienie[$id]*$cat['price']; имеет право на существование как ответ сервера на запрос клиента, но никак как вставка в атрибут элемента. |
Часовой пояс GMT +3, время: 02:05. |