Jump to content

Please help with php undefined variable!


mgmoses

Recommended Posts

I am struggling to get a php script working and desperately need some help!  I am working with easyPHP 5.3.2i The validation part of the script works perfectly when there is an error on the part of an applicant filling out the html form.  However, when the applicant fills out the html form properly, with no mistakes, the php script yields an "undefined variable error on line 41" and the script stops.  Line 41 reads:

if(is_array($error) )

 

I would appreciate help as I know once I get this fixed I will then have to contend with getting the data to post to  the database!  Thanks in advance for your help!

 

The entire php script is shown below:

<?php

 

//uncomment for debugging

//print_r($_POST);

 

//most sites have magic quotes on

//but if they do not, this code simulates magic quotes

if( !get_magic_quotes_gpc() )

{

    if( is_array($_POST) )

        $_POST = array_map('addslashes', $_POST);

}

 

//make sure there is data in the name and email fields

if( empty($_POST["Name"]) )

{

    $error["Name"] = "Your Name is required.";

    $Name = "";

}

else

    $Name = $_POST["Name"];

 

if( empty($_POST["Email"]) )

{

    $error["email"] = "Please include your Email address.";

    $Email = "";

}

else

    $Email = $_POST["Email"];

 

 

 

//we should have at least 1 item ordered in the form

if( empty($_POST["Item01Qty"]) && empty($_POST["Item02Qty"]) && empty($_POST["Item03Qty"]) && empty($_POST["Item04Qty"]) && empty($_POST["Item05Qty"]) && empty($_POST["Item06Qty"]) && empty($_POST["Item07Qty"]) )

    $error["no_qty"] = "Please enter at least 1 item to order.";

 

//we need to make sure the order total was calculated before using the submit button

if( empty($_POST["Amount_To_Pay"]) )

    $error["no_qty"] = "Please go back and calculate your order total and resubmit.";

 

if(is_array($error) )

{

 

  echo "An error occurred while processing your order.";

    echo "<br>\n";

    echo "Please check the following error messages carefully, then click back in your browser and make corrections.";

    echo "<br>\n";

 

    while(list($key, $val) = each($error))

    {

        echo $val;

        echo "<br>\n";

    }

 

    //stop everything as we have errors and should not continue

    exit();

 

}

 

 

//Define the remaining variables

$Ad1 = $_POST['Ad1']; $Ad2 = $_POST['Ad2']; $City = $_POST['City']; $State = $_POST['State']; $Zip5 = $_POST['Zip5']; $Zip4 = $_POST['Zip4']; $AreaCode = $_POST['AreaCode']; $Phone3 = $_POST['Phone3']; $Phone4 = $_POST['Phone4']; $Ext = $_POST['Ext'];

$Total_Purchase = $_POST['Total_Purchase']; $NJ_Tax = $_POST['NJ_Tax']; $SH_Charge = $_POST['SH_Charge']; $Amount_To_Pay = $_POST['Amount_To_Pay'];

$Item01Qty = $_POST['Item01Qty']; $Item02Qty = $_POST['Item02Qty']; $Item03Qty = $_POST['Item03Qty']; $Item04Qty = $_POST['Item04Qty']; $Item05Qty = $_POST['Item05Qty']; $Item06Qty = $_POST['Item06Qty']; $Item07Qty = $_POST['Item07Qty'];

$Item01Total = $_POST['Item01Total']; $Item02Total = $_POST['Item02Total']; $Item03Total = $_POST['Item03Total']; $Item04Total = $_POST['Item04Total']; $Item05Total = $_POST['Item05Total']; $Item06Total = $_POST['Item06Total']; $Item07Total = $_POST['Item07Total'];

 

 

//we can store the order in a database as well

 

$link = @mysql_connect('localhost', 'Bruce', 'heatwave914');

if (!$link)

{

  echo "Could not connect: " . mysql_error();

}

else

{

    mysql_select_db('orders');

 

    $query  = "INSERT INTO orders

            ('Number', 'Name', 'Ad1', 'Ad2', 'City', 'State', 'Zip5', 'Zip4', 'Email', 'AreaCode', 'Phone3', 'Phone4', 'Ext',

                'Item01Qty', 'Item01Total', 'Item02Qty', 'Item02Total', 'Item03Qty',  'Item03Total',  'Item04Qty', 'Item04Total',  'Item05Qty',  'Item05Total',  'Item06Qty',  'Item06Total',  'Item07Qty', 'Item07Total',  'Total_Purchase',  'NJ_Tax',  'SH_Charge', 'Amount_To_Pay' )";

    $query .= " VALUES

            ('', '$Name', '$Ad1', '$Ad2', '$City', '$State', '$Zip5', '$Zip4', '$Email', '$AreaCode', '$Phone3', '$Phone4', '$Ext',

                '$Item01Qty', '$Item01Total', '$Item02Qty', '$Item02Total', '$Item03Qty', '$Item03Total', '$Item04Qty', '$Item04Total', '$Item05Qty', '$Item05Total', '$Item06Qty', '$Item06Total', '$Item07Qty', '$Item07Total', '$Total_Purchase', '$NJ_Tax', '$SH_Charge', '$Amount_To_Pay')";

 

//echo $query . "<br>\n";   

    $result = mysql_query($query);

      mysql_close($link);

}

?>

Link to comment
Share on other sites

I'm not sure, but i think the problem comes from the fact you're not define a variable $error at the beginning of the script.

When there are no mistakes, it does not exist (not defined), and you do check whether it is an array.

Define the variable $error at the beginning of the script :

....
.....
//but if they do not, this code simulates magic quotes
if( !get_magic_quotes_gpc() )
{
    if( is_array($_POST) )
        $_POST = array_map('addslashes', $_POST);
}
$error = array();
...........
..........

 

and verification changes of :

.....
.....
//we need to make sure the order total was calculated before using the submit button
if( empty($_POST["Amount_To_Pay"]) )
    $error["no_qty"] = "Please go back and calculate your order total and resubmit.";

if(count($error) )
{

  echo "An error occurred while processing your order.";
.......
.......

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.