2014-02-13 28 views
0

我正在創建一個表單來執行計費,並且我在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

首先,你必須:

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 /分陣列。

+0

好的,任何形成total_amt公式而不使用數組的公式的方法? – user3300482