2010-11-08 56 views
0

嗨必须检查2个国家,以设置运输成本。 (这些值先前通过下拉列表分配)。这是我的PHP条件,它似乎不工作。如果我犯了一个错误,有人可以帮助我解释语法吗?PHP状态检查国家

<?php 
for($y = 0; $y < count($contentsArray); $y++) 
{ 

    $itemArray = explode(":", $contentsArray[ $y ]); 

    $price = number_format($itemArray[ 2 ] * $itemArray[ 1 ], 2); 
    $subtotal += $price; 

    echo "<tr>"; 
    echo "<td class='item_col'>" . $itemArray[ 0 ] . "</td>"; 
    echo "<td class='description_col'>" . $itemArray[ 3 ] . "</td>"; 
    echo "<td class='quantity_col'>" . $itemArray[ 1 ] . "</td>"; 
    echo "<td class='price_col'>$ " . $price . "</td>"; 
    echo "</tr>"; 
} 

// calculate the shipping 



if($subtotal > 500) 
    $shipping = 0.00; 

// ----这是我尝试添加我的病情和错误------

else if ($country == "Canada") 
    $shipping = 10.00; 
else if ($country == "USA") 
    $shipping = 10.00; 

// ----在上面,我在那里试图添加我的条件------

else $ shipping = 15.00;

$shipping = number_format($shipping, 2); 




// calculate the tax and total for the cart 
$gst = number_format(($subtotal + $shipping) * 0.06, 2); 
$total = $subtotal + $shipping + $gst; 

// update the totals in the db 
$cartData->totals = $shipping . "|" . $gst . "|" . $total; 
$updateSuccess = updateCartTotals($merchant, $cartData); 
?> 

</tbody> 
</table> 
<br /> 

<div id="invoice_totals"> 
    <div id="totals"> 
    $ <?=number_format($subtotal, 2)?><br /> 
    $ <?=number_format($shipping, 2)?><br /> 
    $ <?=number_format($gst, 2)?><br /> 
    <span class="total">$ <?=number_format($total, 2)?></span> 
    </div> 

    <div id="headings"> 
    <strong>subtotal:</strong><br /> 
    <strong>shipping:</strong><br /> 
    <strong>tax:</strong><br /> 
    <span class="total">total:</span> 
    </div> 

    <div id="print"> 
    <a href="#"><img src="images/cart/buttons/print.gif" width="41" height="41" border="0" onmouseover="this.src='images/cart/buttons/print_ov.gif'" onmouseout="this.src='images/cart/buttons/print.gif'" /></a> 
    </div> 

    <div class="cleaner"></div> 

    <div id="back"> 
    <a href="shipping.html"><img src="images/cart/buttons/back.gif" width="58" height="58" border="0" onmouseover="this.src='images/cart/buttons/back_ov.gif'" onmouseout="this.src='images/cart/buttons/back.gif'" /></a> 
    </div> 
    <div class="cleaner"></div> 
</div> 

</div> 

<div id="shipping_information"> 
<p> 
    <strong>Shipping to:</strong><br /> 
    <?=$customerData->firstName . " " . $customerData->lastName?><br /> 
    <?=$customerData->address?><br /> 
    <?=$customerData->city . ", " . $customerData->province?><br /> 
    <?=getCountryName($customerData->country)?><br /> 
    <?=$customerData->postalCode?> 
</p> 

... 
+1

一切看起来都很好,你能解释“似乎没有工作”吗?它应该做什么,它实际上在做什么,你认为是错误的? – Tesserex 2010-11-08 22:41:43

+0

考虑到这种结构,只有在小计低于500时才会检查国家。当您尝试此操作时,小计是多少? – 2010-11-08 22:46:20

+0

我没有看到错误,假设这两个国家也有资格免费送货超过500个发明者。如果不是,并且您的测试满足这种条件,那么这就是您的问题,并且有条件的需要降到国家检查以下。你可以给我们'var_dump($ country);'?的输出吗?你可能想使用'if(!stristr($ country,'canada'))'',但是如果我们有更多的信息会有帮助。 – Dereleased 2010-11-08 22:52:12

回答

0

为了让我们进一步帮助您,请在代码中添加以下两项补充(正是我在下面添加它们的位置)。运行它,然后将“DEBUG”消息粘贴到您的StackOverflow问题上。

<?php 
for($y = 0; $y < count($contentsArray); $y++) 
{ 

    $itemArray = explode(":", $contentsArray[ $y ]); 

    $price = number_format($itemArray[ 2 ] * $itemArray[ 1 ], 2); 
    $subtotal += $price; 

    echo "<tr>"; 
    echo "<td class='item_col'>" . $itemArray[ 0 ] . "</td>"; 
    echo "<td class='description_col'>" . $itemArray[ 3 ] . "</td>"; 
    echo "<td class='quantity_col'>" . $itemArray[ 1 ] . "</td>"; 
    echo "<td class='price_col'>$ " . $price . "</td>"; 
    echo "</tr>"; 
} 

// calculate the shipping 

// ADDITION #1 
echo "DEBUG: subtotal is $subtotal;<br>DEBUG: country is $country"; 
if($subtotal > 500) 
    $shipping = 0.00; 
// ---- This is where I'm trying to add my condition and bugs ------ 

else if ($country == "Canada") 
    $shipping = 10.00; 
else if ($country == "USA") 
    $shipping = 10.00; 
// ---- Above where I'm trying to add my condition ------ 

// ADDITION #2 
else $shipping = 15.00; 
echo "DEBUG: shipping is $shipping"; 
+0

这里是调试输出: DEBUG:小计12.95; DEBUG:country is DEBUG:shipping is 15 – detonate 2010-11-09 14:47:39

+0

这意味着这段代码工作正常。您的错误发生在**'else $ shipping = 15.00;''行后面的某个时间**。在整个代码中保留“$ shipping”的值,直到找到它的更改位置为0。 – 2010-11-09 16:05:47

+0

是否有机会获取“国家/地区”值? – detonate 2010-11-09 16:42:03