Php – inserting data into thesql database using php

htmlMySQLPHP

I have a php order form named (order.php) and when the user clicks the (submit button "Next Step") it takes him to another page called (confirm-order.php)

The (confirm-order.php) shows the information that the user submitted from the (order.php) using the $_POST[] and by assigning each one of these to a variable.

Data showing on the (confirm-order.php) plain text like for example :

$itemName = $_POST['itemName'];
<?php echo $itemName; ?>

at the end of page there is a form contains only one element as (submit button)

How can i insert the $itemName data into mysql database only (after the submit button is clicked and the form actions take me to the confirmation page)?

I know how to insert data into mysql, but it didn't work with the isset() function

Do i have to write the isset function inside the form first? and below it the mysql database code?

order.php page:

<form class="form-horizontal well" action="confirm-order.php" method="POST">
    <fieldset>
      <legend>Personal Shopper Order Form</legend>
      <div class="control-group">
        <label class="control-label" for="select01">Choose a plan</label>
        <div class="controls">
          <select id="select01" name="plan">
            <option>Lite Plan $0 per order</option>
          </select>
        </div>
      </div>

      <div class="control-group">
        <label class="control-label" for="itemName">Item Name</label>
        <div class="controls">
          <input type="text" class="input-xlarge" id="itemName" name="itemName">
          <p class="help-block">Item name exapmle: iPad3 White 32GB wifi & 3G.</p>
        </div>
      </div>
       <div class="control-group">
        <label class="control-label" for="itemID">Item ID</label>
        <div class="controls">
          <input type="text" class="input-xlarge" id="itemID" name="itemID">
          <p class="help-block">example: Ebay Item ID, Amazon Item ID.</p>
        </div><br>
        <div class="control-group">
        <label class="control-label" for="itemURL">Item URL</label>
        <div class="controls">
          <input type="text" class="input-xxlarge" id="itemURL" name="itemURL">
          <p class="help-block">Direct web link to the item.</p>
        </div>
      </div>
      <div class="control-group">
        <label class="control-label" for="textarea">Item Details</label>
        <div class="controls">
          <textarea class="input-xlarge" id="textarea" name="itemDetails" rows="6"></textarea>
          <p class="help-block">Item details (name, color, specifications etc...)</p>
        </div>
      </div>
      <li id="li_3" data-pricefield="money_simple" data-pricevalue="0">
       <div class="input-prepend input-append">
        <label class="control-label" for="element_3_1">Item Price</label>
        <div class="controls">
        <span class="add-on">$</span>
          <input id="element_3_1" data-price-value="10.00"  name="element_3" type="text" class="element text large">
          <p class="help-block">Item exact price on the US online store.</p>
        </div>
      </div>
     </li>
     <li id="li_7" data-pricefield="money_simple" data-pricevalue="0">
       <div class="input-prepend input-append">
        <label class="control-label" for="element_7_1">Local Shipping Cost</label>
        <div class="controls">
        <span class="add-on">$</span>
          <input id="element_7_1" data-price-value="10.00"  name="element_7" type="text" class="element text large">
        </div>
        <p class="help-block">Local shipping fee from the US Store to Sky2ship (if applicable).</p>
      </div>
     </li>
     <li id="li_8" data-pricefield="radio" data-pricevalue="0">
     <div class="control-group">
      <div class="controls">
      <p class="help-block">Order Processing Service Fee.</p>
        <label class="radio">($0) Standard 2-3 days
        <input id="element_8_1" data-pricedef="00.00" name="element_8" class="element radio" type="radio" value="$0 Standard 2-3 Day">
        </label>
        <label class="radio">($10) Express 1 day
        <input id="element_8_2" data-pricedef="10.00" name="element_8" class="element radio" type="radio" value="$10 Express Same Day">

        </label>
      </div>
      </div>
      </li>
      <legend>Personal Information & Shipping Address</legend>
     <div class="control-group">
        <label class="control-label" for="input04">Full Name</label>
        <div class="controls">
          <input type="text" class="input-medium" id="fullName" name="fullName">
          <p class="help-block">First & last name.</p>
        </div>
      </div>
      <div class="control-group">
      <div class="controls">
        <label class="radio">Male
        <input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked>
        </label>
        <label class="radio">
        <input type="radio" name="optionsRadios" id="optionsRadios2" value="option2">Female

        </label>
      </div>
      </div>
      <div class="input-prepend">
        <label class="control-label" for="prependedInput">Email Address</label>
        <div class="controls">
        <span class="add-on">@</span>
          <input type="text" class="span2" id="prependedInput" name="Email">
          <p class="help-block">Your email address.</p>
        </div>
      </div>
      <div class="control-group">
        <label class="control-label" for="input06">Address</label>
        <div class="controls">
          <input type="text" class="input-xxlarge" id="input06" name="streetAddress" placeholder="Street Address">
          <p class="help-block">Your shipping address.</p>
        </div>
      </div>
       <div class="control-group">
        <div class="controls controls-row">
          <input type="text" class="span2" id="City" name="City" placeholder="City">
          <input type="text" class="span3" id="State" name="State" placeholder="State / Province">

        </div>
      </div>
      <div class="control-group">
        <div class="controls controls-row">
          <input type="text" class="span2" id="PostalCode" name="PostalCode" placeholder="Postal Code">
          <input type="text" class="span3" id="Phone" name="Phone" placeholder="Phone Number">
        </div>
      </div>

      <div class="control-group">
        <label class="control-label" for="select01">Country</label>
        <div class="controls">
          <select id="select02" name="Country">
            <option>IRAQ</option>
            <option>JORDON</option>
          </select>
        </div>
      </div>
       <li class="total_payment" align="right" data-basetotal="0">

            <span>

                <h3 class="alert-success">&#36;<var>0</var></h3>

                <h5>Total</h5>

            </span>

        </li>   
      <div class="control-group">
        <label class="control-label" for="optionsCheckbox">Read & Agree</label>
        <div class="controls">
          <label class="checkbox">
            <input type="checkbox" id="optionsCheckbox" value="option1">
            <a href="#">I agree to the site's Terms of Service & Privacy Policy.</a>
          </label>
        </div>
      </div>

      <div class="form-actions">
        <button type="submit" class="btn btn-primary">Confirm Order</button>
        <button type="reset" class="btn">Cancel Order</button>
      </div>
    </fieldset>
  </form>

