массив_сумма, подсчитывающий все записи в результате запроса, а не каждую строку в отдельности

выдергивая волосы сейчас

У меня есть запрос, который подсчитывает все соответствующие значения цены $ в массиве
По сути, первоначальный запрос проверяет таблицу на задания, которые выполнены, но не выставлены счета
Второй запрос (внутри начального цикла запроса) получает все элементы, которые нужно сложить (эти значения находятся внутри другой таблицы (мастер-элементы) и проверяются по значениям массива $ item

итоговая сумма вычисляется нормально, я думаю, что это как-то связано с тем, где находится сумма $, так как она складывает ВСЕ возвращаемые итоги, а не отдельные строки

код ниже

<ul class="list-group">
<?php
$uninvoicedq = mysqli_query($con,"SELECT * FROM `workshop-jobs` WHERE completed = '1' AND invoiced = '0' AND wscid !='0' ORDER BY workstartdate ASC");
$uninvoiced = mysqli_fetch_assoc($uninvoicedq);
if($uninvoiced) {
do {
// User Query
$wscid = $uninvoiced['wscid'];
$userq = mysqli_query($cona,"SELECT * FROM `users` WHERE userid = '$wscid'");
$user = mysqli_fetch_assoc($userq);
$wtbdq = mysqli_query($con,"SELECT * FROM `workshop-jobs` WHERE wsjid = '$uninvoiced[wsjid]'");
$wtbdr = mysqli_fetch_assoc($wtbdq);
do {
$wtbd = explode(":",$wtbdr['worktobedone']);
foreach($wtbd as $item)
{
$priceq = mysqli_query($con,"SELECT * FROM `workshop-items` WHERE wsiid = '$item'");
$pricer = mysqli_fetch_assoc($priceq);

$price[] = $pricer['incvat'];
$items[] = $pricer['description'];
//echo $item.' - '. $pricer['incvat'].'<br>';
}

$total = array_sum($price);
} while($wtbdr = mysqli_fetch_assoc($wtbdq));
?>
<li class="list-group-item text-right" style="border:none;" title="<?php echo $itemview;?>"><span class="badge pull-left" style="background-color:#F00;">Not Invoiced</span><?php echo '&pound;'.$total.' - '; echo $user['forename'].' '.$user['surname'].' - ' .$uninvoiced['summary'];?> </li>
<?$itemList = implode(":",$items);
$itemview = str_replace(":","\n",$itemList);
?>

<?          } while($uninvoiced = mysqli_fetch_assoc($uninvoicedq));
} else {
echo "No Jobs Waiting To Invoiced";
}
?>
</ul>

0

Решение

Если вы имеете в виду, что каждый ряд do while должны быть разные итоги, тогда, когда do начинается, устанавливается $price = []; или же $price = array(); или nullпотому что все предыдущие цены будут добавлены в качестве окончательной цены, если окончательная цена указана для каждого запроса do while а не для дыры, делай, что я говорю.

Не забудьте сделать $total += и не $total = потому что вы перезапишете переменную, которую вы используете вне основного цикла, так что вы получите неправильный итог.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]