2014-02-22 2 views
-2

Я создаю счет-фактуру для своего проекта. Есть 3 страницы. Я новичок в базе данных и php (у меня есть только 1 месяц, чтобы прорваться через эти 2 темы), так что простите меня, если мои коды/логика базы данных отсутствуют.Проблема с расчетной суммой полной переменной

Для всех 3 страниц они уже подключены к базе данных, я вынул имена файлов, чтобы они не загромождали блоки кода.

Первая страница - это форма счета-фактуры. Пользовательские ключи в его/ее имени, затем введите описание, количество, количество и скидки. Нажатие кнопки submit переходит на вторую страницу.

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 в строке 17 это проблема, которую я получил. Он исходит из третьей страницы (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>"; 
Смежные вопросы