выдергивая волосы сейчас
У меня есть запрос, который подсчитывает все соответствующие значения цены $ в массиве
По сути, первоначальный запрос проверяет таблицу на задания, которые выполнены, но не выставлены счета
Второй запрос (внутри начального цикла запроса) получает все элементы, которые нужно сложить (эти значения находятся внутри другой таблицы (мастер-элементы) и проверяются по значениям массива $ 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 '£'.$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>
Если вы имеете в виду, что каждый ряд do while
должны быть разные итоги, тогда, когда do
начинается, устанавливается $price = [];
или же $price = array();
или null
потому что все предыдущие цены будут добавлены в качестве окончательной цены, если окончательная цена указана для каждого запроса do while
а не для дыры, делай, что я говорю.
Не забудьте сделать $total +=
и не $total =
потому что вы перезапишете переменную, которую вы используете вне основного цикла, так что вы получите неправильный итог.
Других решений пока нет …