2014-02-22 202 views
-2

我正在爲我的項目創建發票。共有3頁。 我是一個在數據庫和PHP新手(只有1個月通過這2個科目崩潰),所以原諒我,如果我的代碼/或數據庫邏輯缺乏。計算總變量總和的問題

對於所有3頁,他們已經連接到數據庫,我拿出文件名,以便它不會混亂的代碼塊。

第一頁是發票的形式。用戶輸入他/她的名字,然後鍵入描述,金額,數量和折扣變量。點擊提交進入第2頁。

如果在頁面1中輸入了多行輸入,則第二頁更多地是循環變量的後端處理。然後它將所有這些輸入解析到名爲invoicesub的表中。它還將客戶名稱編碼到底部重定向鏈接中的URL中。

第三頁是我要顯示所有這些變量,如客戶名稱,描述,數量,金額,總額,折扣表中的所有變量,還可以在表invoicesub中創建總變量的總和。我還想將打印的變量的所有變量重新插入同一個數據庫中稱爲invoicefinal的另一個表中。

首頁(形式)

<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>"; 
?> 
Customer Name: 
<br /> 
<input type="text" name="cust_name" value="" /> &nbsp; 
<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> 

第二頁(把各種變量納入表invoicesub)

if (isset($_POST['submit'])){ // Process the form 
    $name_array = $_POST['name']; 
    $quantity_array = $_POST['quantity']; 
    $amount_array = $_POST['amount']; 
    $discount_array = $_POST['discount']; 
    $cust_name_array = mysql_prep($_POST['cust_name']); 
    for ($i = 0; $i < count($name_array); $i++){ 
     $cust_name = $cust_name_array; 
     $name = $name_array[$i]; 
     $quantity = $quantity_array[$i]; 
     $amount = $amount_array[$i]; 
     $discount = $discount_array[$i]; 
     $total_amt = ($amount - ($amount * ($discount/100))) * $quantity; 


      global $connection; 
      $query = "INSERT INTO invoicesub ("; 
      $query.= " cust_name, description, quantity, amount, discount, total"; 
      $query.= ") VALUES ("; 
      $query.= " '{$cust_name}', '{$name}', {$quantity}, {$amount}, {$discount}, {$total_amt}"; 
      $query.= ")"; 

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


     } 


      redirect_to("invoicesubmitfinal.php?cname=".urlencode($cust_name)); 

     } 

第3頁(試圖總和變量)

<?php 

echo "<table border='1'>\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 "<th>Total_amt</th>\n"; 
echo "</tr>"; 


global $connection; 

$sql1="SELECT sum(amount) as amount, sum(quantity) as quantity, sum(total) as total FROM invoicesub where cust_name=$name"; 
$result2 = mysqli_query($connection, $sql1) or die(mysqli_error()); 

while ($rows = mysql_fetch_array($result2)){ 
      echo "<tr>"; 
      echo "<td>" . $rows['quantity'] . "</td>"; 
      echo "<td>" . $rows['amount'] . "</td>"; 
      echo "<td>" . $rows['discount']. "%" . "</td>"; 
      echo "<td>" ."$". $rows['total'] . "</td>"; 
      echo "<td>" . "$" . $total_amt . "</td>"; 
      echo "</tr>"; 
    echo $rows['amount']; 
    echo $rows['quantity']; 
    echo $rows['total']; 

} 
?> 
+0

問題是......? – panoptical

+0

你需要兩個查詢。一個獲得每個單獨的項目並顯示它們,然後第二個獲得所有總數。或者,您可以在打印每個項目時使用PHP計算總計。 – Barmar

+0

警告:mysqli_error()期望恰好有1個參數,第0行給出的/home/mydentis/public_html/test/invoicesubmitfinal.php中的0 0 這是我得到的問題。它來自第3頁(invoicesubmitfinal) – user3300482

回答

0

您需要使用返回每一行的查詢。您可以在打印詳細記錄時計算總計:

$det_sql = "SELECT description, quantity, amount, discount, total 
      FROM invoicesub 
      WHERE cust_name = ?"; 
$det_stmt = mysqli_prepare($connection, $det_sql); 
mysqli_stmt_bind_param($det_stmt, "s", $name); 
mysqli_stmt_execute($det_stmt); 
mysqli_stmt_bind_result($det_stmt, $description, $quantity, $amount, $discount, $total); 
$total_quantity = $total_amount = $total_total = 0; 
while (mysqli_stmt_fetch($det_stmt)) { 
    echo "<tr><td>$description</td><td>$quantity</td><td>\$$amount</td><td>$discount%</td><td>\$$total</td></tr>"; 
    $total_quantity += $quantity; 
    $total_amount += $amount; 
    $total_total += $total; 
} 
echo "<tr><td>Totals:</td><td>$total_quantity</td><td>\$$total_amount</td><td></td><td>\$$total_total</td></tr>";