Hi. I'm a newbie in php, and I recently bought a book called PHP and MySQL Web Development by Luke Wlling and Laura Thomson. I was able to make an order form in Chapter 1, but in Chapter 2, I have to process orders so that every time I fill out an order form, the order gets stored in my orders.txt file. Here is the code I have for processorder.php:
<?php
// create short varible names
$tireqty = $_POST['tireqty'];
$oilqty = $_POST['oilqty'];
$sparkqty = $_POST['sparkqty'];
$address = $_POST['address'];
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
$date = date('H:i, jS F Y');
?>
<html>
<head>
<title>Bob's Auto parts - Order Results</title>
</head>
<body>
<h1>Bob's Auto Parts</h1>
<h2>Order Results</h2>
<?php
echo "<p>Order processed at ".date('H:i, jS F Y')."</p>";
echo '<p>Your order is as follows: </p>';
$totalqty = 0;
$totalqty = $tireqty + $oilqty + $sparkqty;
echo "Items ordered: ".$totalqty."<br />";
if ($totalqty == 0) {
echo "You did not order anything on the previous page!<br />";
}
else {
if ($tireqty > 0) {
echo $tireqty." tires<br />";
}
if ($oilqty > 0) {
echo $oilqty." bottles of oil<br />";
}
if ($sparkqty > 0) {
echo $sparkqty." spark plugs<br />";
}
}
$totalamount = 0.00;
define('TIREPRICE', 100);
define('OILPRICE', 10);
define('SPARKPRICE', 4);
$totalamount = $tireqty * TIREPRICE
+ $oilqty *OILPRICE
+ $sparkqty * SPARKPRICE;
echo "Subtotal: $".number_format($totalamount,2)."<br />";
$taxrate = 0.10; // local sales tax is 10%
$totalamount = $totalamount * (1 + $taxrate);
$totalamount = number_format($totalamount, 2, '.', ' ');
echo "<p>Total of order is $".$totalamount."</p>";
echo "<p>Address to ship to is ".$address."</p>";
$outputstring = $date."\t".$tireqty." tires\t".$oilqty." oil\t"
.$sparkqty." spark plugs\t\$".$totalamount
."\t".$address."\n";
//open file for appending
@ $fp = fopen("$DOCUMENT_ROOT/../orders/orders.txt", 'ab');
flock($fp, LOCK_EX);
if (!$fp) {
echo "<p><strong> Your order could not be processed at this time.
Please try again later.</strong></p></body></html>";
exit;
}
fwrite($fp, $outputstring, strlen($outputstring));
flock($fp, LOCK_UN);
fclose($fp);
echo "<p>Order written.</p>";
?>
</body>
</html>
After having filled out the order form two times, this is what my orders.txt file looks like when I copy and paste what I have onto here:
01:14, 27th April 2012 1 tires 2 oil 3 spark plugs $145.20 Address
01:14, 27th April 2012 1 tires 2 oil 3 spark plugs $145.20 Address
This looks right, but for some reason, on Notepad, the data isn't shown this way. Every time I used \t, the spacing in the output is inconsistent, and even though I used \n, a new order isn't recorded on a new line in Notepad.
Is there a way for me to make it so that Notepad shows the output correctly? Thanks.