2015-10-06 2 views
-1

Что было бы лучшим способом для вывода значений флажков, которые были отмечены, но я хочу получить общее количество. Я пытался использовать сумму() к общему количеству значений, выбранных, но я просто продолжаю получать двойную 0 0PHP Sum Общее количество элементов из флажков

Моя checkbox.php

<?php 
if(isset($_POST['submit'])){ 
if(!empty($_POST['shipping'])) { 

?> 
<div class="container"> <?php 
//Loop through shipping array to fetch individual shipping so that we  can use them 
echo "<h2> Your Shipping Costs are: </h2>"; 
foreach($_POST['shipping'] as $shipping) { 
//Print all the shipping 
    echo $shipping; 
    } 

    } 
    else{ 
    echo "<b>Please Select at least One Option.</b>"; 
    } 
    ?></div><?php } 
    ?> 

Тогда мой HTML

<div class="container"> 
    <form action="checkbox.php" method="post"> 

     <label class="head">Select Your Timezone or Other Shipping Options:</label><br/><br/> 
     <input type="checkbox" name="shipping[]" value="$190.00"> <label>Freight to Eastern USA</label><br/> 
     <input type="checkbox" name="shipping[]" value="$245.00"><label>Freight to Western USA</label><br/> 
     <input type="checkbox" name="shipping[]" value="$75.00"><label>Residential Devivery</label><br/> 
     <input type="checkbox" name="shipping[]" value="$100.00"><label>Liftgate Service</label><br/> 
     <input type="checkbox" name="shipping[]" value="$0.00"><label>Will Call</label><br/><br/> 
     <input type="submit" name="submit" Value="Add to Shopping Cart"/> 

    </form> 

Все очень поможет оценили.

+1

вы не получаете результаты из-за знаков доллара в 'значение = "$ ххх" '. Вам нужно либо удалить их, либо взорваться и разделиться. Если вы собираетесь избавиться от знаков доллара, вы всегда можете объединиться после «эха» $ ». $ shipping; ' –

+2

Однако я не понимаю, почему доставка должна быть не более чем одним вариантом. Лучше всего использовать радиокнопки. –

ответ

1

PHP сумма элементов из Флажки

Вы должны удалить знак доллара ($), чтобы sum значений.
использовать что-то вроде:

foreach($_POST['shipping'] as $shipping) { 
    $shipping = str_replace("\$", "", $shipping); 
    $sum += $shipping; 
    } 
    echo "\$".$sum; 
+1

Это отлично поработало. Я пытался использовать $ sum + = $ shipping, тогда echo $ sum раньше, но это не сработало. Моя проблема заключалась в том, что я никогда не знал, что мне нужно удалить знак $. Спасибо Педро –

+0

Добро пожаловать, рад, что это сработало. –

1

Знак доллара должен быть удален до добавления значения:

<?php 
if(isset($_POST['submit'])){ 
    if(!empty($_POST['shipping'])) { 
     echo('<div class="container">'); 
     //Loop through shipping array to fetch individual shipping so that we can use them 
     echo "<h2> Your Shipping Costs are: </h2>"; 
     $shipping_subtotal = 0.0; 
     foreach($_POST['shipping'] as $shipping){ 
      //Sum all the shipping 
      $shipping_subtotal += floatval(substr($shipping,1,strlen($shipping)-1)); 
     } 
     echo('<div>The shipping subtotal is $'.number_format($shipping_subtotal,2,'.',',').'</div>'); 
    } 
    else{ 
     echo "<b>Please Select at least One Option.</b>"; 
    } 
    echo('</div>'); 
} 
?> 

Это будет работать с HTML как есть, однако, я хотел бы рекомендовать делать некоторые изменения в вашем HTML. Атрибут value<input type="checkbox" /> не показан пользователю. Поэтому было бы лучше вообще исключить знаки доллара и оставить вместо них только двойные значения. Поскольку атрибут value не отображается, сумма доллара по-прежнему должна отображаться для клиента. Кроме того, было бы более целесообразно использовать <input type="radio" />, чтобы пользователь не мог выбирать несколько вариантов доставки, если, конечно, вы не хотите, чтобы клиент запрашивал несколько вариантов доставки для своего заказа. Я оставлю это до вас Здесь рекомендуется, упрощенный код:

PHP

<?php 
if(isset($_POST['submit'])){ 
    if(!empty($_POST['shipping'])) { 
     echo('<div class="container">'); 
     //Loop through shipping array to fetch individual shipping so that we can use them 
     echo "<h2> Your Shipping Costs are: </h2>"; 
     /* 
     //only if input type="checkbox" 
     $shipping_subtotal = 0.0; 
     foreach($_POST['shipping'] as $shipping){ 
      //Sum all the shipping 
         substr(); 
      $shipping_subtotal += $shipping; 
     } 
     */ 
     $shipping_subtotal = (double) $_POST['shipping']; 
     echo('<div>The shipping subtotal is $'.number_format($shipping_subtotal,2,'.',',').'</div>'); 
    } 
    else{ 
     echo "<b>Please Select at least One Option.</b>"; 
    } 
    echo('</div>'); 
} 
?> 

HTML

<div class="container"> 
    <form action="tmp.php" method="post"> 
     <label class="head">Shipping Options:</label><br/><br/> 
     <input type="radio" name="shipping" value="190.00"> <label>$190 Freight to Eastern USA</label><br/> 
     <input type="radio" name="shipping" value="245.00"><label>$245 Freight to Western USA</label><br/> 
     <input type="radio" name="shipping" value="75.00"><label>$75 Residential Devivery</label><br/> 
     <input type="radio" name="shipping" value="100.00"><label>$100 Liftgate Service</label><br/> 
     <input type="radio" name="shipping" value="0.00"><label>Will Call</label><br/><br/> 
     <input type="submit" name="submit" Value="Add to Shopping Cart"/> 
    </form> 
</div> 
+0

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

Смежные вопросы