За последние 24 часа нас посетили 22548 программистов и 1278 роботов. Сейчас ищут 773 программиста ...

массив общая сумма с ндс

Тема в разделе "PHP для новичков", создана пользователем r67wru, 29 авг 2018.

Метки:
  1. r67wru

    r67wru Активный пользователь

    С нами с:
    14 июл 2017
    Сообщения:
    33
    Симпатии:
    2
    Добрый день, форумчане помогите реализовать подсчет суммы в таблице. получаю массив но он начинает прибавлять предыдущую строчку
    PHP:
    1. /*подключаемся по ID счета и высчитываем сумму*/
    2. $UID = (int)$row['id'];
    3. $SV = mysqli_query($db, "SELECT * FROM `chet_zao_$years` WHERE id='$UID'");
    4. if (!$SV) {
    5. echo "<div class='er' align='center'>Запрос на выбоку данных из базы не прошел. <b>Код ошибки: </b></div>";
    6. echo "</div>";
    7. }  if (mysqli_num_rows($SV) > 0) {
    8. $Kaps = mysqli_fetch_array($SV);
    9. } else {
    10. echo "<div align=center>Информация не может быть извлечена в таблице нет записей</div>";
    11. exit();}
    12.  
    13. $Costs = array($Kaps['cost']);
    14. $Cos =  implode("|", $Costs);
    15. $cost = explode('|',$Cos);
    16.  
    17. $Kol = array($Kaps['kolvo']);
    18. $KO =  implode("|", $Kol);
    19. $kolvo = explode('|',$KO);
    20. $cs=0;
    21. foreach ($cost as $ks) {
    22. $cs++;
    23. $total_cost[] = $cost[$cs] * $kolvo[$cs];
    24. }
    25. $r_c = array_sum($total_cost);  
    26. echo number_format($r_c,2,'.',' ');
    27. echo '<br>';
     

    Вложения:

    • php.png
      php.png
      Размер файла:
      40,9 КБ
      Просмотров:
      3
  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @r67wru, для начала: после exit'а жизни нет (см. строку 7).
    Для чего выполняется implode и explode в строчках 15-16 и 19-20?
    Почему $cs++ - первый оператор в цикле, если инициализируется с нулевого значения, а массивы, используемые далее - тоже индексируются с нуля?
     
  3. r67wru

    r67wru Активный пользователь

    С нами с:
    14 июл 2017
    Сообщения:
    33
    Симпатии:
    2
    индексируется от 1. строка 7 не берем. она не влияет на получение данных из базы
     
  4. r67wru

    r67wru Активный пользователь

    С нами с:
    14 июл 2017
    Сообщения:
    33
    Симпатии:
    2
    то есть суть задачи такая что надо вывести сумму товаров из массива и умножить на НДС. но для каждой строчки в таблице,а сейчас верхняя строчка прибавляется к нижний из-за этого сумма счета указана не верно
     
  5. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @r67wru, если предположить, что приведённый код выполняется в цикле для некоторого набора $UID...
    Добавьте в начало инициализацию массива total_cost.
     
  6. villiwalla

    villiwalla Активный пользователь

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Серьёзно по году на таблицу?

    Что здесь за магия?

    Что вы тут делаете, почему не for тогда уже, если на то пошло?

    Например, почему вы не хотите поступить так, если не можете выбрать SUM() сразу запросом:
    PHP:
    1. // Пришел такой массив
    2.   $queryResult = [
    3.   ['id' => 1, 'qty' => 3, 'price' => 10],
    4.   ['id' => 2, 'qty' => 6, 'price' => 15],
    5.   ['id' => 3, 'qty' => 8, 'price' => 19],
    6.  ['id' => 4, 'qty' => 2, 'price' => 23]
    7. ];
    8.  
    9. foreach($queryResult as $item) {
    10.   $total = $item['qty'] * $item['price'];
    11.   $item['total_price'] = $total;
    12. }
    13.  
    14. // Будет так:
    15. $queryResult = [
    16.   ['id' => 1, 'qty' => 3, 'price' => 10, 'total_price' => 30],
    17. ....
    18. ];
     
  7. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @villiwalla, и охота вам тащить бегемота из этого болота?
     
  8. r67wru

    r67wru Активный пользователь

    С нами с:
    14 июл 2017
    Сообщения:
    33
    Симпатии:
    2
    @villiwalla, таблица по году рассчитана.
    Код (Text):
    1. $Costs = array($Kaps['cost']);
    2. $Cos = implode("|", $Costs);
    3. $cost = explode('|',$Cos);
    4. $Kol = array($Kaps['kolvo']);
    5. $KO = implode("|", $Kol);
    6. $kolvo = explode('|',$KO);
    это магия для того чтобы разделять данные
    так как сумму прописаны в массиве

    такого вида
    Код (Text):
    1. |2.00|1.00
    так же прописано количество товара
     
  9. villiwalla

    villiwalla Активный пользователь

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Что в нём $Kaps['cost']?

    Попытаться стоило
     
  10. r67wru

    r67wru Активный пользователь

    С нами с:
    14 июл 2017
    Сообщения:
    33
    Симпатии:
    2
    @villiwalla, массив цен - $Kaps['cost'];
    $Kaps['kolvo']; массив - количество
     
  11. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @r67wru, вы понимаете, что вы вообще ничего не понимаете?
    1. $Costs = array($Kaps['cost']); // Зачем-то присваиваем массив переменной $Costs
    2. $Cos = implode("|", $Costs); // Зачем-то собираем массив в строку через разделитель |
    3. $cost = explode('|',$Cos);// Зачем-то разбиваем строку по разделителю | и получаем массив идентичный $Kaps['cost']
    таблица на каждый год, тоже под большим вопросом
     
  12. villiwalla

    villiwalla Активный пользователь

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Если вьюхой, то ещё ладно, если нет то ппц.
     
  13. r67wru

    r67wru Активный пользователь

    С нами с:
    14 июл 2017
    Сообщения:
    33
    Симпатии:
    2
    а счета с нового года начинаются с одного, из-за этого на каждый год таблица
     
  14. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    вот как с вами можно о чём-то разговаривать, если вы даже не понимаете что это глупейшее объяснение?
    в БД для подобного рода вещей есть секционирование (партиции), даже если его не применять, достаточно уникального ключа на поля year+счёт
    я даже боюсь себе представить как происходит выборка из БД статистики за несколько лет

    Как вообще можно работать с какими-то счетами при таком низком уровне базовых знаний?

    P.S. нафиг я-то полез в это болото... прошёл-же изначально мимо