За последние 24 часа нас посетили 30647 программистов и 1809 роботов. Сейчас ищут 883 программиста ...

Суммировать числовые значения в столбце

Тема в разделе "PHP для новичков", создана пользователем smartCreate, 27 ноя 2016.

  1. smartCreate

    smartCreate Новичок

    С нами с:
    4 ноя 2016
    Сообщения:
    122
    Симпатии:
    4
    Добрый вечер! Ситуация следующего характера, доделываю корзину товаров на интернет-магазине. Выглядит она вот так:

    Без-имени-1-восстановлено.jpg

    Все что вы здесь видите (название, артикул, цена, кол-во, сумма) - выводиться из таблицы БД. Собственно осталось сделать последнее - реализовать подсчет всех значений в поле "Сумма" и вывести полученный результат в поле "К оплате" (вместо 123).

    Таблица имеет следующую структуру:
    Без-имени-1.jpg
    Я представляю себе алгоритм вот таким образом:
    1) Произвести арифметический сложение всех значение в столбце "summa";
    2) Результат сложения записать в столбец "result";
    3) Далее извлечь значение из "result" и вывести его на страницу в графу "К оплате"

    Как реализовать пункт №2 и №3 я знаю, а вот как реализовать №1 - пока без понятия, пытаюсь решить этот вопрос самостоятельно, но пока не выходит - очень уж мало у меня опыта в php. Прошу помочь!

    Заранее благодарен:)
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    @smartCreate, функция SUM() и должна решить проблему
     
  3. smartCreate

    smartCreate Новичок

    С нами с:
    4 ноя 2016
    Сообщения:
    122
    Симпатии:
    4
    @Deonis, разрешите немного наглости) Можно Вас попросить показать пример? Я просто еще слабоват в пхп, сейчас как начну пихать это SUM() и в хвост и в гриву:)
     
  4. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Код (Text):
    1. SELECT SUM(`summa`) AS `total` FROM `table_name`
     
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @smartCreate ещё при выводе товаров в цикле, можешь в отдельную переменную суммировать цены. А через SUM() ещё учитывай кол-во одного товара
     
  6. smartCreate

    smartCreate Новичок

    С нами с:
    4 ноя 2016
    Сообщения:
    122
    Симпатии:
    4
    Добрый день! Вчера весь вечер и сегодня пол дня уже пытаюсь что-то сделать с:
    Но нечего не выходит у меня(

    Возможно потому что я работаю на codignaiter.

    Внесение значений в таблицу у меня происходит вот таким образом:

    PHP:
    1. $array = array(
    2.         'btn_addCart' => $tabel_name['btn_addCart'], // первое значение, до "=>" это имя столбца в таблице, второе значение "$tabel_name['...']' єто значение которое записывается в строку
    3.         'title' => $tabel_name['title'],
    4.         'cost' => $tabel_name['cost'],
    5.         'summa' => $tabel_name['cost'],
    6.         'articul' => $tabel_name['articul'],
    7.         'img' => $tabel_name['img'],
    8.         'result' => 'SELECT SUM(`summa`) AS `total` FROM $getName', // здесь же в строку заноситься не значение которое должно вывести функция "SUM()" а просто весь этот текст SELECT SUM(`summa`) AS `total` FROM $getName
    9. );
    Помогите пожалуйста разобраться что я делаю не так
     
  7. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    @smartCreate, строка запроса - она и есть строка и не больше. Запрос-то нужно выполнить. Я не знаю каким-расширением вы пользуетесь, но это может быть как старая функция mysql_query, так и функции из актуальных расширений: mysqli_query (в MySQLi) или из PDO - PDO::query, PDO:: prepare + PDOStatement::execute и т.д.
     
  8. smartCreate

    smartCreate Новичок

    С нами с:
    4 ноя 2016
    Сообщения:
    122
    Симпатии:
    4
    Понял Вас, исправил свою ошибку, переделал в:

    PHP:
    1. $array = array(
    2.                 'btn_addCart' => $tabel_name['btn_addCart'],
    3.                 'title' => $tabel_name['title'],
    4.                 'cost' => $tabel_name['cost'],
    5.                 'summa' => $tabel_name['cost'],
    6.                 'result' => mysql_query('SELECT SUM(`summa`) AS `total` FROM $getName'),
    7.                 'articul' => $tabel_name['articul'],
    8.                 'img' => $tabel_name['img'],
    9.                 'number' => '1'
    10. );
    Теперь в result заноситься 0, при то что не одно и значений в столбце "сумма" не равно нулю.

    Быть может я просто изначально не то делаю? Может есть способ реализовать необходимый мне алгоритм по другому?
     
  9. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Точно подмечено! Изначально нужно было изучить самые азы работы с БД.
    Всё-таки вы выбрали устаревший способ mysql_*, что не есть гуд. Как бы там ни было, после mysql_query нужно переходить ко второму шагу mysql_fetch_assoc. Но я настоятельно рекомендую переключить внимание на другое расширение MySQLi. Тем более, что вы только начали обучение.
     
  10. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    попробуйте через цикл. Получится чтото типо того. Переделайте только под себя:

    Код (Text):
    1. $a = mysql_query("SELECT summa FROM `table_name` WHERE `условие` ");
    2. $b = mysql_fetch_array('$a');
    3.  
    4. $c=0;
    5. while($b = mysql_fetch_array('$a')){
    6. $d = $b['summa'];
    7.  
    8. $c = $c +$d;
    9. }
    ну а тут выводим результат.

    Чет типо того получается. Но могу где-то ошибиться. Голова сутра плохо работает
     
  11. smartCreate

    smartCreate Новичок

    С нами с:
    4 ноя 2016
    Сообщения:
    122
    Симпатии:
    4
    @ArsNet, доброго дня! Жаль что раньше сюда не зашел) вопрос уже давно решен, но благодарю за участие)