Lostnode Posted November 17, 2010 Share Posted November 17, 2010 I am still new to programming PHP and this is the first time I am creating a function. Here is where I pull the function (scroll down to commented area) <table width="250" border="0" cellpadding="2" cellspacing="0"> <tr> <td width="145"><strong>Province:</strong></td> <td colspan="2" align="right"><? echo $prov ?></td> </tr> <tr> <td><strong>Postal:</strong></td> <td colspan="2" align="right"><? echo $postal ?></td> </tr> <tr> <td><strong>Lbs:</strong></td> <td colspan="2" align="right"><? echo $lbs ?></td> </tr> <tr> <td colspan="3"> </td> </tr> </table> <img src="/images/carriers/canpar.png" border="0"/> <table width="250" border="0" cellpadding="2" cellspacing="0"> <?php if ($debugmode == 'on') { ?> <tr> <td><strong>Cost:</strong></td> <td width="14" align="right"><strong>$</strong></td> <td width="71" align="right"><? echo number_format($dzone, 2, '.', '') ?></td> </tr> <?php if ($cp_markup != "") { ?><tr> <td><strong>Markup:</strong></td> <td align="right"><strong>$</strong></td> <td align="right"><? echo number_format($cp_mark, 2, '.', '') ?></td> </tr><?php } ?> <? $price = ( number_format($cp_mark, 2, '.', '') +number_format($dzone, 2, '.', '') ); } Else { ?> <tr> <td><strong>Price:</strong></td> <td align="right"><strong>$</strong></td> <td align="right"><? $price = ( number_format($cp_mark, 2, '.', '') +number_format($dzone, 2, '.', '') ); echo number_format($price, 2, '.', ''); ?></td> </tr> <? } ?> <?php if ($cp_fuelcharge != "") { ?><tr> <td><strong>Fuel Charge:</strong></td> <td align="right"><strong>$</strong></td> <td align="right"><? echo number_format($cp_fuelcharge, 2, '.', '') ?></td> </tr><?php } ?> <?php taxcalc(); //Here is the function pull echo $taxrow; // this is supposed to be defined in the function ?> <tr> <td class="priceresults"><strong>Total:</strong></td> <td align="right"class="priceresults"><strong>$</strong></td> <td align="right"class="priceresults"><?php $total = ( number_format($price, 2, '.', '') + number_format($tax, 2, '.', '') ); echo number_format($total, 2, '.', ''); ?></td> </tr> </table> Here is my taxcalc() function: function taxcalc() { if ($prov == "AB") { $gst = '5%'; $gstcalc = '0.05'; $tax = $price * $gstcalc; $taxrow = "<tr><td>GST ($gst):</td><td align='right'><strong>$</strong></td><td>" . number_format($tax, 2, '.', '') . "</td></tr>"; } if ($prov == "BC") { $hst = '12%'; $hstcalc = '0.12'; $tax = $price * $hstcalc; $taxrow = "<tr><td>HST ($hst):</td><td align='right'><strong>$</strong></td><td>" . number_format($tax, 2, '.', '') . "</td></tr>"; } if ($prov == "MB") { $gst = '5%'; $pst = '7%'; $gstcalc = '0.05'; $pstcalc = '0.07'; $gtax = $price * $gstcalc; $ptax = $price * $pstcalc; $tax = $gtax + $ptax; $taxrow = "<tr><td>GST ($gst):</td><td align='right'><strong>$</strong></td><td>" . number_format($gtax, 2, '.', '') . "</td></tr><tr><td>PST ($pst):</td><td align='right'><strong>$</strong></td><td>" . number_format($ptax, 2, '.', '') . "</td></tr>"; } if ($prov == "ON") { $hst = '13%'; $hstcalc = '0.13'; $tax = $price * $hstcalc; $taxrow = "<tr><td>HST ($hst):</td><td align='right'><strong>$</strong></td><td>" . number_format($tax, 2, '.', '') . "</td></tr>"; } if ($prov == "NB") { $hst = '13%'; $hstcalc = '0.13'; $tax = $price * $hstcalc; $taxrow = "<tr><td>HST ($hst):</td><td align='right'><strong>$</strong></td><td>" . number_format($tax, 2, '.', '') . "</td></tr>"; } if ($prov == "NL") { $hst = '13%'; $hstcalc = '0.13'; $tax = $price * $hstcalc; $taxrow = "<tr><td>HST ($hst):</td><td align='right'><strong>$</strong></td><td>" . number_format($tax, 2, '.', '') . "</td></tr>"; } if ($prov == "NS") { $hst = '15%'; $hstcalc = '0.15'; $tax = $price * $hstcalc; $taxrow = "<tr><td>HST ($hst):</td><td align='right'><strong>$</strong></td><td>" . number_format($tax, 2, '.', '') . "</td></tr>"; } if ($prov == "NT") { $gst = '5%'; $gstcalc = '0.05'; $tax = $price * $gstcalc; $taxrow = "<tr><td>GST ($gst):</td><td align='right'><strong>$</strong></td><td>" . number_format($tax, 2, '.', '') . "</td></tr>"; } if ($prov == "NU") { $gst = '5%'; $gstcalc = '0.05'; $tax = $price * $gstcalc; $taxrow = "<tr><td>GST ($gst):</td><td align='right'><strong>$</strong></td><td>" . number_format($tax, 2, '.', '') . "</td></tr>"; } if ($prov == "PE") { $gst = '5%'; $pst = '10%'; $gstcalc = '0.05'; $pstcalc = '0.10'; $gtax = $price * $gstcalc; $ptax = $price * $pstcalc; $tax = $gtax + $ptax; $taxrow = "<tr><td>GST ($gst):</td><td align='right'><strong>$</strong></td><td>" . number_format($gtax, 2, '.', '') . "</td></tr><tr><td>PST ($pst):</td><td align='right'><strong>$</strong></td><td>" . number_format($ptax, 2, '.', '') . "</td></tr>"; } if ($prov == "QC") { $gst = '5%'; $pst = '7.5%'; $gstcalc = '0.05'; $pstcalc = '0.075'; $gtax = $price * $gstcalc; $ptax = ($price + $gtax) * $pstcalc; $tax = $gtax + $ptax; $taxrow = "<tr><td>GST ($gst):</td><td align='right'><strong>$</strong></td><td>" . number_format($gtax, 2, '.', '') . "</td></tr><tr><td>PST ($pst):</td><td align='right'><strong>$</strong></td><td>" . number_format($ptax, 2, '.', '') . "</td></tr>"; } if ($prov == "SK") { $gst = '5%'; $pst = '5%'; $gstcalc = '0.05'; $pstcalc = '0.05'; $gtax = $price * $gstcalc; $ptax = $price * $pstcalc; $tax = $gtax + $ptax; $taxrow = "<tr><td>GST ($gst):</td><td align='right'><strong>$</strong></td><td>" . number_format($gtax, 2, '.', '') . "</td></tr><tr><td>PST ($pst):</td><td align='right'><strong>$</strong></td><td>" . number_format($ptax, 2, '.', '') . "</td></tr>"; } if ($prov == "YT") { $gst = '5%'; $gstcalc = '0.05'; $tax = $price * $gstcalc; $taxrow = "<tr><td>GST ($gst):</td><td align='right'><strong>$</strong></td><td>" . number_format($tax, 2, '.', '') . "</td></tr>"; } } I am not getting any errors, just nothing is showing up. My results show up as: Province: ON Postal: K2C Lbs: 25 Cost: $ 22.57 Markup: $ 0.00 Fuel Charge: $ 5.00 Total: $ 22.57 After Fuel Charge should be my taxes but they do not show up Quote Link to comment Share on other sites More sharing options...
litebearer Posted November 17, 2010 Share Posted November 17, 2010 1. you need to 'include' the function definition in your script. 2. you need to pass the appropriate variables to your function when calling it Quote Link to comment Share on other sites More sharing options...
Lostnode Posted November 17, 2010 Author Share Posted November 17, 2010 The include is a few lines above the table include("./inc/functions.php"); what do you mean pass the variables? Could you give me an example? its all based off of $prov which is defined in my sql pull and works in the table how do I get the function to use it? Quote Link to comment Share on other sites More sharing options...
litebearer Posted November 17, 2010 Share Posted November 17, 2010 in the definition... function taxcalc($prov) taxcalc($prov); //Here is the function pull Quote Link to comment Share on other sites More sharing options...
Lostnode Posted November 17, 2010 Author Share Posted November 17, 2010 Ok, I did that and moved the echo to the function itself... This seemed to work, but I want to use the variables in the function after the function has been called... I.E. I want to use the $tax later on, is this possible? Seeing as I could not Echo $taxrow outside the function, how to I pass the functions out? Quote Link to comment Share on other sites More sharing options...
litebearer Posted November 17, 2010 Share Posted November 17, 2010 you can 'return' values from a function http://www.htmlite.com/php038.php Quote Link to comment Share on other sites More sharing options...
Lostnode Posted November 17, 2010 Author Share Posted November 17, 2010 Ok, not sure how this works... I am using Ontario so I will only copy the new updated snipet from my php function function taxcalc($prov,$price) { if ($prov == "ON") { $hst = '13%'; $hstcalc = '0.13'; $tax = $price * $hstcalc; $taxrow = "<tr><td><strong>HST ($hst):</strong></td><td align='right'><strong>$</strong></td><td align='right'>" . number_format($tax, 2, '.', '') . "</td></tr>"; echo $taxrow; return $tax; } } How ever How do I use $tax afterwards? I have later on in my table <tr> <td class="priceresults"><strong>Total:</strong></td> <td align="right"class="priceresults"><strong>$</strong></td> <td align="right"class="priceresults"><?php $total = ( number_format($price, 2, '.', '') + number_format($tax, 2, '.', '') ); echo number_format($total, 2, '.', ''); ?></td> </tr> I need to be able to add the tax calculation using the tax calculated in the funciton, but use the value outside the function. It diesn;t seem to worj the way I have it here. The example you show is <?php function addit($first_number,$second_number){ $total_sum = $first_number + $second_number; return $total_sum; } $first_number = "1"; $second_number ="2"; $total = addit($first_number,$second_number); echo "$total"; ?> I cannot do that as I have an echo now in my function. Making $tax = taxcalc($prov,$price); will not work as I have that echo in there, what happens is it outputs my tax twice on screen.. Cost: $ 22.57 Markup: $ 0.00 Fuel Charge: $ 5.00 HST (13%): $ 3.58 HST (13%): $ 3.58 Total: $ 31.15 The calculation is right but it echos out the tax entry twice... Quote Link to comment Share on other sites More sharing options...
Lostnode Posted November 17, 2010 Author Share Posted November 17, 2010 Ok, got it to work <?php $price = $combprice + $fuelcharge; //taxcalc($prov,$price); $tax = taxcalc($prov,$price); ?> Instead of pulling the funciton twice, I eliminted one pull. Works great. THank you all for your help. Much appreciated Quote Link to comment Share on other sites More sharing options...
litebearer Posted November 17, 2010 Share Posted November 17, 2010 try... function taxcalc($prov,$price) { if ($prov == "ON") { $hst = '13%'; $hstcalc = '0.13'; $tax = $price * $hstcalc; $taxrow = "<tr><td><strong>HST ($hst):</strong></td><td align='right'><strong>$</strong></td><td align='right'>" . number_format($tax, 2, '.', '') . "</td></tr>"; $my_values = $taxrow . "|" . $tax; return $my_values; } } $my_array = explode("|", taxcalc($prov,$price)); $tax = $my_array[1]; $tax_row = $my_array[0]; then use those two variables where you want Quote Link to comment Share on other sites More sharing options...
kenrbnsn Posted November 17, 2010 Share Posted November 17, 2010 A similar solution involves returning an array and using list to create the variables to use: <?php function taxcalc($prov,$price) { if ($prov == "ON") { $hst = '13%'; $hstcalc = '0.13'; $tax = $price * $hstcalc; $taxrow = "<tr><td><strong>HST ($hst):</strong></td><td align='right'><strong>$</strong></td><td align='right'>" . number_format($tax, 2, '.', '') . "</td></tr>"; return array($tax,$taxrow); } } list($tax,$tax_row) = taxcalc($prov,$price); ?> Ken Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.