2013-03-05 1 views
0

Я пытаюсь сгенерировать общую цену в магазине одной страницы.Сгенерировать общую цену, несколько продуктов на одной странице

У меня есть различные продукты на той же странице, выложенной, как это в Еогеасп:

<input type="hidden" name="price_<?=$product_id?>" value="<?=$product_price?>" /> 
<input type="text" name="<?=$product_id?>" value="" onchange="calculateTotal();" /> 

Итак, первый вход скрыт и содержит цену продукта. Второй вход содержит количество, с именем, заданным как product_id. Единственная проблема заключается в том, что на одной странице может быть несколько входов.

Какой был бы лучший способ это сделать? Либо используя Javascript для вычисления цены, либо пост Ajax и используя PHP для выполнения вычислений.

+1

я бы все расчеты (бизнес-логики) на сервере. – Ulises

+0

Вы когда-нибудь выяснили свой вопрос? Вы принимаете ответы? –

ответ

0

Почему бы не использовать новый атрибут data и пропустить скрытое поле цены? Что-то вроде этого:

<input class='quantity' type="number" data-price="1.5" name="prod1" value="" /> 
<div class='subtotal'>0.00</div> 

<input class='quantity' type="number" data-price="7" name="prod2" value="" /> 
<div class='subtotal'>0.00</div> 

<div id='total'>0.00</div> 

с этим:

$('.quantity').on('change', function(){ 
    var sub = $(this).val() * $(this).data('price'); 
    $(this).next('div.subtotal').html(sub).data('sub',sub); 
    var tot=0; 
    $('.subtotal').each(function(){ 
      tot+= $(this).data('sub'); 
     }); 
    $('div#total').html(tot); 
}); 
0

Отметив, что использование HTML для хранения ценовой переменной обычно плохой этикет, почему бы не поддерживать общее количество всех цен? Что-то вроде

$running_total = $running_total+$product_price; 

Это приведет к выделению всего количества продуктов, которые были пропущены. Если я неверно истолковал ваш вопрос, извините.

Хранение цен как объекта HTML, подлежащего передаче через POST или GET, оставляет переменную открытой для манипуляции конечным пользователем.

0

Сделайте это, как хотите. До тех пор, пока вы выполняете расчет при оформлении заказа (опять?) на сервере.