За последние 24 часа нас посетили 21936 программистов и 1074 робота. Сейчас ищут 670 программистов ...

Выборка месяца и итоговой суммы за месяц.

Тема в разделе "PHP для новичков", создана пользователем Sofia, 14 май 2020.

  1. Sofia

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

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    Всем привет. Печально, что пришлось сделать огромный перерыв в php, а он так быстро забывается...
    Имеется вот такая табличка:
    [​IMG]
    Хочу на страничце вывести сортировку всех месяцев, должно вывести примерно так:
    2020-04
    2020-05
    (так та на самом деле хочу вывести ссылки, чтобы были вот так:
    Апрель 2020г.
    Май 2020г.
    вдруг кто подскажет как опитально это сделать)

    Но у меня выборка не происходит. Несколько лет назад возникал похожий вопрос, но там все было по другому... Одним словом попробовала вот так:
    PHP:
    1. $result = mysqli_query($db, "SELECT MONTH('date') 'amonth', YEAR('date') 'ayear' FROM money GROUP BY MONTH('date') ORDER BY 'amonth'")or die('error!');
    2. while ($row = mysqli_fetch_array($result)) {
    3.      echo $row['amonth'].".".$row['ayear']." - ".$row['astsum']."<br>";
    4. }
    Но выводит только точку.
    Подскажите пожалуйста решение.
     
  2. Sofia

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

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    Получилось вот так:
    PHP:
    1. $result = mysqli_query($db, "SELECT MONTH(`date`) `amonth`,YEAR(`date`) `ayear` FROM money GROUP BY YEAR(date), MONTH(date) DESC ORDER BY `amonth` DESC")or die('error!');
    2. while ($row = mysqli_fetch_array($result)) {
    3.      echo $row['amonth'].".".$row['ayear']."<br>";
    4. }
    Выводит:
    5.2020
    4.2020

    А вот теперь самое сложное. Надо как-то дополнительно вывести Суммы на начало месяца.
    т.е. как-то вывести вот так:
    5.2020 - На начало месяца сумма на счете равна 2000
    4.2020 - На начало месяца сумма на счете равна 0

    т.е. как-то в условии надо вписать сумму?
     
    #2 Sofia, 14 май 2020
    Последнее редактирование: 14 май 2020
  3. Sofia

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

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    У меня получилось вот так:
    PHP:
    1. $result6 = mysqli_query($db, "SELECT MONTH(`date`) `amonth`,YEAR(`date`) `ayear`, SUM(`money_in`) `asin`, SUM(`money_out`) `asout` FROM money GROUP BY YEAR(date), MONTH(date) DESC ORDER BY `amonth` DESC")or die('error!');
    2. while ($row6 = mysqli_fetch_array($result6)) {
    3.    $month6 = $row6['amonth'];
    4.    $result7 = mysqli_query($db, "SELECT SUM(`money_in`) `asin7`, SUM(`money_out`) `asout7` FROM money WHERE MONTH(DATE)<=$month6")or die('error7!');
    5.    $row7 = mysqli_fetch_array($result7);
    6.    $sum_mon7 = $row7['asin7']-$row7['asout7'];
    7.    echo $row6['amonth'].".".$row6['ayear']." Состояние счета на конец месяца: ".$sum_mon7."<br>";
    8.  }
    Переделала состояние счета на конец месяца. Код примитивный получился, но рабочий =)
     
  4. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    @Valick у тебя 94 балла предупреждений за неподобающее поведение. 100 — это бан.
    --- Добавлено ---
    @Sofia я подозреваю что когда данные покрывают более одного года, сортировка по `amonth` может дать неожиданный результат.
    Предлагаю такой вариант: формировать строку вида 2020-04 через DATE_FORMAT() , группировать и сортировать по ней же.
     
    Sofia нравится это.