数组公式问题并将数组解析到数据库中

时间:2014-02-13 15:01:00

标签: php arrays forms mysqli billing

我正在创建一个表单进行计费,我在total_amt_array上发生了致命错误。另外,我如何解析数组中的项目数组?表单位于Create Invoice中,invoicesubmit是将所有数组添加到数据库中的位置。任何人都可以向我解释为什么我不能总计折扣,数量和数量的数组。

此外,是否有人有更简单的方法来计算所有的total_amt_array。我搜索了stackoverflow,其他人通过添加整个成本列来查找最终总金额以获得最终总成本金额。

创建发票

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>


<script type="text/javascript">

var count = 0;


function addTextArea(){
count= count+1;
var div = document.getElementById('name');
div.innerHTML += "<div> <input type='text' name='name[]' value='' "+"id=name"+count+"> </div>";
div.innerHTML += "\n<br />";
var div = document.getElementById('quantity');
div.innerHTML += "<div><input type='text' name='quantity[]' value ='' "+"id=quantity"+count+"></div>";
div.innerHTML += "\n<br />";
var div = document.getElementById('amount');
div.innerHTML += "<div><input type='text' name='amount[]'  value ='' "+"id=amount"+count+"></div>";
div.innerHTML += "\n<br />";
var div = document.getElementById('discount');
div.innerHTML += "<div><input type='text' name='discount[]'  value ='' "+"id=discount"+count+"></div>";
div.innerHTML += "\n<br />";
}

function removeTextArea(){
document.getElementById("name"+count).remove();

document.getElementById("quantity"+count).remove();

document.getElementById("amount"+count).remove();

document.getElementById("discount"+count).remove();
count = count-1;
}

</script>


</head>

<body>

<form  action="invoicesubmit.php" method="POST">
<?php
echo "<table border='2'>\n"; 
echo "<tr>\n"; 
echo "<th>Description</th>\n"; 
echo "<th>Quantity</th>\n"; 
echo "<th>Amount($)</th>\n";
echo "<th>Discount(%)</th>\n";
echo "</tr>"; 

echo "<tr>";
echo "<td>"?><input type='text' size="50" name='name[]' value='Examination and Consultation' readonly/><?php "</td>";
echo "<td>"?><input type='text' size="50" name='quantity[]' value='' /><?php "</td>";
echo "<td>"?><input type='text' size="50" name='amount[]' value='' /><?php "</td>";
echo "<td>"?><input type='text' size="50" name='discount[]' value='' /><?php "</td>";
echo "</tr>";

echo "<tr>"; 
echo "<td>"?><div id="name"></div> <?php "</td>"; 
echo "<td>"?><div id="quantity"></div> <?php "</td>"; 
echo "<td>"?><div id="amount"></div> <?php "</td>"; 
echo "<td>"?><div id="discount"></div> <?php "</td>"; 
echo "</tr>";
?>
<br />
<input type="button" value="Add Description" onClick="addTextArea();"> &nbsp;


<input type="button" value="Remove Description" onClick="removeTextArea();"> &nbsp;
<input type="submit" name="submit" value="submit">

</form>

</body>
</html>

invoicesubmit

<?php require_once("includes/session.php"); ?>
<?php require_once("includes/db_connection.php"); ?>
<?php require_once("includes/functions.php"); ?>
<?php require_once("includes/validation_function.php"); ?>


<?php
if (isset($_POST['submit'])) {
    // Process the form

    $name_array = $_POST['name'];
    $quantity_array = $_POST['quantity'];
    $amount_array = $_POST['amount'];
    $discount_array = $_POST['discount'];

    $total_amt_array = ($amount_array - ($amount_array * ($discount_array/ 100))) * $quantity_array ;

    for ($i =0; $i < count($name_array); $i++) {

        $name = $name_array[$i];
        $quantity = $quantity_array[$i];
        $amount = $amount_array[$i];
        $discount = $discount_array[$i];
        $total_amt = $total_amt_array[$i];

            echo $name;
    echo "<br />";
    echo $quantity;
    echo "<br />";
    echo $amount;
    echo "<br />";
    echo $discount;
    echo "<br />";
    echo $total_amt;
    }
}
/*  
    //validations
    $required_fields = array("name", "quantity", "amount", "discount");
    validate_presences($required_fields);

    $fields_with_max_lengths = array("name" => 200);
    validate_max_lengths($fields_with_max_lengths);



    if (!empty($errors)) {
      $_SESSION["errors"] = $errors;
      redirect_to("create_invoice.php");    
    }*/




        /*
    // 2. Perform database query
    $query = "INSERT INTO invoicesub (";
    $query .= " description, quantity, amount, discount, total";
    $query .= ") VALUES (";
    $query .= " '{$name}', '{$quantity}', '{$amount}', '{$discount}', '{$total}'";
    $query .= ")";

    $result = mysqli_query($connection, $query);



    if ($result) {
        // Success
        $_SESSION["message"] = "Subject created.";

        redirect_to("confirm_invoice.php");
    }


    else {
        // Failure
        $_SESSION["message"] = "Subject creation failed.";
        redirect_to("create_invoice.php");
    }


} else {
    // This is probably a GET request
    redirect_to("create_invoice.php");
} */
?>


<?php
   if (isset($connection)) { mysqli_close($connection); }
?>

1 个答案:

答案 0 :(得分:1)

首先你有:

echo "<td>"?><input type='text' size="50" name='amount[]' value='' /><?php "</td>";
                                                      ^^---create an array in $_POST

然后:

$amount_array = $_POST['amount'];
^^^^^^^^^^^----this is now an array

然后:

$total_amt_array = ($amount_array - ($amount_array * ($discount_array/ 100))) * $quantity_array ;

此代码归结为:

$total_amt_array = Array - (Array * (Array / 100))) * Array;

你不能在PHP中对数组进行乘法/除法。