Добрый день, форумчане помогите реализовать подсчет суммы в таблице. получаю массив но он начинает прибавлять предыдущую строчку PHP: /*подключаемся по ID счета и высчитываем сумму*/ $UID = (int)$row['id']; $SV = mysqli_query($db, "SELECT * FROM `chet_zao_$years` WHERE id='$UID'"); if (!$SV) { echo "<div class='er' align='center'>Запрос на выбоку данных из базы не прошел. <b>Код ошибки: </b></div>"; exit(mysql_error()); echo "</div>"; } if (mysqli_num_rows($SV) > 0) { $Kaps = mysqli_fetch_array($SV); } else { echo "<div align=center>Информация не может быть извлечена в таблице нет записей</div>"; exit();} $Costs = array($Kaps['cost']); $Cos = implode("|", $Costs); $cost = explode('|',$Cos); $Kol = array($Kaps['kolvo']); $KO = implode("|", $Kol); $kolvo = explode('|',$KO); $cs=0; foreach ($cost as $ks) { $cs++; $total_cost[] = $cost[$cs] * $kolvo[$cs]; } $r_c = array_sum($total_cost); echo number_format($r_c,2,'.',' '); echo '<br>';
@r67wru, для начала: после exit'а жизни нет (см. строку 7). Для чего выполняется implode и explode в строчках 15-16 и 19-20? Почему $cs++ - первый оператор в цикле, если инициализируется с нулевого значения, а массивы, используемые далее - тоже индексируются с нуля?
то есть суть задачи такая что надо вывести сумму товаров из массива и умножить на НДС. но для каждой строчки в таблице,а сейчас верхняя строчка прибавляется к нижний из-за этого сумма счета указана не верно
@r67wru, если предположить, что приведённый код выполняется в цикле для некоторого набора $UID... Добавьте в начало инициализацию массива total_cost.
Серьёзно по году на таблицу? Что здесь за магия? Что вы тут делаете, почему не for тогда уже, если на то пошло? Например, почему вы не хотите поступить так, если не можете выбрать SUM() сразу запросом: PHP: // Пришел такой массив $queryResult = [ ['id' => 1, 'qty' => 3, 'price' => 10], ['id' => 2, 'qty' => 6, 'price' => 15], ['id' => 3, 'qty' => 8, 'price' => 19], ['id' => 4, 'qty' => 2, 'price' => 23] ]; foreach($queryResult as $item) { $total = $item['qty'] * $item['price']; $item['total_price'] = $total; } // Будет так: $queryResult = [ ['id' => 1, 'qty' => 3, 'price' => 10, 'total_price' => 30], .... ];
@villiwalla, таблица по году рассчитана. Код (Text): $Costs = array($Kaps['cost']); $Cos = implode("|", $Costs); $cost = explode('|',$Cos); $Kol = array($Kaps['kolvo']); $KO = implode("|", $Kol); $kolvo = explode('|',$KO); это магия для того чтобы разделять данные так как сумму прописаны в массиве такого вида Код (Text): |2.00|1.00 так же прописано количество товара
@r67wru, вы понимаете, что вы вообще ничего не понимаете? $Costs = array($Kaps['cost']); // Зачем-то присваиваем массив переменной $Costs $Cos = implode("|", $Costs); // Зачем-то собираем массив в строку через разделитель | $cost = explode('|',$Cos);// Зачем-то разбиваем строку по разделителю | и получаем массив идентичный $Kaps['cost'] таблица на каждый год, тоже под большим вопросом
вот как с вами можно о чём-то разговаривать, если вы даже не понимаете что это глупейшее объяснение? в БД для подобного рода вещей есть секционирование (партиции), даже если его не применять, достаточно уникального ключа на поля year+счёт я даже боюсь себе представить как происходит выборка из БД статистики за несколько лет Как вообще можно работать с какими-то счетами при таком низком уровне базовых знаний? P.S. нафиг я-то полез в это болото... прошёл-же изначально мимо