Performing Arithmetic
Just as you learned in grade school, basic mathematics involve the principles of addition, subtraction, multiplication, and division. These are accomplished in PHP using the most obvious operators:
- Addition (+)
- Subtraction (−)
- Multiplication (*)
- Division (/)
To demonstrate these principles, you’ll create a PHP script that calculates the total cost for the sale of some widgets. This handling script could be the basis of a shopping-cart application—a very practical Web page feature (although in this case the relevant number values will come from calculator.html).
When you’re writing this script, be sure to note the use of comments (Script 4.2) to illuminate the different lines of code and the reasoning behind them.
To create your sales-cost calculator:
Create a new document in your text editor or IDE (Script 4.2):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Product Cost Calculator </title> <style type="text/css" media="screen"> .number { font-weight: bold;} </style> </head> <body>
Note that I’m defining one CSS class here, called number. Any element within the page that has that class value will be given extra font weight. In other words, when the numbers from the form are reprinted in the script’s output, I’d like them to be in bold.
Insert the PHP tags and address error handling, if desired:
<?php // Script 4.2 - handle_calc.php
Depending on your PHP configuration, you may or many not want to add a couple of lines that turn on display_errors and adjust the level of error reporting. See Chapter 3 for specifics.
Assign the $_POST elements to local variables:
$price = $_POST['price']; $quantity = $_POST['quantity']; $discount = $_POST['discount']; $tax = $_POST['tax']; $shipping = $_POST['shipping']; $payments = $_POST['payments'];
The script will receive all of the form data in the predefined $_POST variable. To access individual form values, refer to $_POST['index'], replacing index with the corresponding form element’s name value. These values are assigned to individual local variables here, to make it easier to use them throughout the rest of the script.
Note that each variable is given a descriptive name and is written entirely in lowercase letters.
Begin calculating the total cost:
$total = $price * $quantity; $total = $total + $shipping; $total = $total - $discount;
The asterisk (*) indicates multiplication in PHP, so the total is first calculated as the number of items purchased ($quantity) multiplied by the price. Then the shipping cost is added to the total value (remember that the shipping cost correlates to the value attribute of the shipping drop-down menu), and the discount is subtracted.
Note that it’s perfectly acceptable to determine a variable’s value in part by using that variable’s existing value (as you do in the last two lines).
Calculate the tax rate and the new total:
$taxrate = $tax/100; $taxrate = $taxrate + 1; $total = $total * $taxrate;
The tax rate should be entered as a percent—for example, 8 or 5.75. This number is then divided by 100 to get the decimal equivalent of the percent (.08 or .0575). Finally, you calculate how much something costs with tax by adding 1 to the percent and then multiplying that new rate by the total. This is the mathematical equivalent of multiplying the decimal tax rate times the total and then adding this result to the total (for example, a 5 percent tax on $100 is $5, making the total $105, which is the same as multiplying $100 times 1.05).
Calculate the monthly payment:
$monthly = $total / $payments;
As an example of division, assume that the widget(s) or whatever is being purchased can be paid for over the course of many months. Hence, you divide the total by the number of payments to find the monthly payment.
Print the results:
print "<div>You have selected to purchase:<br /> <span class=\"number\">$quantity </span> widget(s) at <br /> $<span class=\"number\">$price </span> price each plus a <br /> $<span class=\"number\">$shipping </span> shipping cost and a <br /> <span class=\"number\">$tax</span> percent tax rate.<br /> After your $<span class=\"number\"> $discount</span> discount, the total cost is $<span class=\"number\">$total </span>.<br /> Divided over <span class=\"number\"> $payments</span> monthly payments, that would be $<span class= → \"number\">$monthly</span> each.</p></div>";
The print() statement sends every value to the Web browser along with some text. To make it easier to read, <br /> tags are added to format the browser result; in addition, the print() function operates over multiple lines to make the PHP code cleaner. Each variable’s value will be highlighted in the browser by wrapping it within span tags that have a class attribute of number (see Step 1).
Close the PHP section and complete the HTML page.
?> </body> </html>
Save your script as handle_calc.php and place it in the proper directory for your PHP-enabled server.
Make sure that calculator.html is in this same directory.
Test the script in your Web browser (Figures 4.2 and 4.3).
Figure 4.2 The HTML form...
Figure 4.3 ...and the resulting calculations.
Not to belabor the point, but make sure you start by loading the HTML form through a URL (http://something) so that when it’s submitted, the PHP script is also run through a URL.
You can experiment with these values to see how effectively your calculator works. If you omit any values, the resulting message will just be a little odd but the calculations should still work (Figure 4.4).
Figure 4.4 You can omit or change any value and rerun the calculator. Here I’ve omitted the tax and discount values.