2014-02-13 3 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