<html>
<head>
<title>Process HTML form + write to file</title>
</head>
<body bgcolor=lightyellow>
<h1><center>The Ice Cream Shop</center></h1>
<h2>Collect data from HTML. Write to file</h2>
<?php
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE); //all error but warnigns & notices
$file = '/home/sultans/web/data/cust_order.file'; #server file
// $file = '../data/cust_order.file'; #local PC file
if ($_POST) #if data was collected in _POST array
{ #that means it was the 2nd time around
validate();
if ($msg == '') #if no errors
{
write_data();
}
}
display();
//=============================================================================
function validate()
{
global $firstname, $lastname, $address, $flavor, $topping, $creditCard;
global $name_error,$addr_error,$flav_error,$top_error,$cc_error,$msg;
$firstname = $_POST['firstname']; #get HTML form entry fields
$lastname = $_POST['lastname'];
$address = $_POST['address'];
$flavor = $_POST['flavor']; #select list --> array
$topping = $_POST['topping']; #checkboxes --> array
$creditCard = $_POST['creditCard'];
$msg;
$name_error;
$addr_error;
$flav_error;
$top_error;
$cc_error;
if (is_array($flavor))
$flavor = implode(',' , $flavor); #flatten out the array
if (is_array($topping))
$topping = implode(',' , $topping); #flatten out the array
if ($firstname == '' || $lastname == '') {
$msg = 'error';
$name_error = '*';
}
if ($address == '') {
$msg = 'error';
$addr_error = '*';
}
if ($flavor == '') {
$msg = 'error';
$flav_error = '*';
}
if ($topping == '') {
$msg = 'error';
$top_error = '*';
}
if ($creditCard[0] == '') {
$msg = 'error';
$cc_error = '*';
}
if ($msg == 'error')
$msg = 'Please enter required field(s) above!';
}
//===============================================================================
function display()
{
global $firstname, $lastname, $address, $flavor, $topping, $creditCard;
global $name_error,$addr_error,$flav_error,$top_error,$cc_error,$msg;
if ($creditCard == 'visa') $visa_checked = 'CHECKED';
if ($creditCard == 'master-card') $mc_checked = 'CHECKED';
if ($creditCard == 'amex') $amex_checked = 'CHECKED';
if (substr_count($flavor,'vanilla') > 0) $vanl_selected = 'SELECTED';
if (substr_count($flavor,'chocolate') > 0) $choc_selected = 'SELECTED';
if (substr_count($flavor,'strawberry') > 0) $strw_selected = 'SELECTED';
if (substr_count($flavor,'butter-pecan') > 0) $butr_selected = 'SELECTED';
if (substr_count($flavor,'rocky-road') > 0) $rock_selected = 'SELECTED';
if (substr_count($flavor,'french-vanilla') > 0) $fren_selected = 'SELECTED';
if (substr_count($flavor,'pistachio') > 0) $pist_selected = 'SELECTED';
if (substr_count($topping,'hotFudge') > 0) $hotF_checked = 'CHECKED';
if (substr_count($topping,'sprinkles') > 0) $sprk_checked = 'CHECKED';
if (substr_count($topping,'nuts') > 0) $nuts_checked = 'CHECKED';
if (substr_count($topping,'whippedCream') > 0) $whip_checked = 'CHECKED';
print "<form method=POST> \n"; //no action, therefore itself
print "<fieldset style='width:570px;border-color:gold'> \n";
print "<legend>Enter Fields Below</legend> \n";
print "<table bgcolor=eeeeee> \n";
print "<tr>";
print "<td><b>Enter First Name ";
print "<td><input type=text name=firstname value='$firstname'> \n";
print "<tr>";
print "<td><b>Last Name <font color=red> $name_error </font>";
print "<td><input type=text name=lastname value='$lastname'> \n";
print "<tr>";
print "<td><b>Enter Address <font color=red> $addr_error </font>";
print "<td><textarea name=address rows=4 cols=47>$address</textarea> \n";
print "<tr>";
print "<td><b>Ice Cream Flavor <font color=red> $flav_error </font> \n";
print "<td><select name='flavor[]' SIZE='4' multiple='multiple'> \n";
print " <option value='vanilla' $vanl_selected> Vanilla</option> \n";
print " <option value='chocolate' $choc_selected> Chocolate</option> \n";
print " <option value='strawberry' $strw_selected> Strawberry</option> \n";
print " <option value='butter-pecan' $butr_selected> Butter Pecan</option> \n";
print " <option value='rocky-road' $rock_selected> Rocky Road</option> \n";
print " <option value='french-vanilla' $fren_selected> French Vanilla</option> \n";
print " <option value='pistachio' $pist_selected> Pistachio</option> \n";
print "</select> \n";
print "<tr>";
print "<td><b>Select Topping <font color=red> $top_error </font> \n";
print "<td>";
print "<input type='checkbox' name='topping[]' value='hotFudge' $hotF_checked/> Hot Fudge \n";
print "<input type='checkbox' name='topping[]' value='sprinkles' $sprk_checked/> Sprinkles \n";
print "<input type='checkbox' name='topping[]' value='nuts' $nuts_checked/> Nuts \n";
print "<input type='checkbox' name='topping[]' value='whippedCream' $whip_checked/> Whipped Cream \n";
print "<tr>";
print "<td><b>Choose Credit Card <font color=red> $cc_error </font> \n";
print "<td>";
print "<input type=radio name=creditCard value='visa' $visa_checked/> Visa \n";
print "<input type=radio name=creditCard value='master-card' $mc_checked/> Master Card \n";
print "<input type=radio name=creditCard value='amex' $amex_checked/> Amex \n";
print "<tr>";
print "<td width=155>";
print "<input type=submit value=' Place Order '>";
print "<td><input type=reset value=Cancel> \n";
print "</table> \n";
print "</fieldset> \n";
print "<br><font color=red> $msg </font>";
print "<br/>";
print "</form> \n";
}
//===============================================================================
function write_data()
{
global $file, $msg;
global $firstname, $lastname, $address, $flavor, $topping, $creditCard;
$fname2 = str_replace("<", "<", $firstname); #replace < with <
$lname2 = str_replace("<", "<", $lastname); #replace < with <
$address2 = str_replace("<", "<", $address); #replace < with <
$address2 = str_replace("\r\n", "__", $address2); #replace newlines with __
$filename = $file;
$output = fopen ($filename, 'a')
or die ("Cannot open $filename for append");
$rec = $fname2.'||'.$lname2.'||'.$address2.'||'.$flavor.'||'.$topping.'||'.$creditCard;
$bytesWritten = fwrite($output, "$rec\n")
or die ("Cannot write to file $filename");
fclose($output);
$msg = 'Order processed successfully!!!';
}
//===============================================================================
?>
<hr/>
Click <a href=/~sultans/php/demo/6file/getFromFile.php>here</a> to see all orders
<a href=/~sultans/php/demo/6file/getFromFileSort.php>sorted</a>
<?php include "../include.php"; ?> <!-- hyperlink to see the code -->
</body>
</html>