<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 &lt;
        $lname2   = str_replace("<",  "<", $lastname);       #replace < with &lt;
        $address2 = str_replace("<",  "<", $address);        #replace < with &lt;
        $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>