confirm-order.php page:

    <?php

$itemName = $_POST['itemName'];
$plan = $_POST['plan'];
$itemID = $_POST['itemID'];
$itemPrice = $_POST['element_3'];
$processService = $_POST['element_8'];
$itemDetails = $_POST['itemDetails'];
$streetAddress = $_POST['streetAddress'];
$City = $_POST['City'];
$State = $_POST['State'];
$PostalCode = $_POST['PostalCode'];
$Phone = $_POST['Phone'];
$Country = $_POST['Country'];
$fullName = $_POST['fullName'];
$Email = $_POST['Email'];
$itemURL = $_POST['itemURL'];
$itemLocalShipCost = $_POST['element_7'];

?>


 <?php
$db_host = "localhost";
$db_user = "root";
$db_pass = "000000";
$db_name = "dbname";
    if (isset($_POST['submit'])) {
  $db_connect = mysqli_connect($db_host,$db_user,$db_pass,$db_name);
  // Check connection
         if (mysqli_connect_errno())
  {
         echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

  $sql ="INSERT INTO lite_order (lite_plan, lite_item_name)
        VALUES
  ('$plan','$item')";

          if (!mysqli_query($db_connect,$sql))
  {
          die('Error: ' . mysqli_error($db_connect));
  }
          echo "1 record added";
    }


?>
<address>
              <strong>Shipping Address.</strong><br>
              <?php echo $streetAddress; ?><br>
              <?php echo $City; ?>, <?php echo $State; ?>, <?php echo $PostalCode; ?><br><?php echo $Country; ?><br>
              <abbr title="Phone">P:</abbr><?php echo $Phone; ?>
            </address>
            <address>
              <strong><?php echo $fullName; ?></strong><br>
              <a href="mailto:#"><?php echo $Email; ?></a>
            </address>

            <table class="table">
              <thead>
                <tr>
                  <th>Plan</th>
                  <th>Item Name</th>
                  <th>Item ID</th>
                  <th>Local Shipping Cost</th>
                  <th>Item Price</th>
                  <th>Order Processing Fee</th>
                </tr>
              </thead>
              <tbody>
                <tr class="success">
                  <td><?php echo $plan; ?></td>
                  <td><?php echo $itemName; ?></td>
                  <td><?php echo $itemID; ?></td>
                  <td><?php echo "$" . $itemLocalShipCost; ?></td>
                  <td><?php echo "$" . $itemPrice; ?></td>
                  <td><?php echo $processService; ?></td
                ></tr>
              </tbody>
            </table>
            <strong>Item URL</strong><p class="alert alert-info"><?php echo $itemURL; ?></p>
            <pre class="pre-scrollable"><?php echo $itemDetails; ?></pre>
            <p>Your Total <h3 class="question"><?php echo "$" . $orderTotal; ?></h3></p>
                         <div class="form-actions"><form action="pending-order.php" method="post" name="confirmed-order">
                          <button type="submit" name="submit" class="btn btn-primary">Submit Order</button>
                          <button type="button" class="btn">Previous</button></form>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

Whereto insert the mysql database code to insert all the variables into database after the submit button is clicked? where to place the isset() function? i tried it, it didn't insert any data into my table.

Best Answer

EDIT: a simple example

do <form>, validation and inserting in one file, say form.php:

<? // check if FORM has been posted

$posted = isset($_POST['submit']);

 if ($posted) { // form has been posted...

    // validate input

    if (!isset($_POST['item']) || strlen(trim($_POST['item'])) == 0)
        $error['item'] = "please insert an item-name!";

    if (!isset($_POST['price']) || !is_numeric($_POST['price']))
        $error['price'] = "please enter a valid price!";


    // ready for input?

    if (!isset($error)) { // no $error --> go insert!

        // I'll do the db-operation with PDO and a prepared statement.
        // this is cool, easy and safe. LEARN IT!

        $sql = "INSERT INTO table (item,price) VALUES (:item,:price)";

        $insert = $db->prepare($sql);
        $insert->execute(array(
            ':item' => $_POST['item'], 
            ':price' => $_POST['price']
            ));
    } // $error
 } // submit
?>

Now, in the <body> of the same page...

<? // check whether to display confirmation or form...

if ($posted && !isset($error)) { 

    // form was sent AND no error --> confirm
?>
<h1>Confirmed!</h1>
<p>Your data has been sent, thank you very much!</p>
<a href="somepage.php">go to somepage</a>
<?

} else {

    // form not sent or errors --> display form
?>

<h1>Please enter data</h1>

<? // display error-message, if there's one:
if (isset($error)) {
    $output = "";
    foreach ($error as $field => $msg) 
        $output .= (strlen($output) > 0?', ':'') . "[$field]: $msg";
    echo "<p>There were errors: $output</p>";
} // $error
?>

<form method="post">
    <!-- if the form has been sent, bring back the field's value from $_POST -->
    <p>item-name: <input type="text" name="item" 
        value="<?=($posted?$_POST['item']:'')?>" /></p>
    <p>price: <input type="text" name="price" 
        value="<?=($posted?$_POST['price']:'')?>" /></p>
    <p><input type="submit" name="submit" value="submit" /></p>
</form>

<?
} // submit & $error
?>

See the use of a ternary-operator for setting the value-attribute of the <input>-elements:

(<condition>?<what to do if true>:<what to do if false>)