Tuesday, 9 October 2018

Separate months inside SQL output

I have this SQL statement:

SELECT id, name, date FROM money_month WHERE user_id = '{$_SESSION['id']}';

It returns me rows like that:

| id | name   | date       |
|----|--------|------------|
| 1  | Mike   | 2018-09-05 |
| 2  | Nelson | 2018-09-07 |
| 3  | Bity   | 2018-09-08 |
| 4  | Ory    | 2018-10-04 |

If I use Group by like:

SELECT id, name, date FROM money_month WHERE user_id = '{$_SESSION['id']}' GROUP BY YEAR(date), MONTH(date) ORDER BY date DESC;

it works, but shows only first row from each month, like this:

| id        | name | date       |
|-----------|------|------------|
| September |      |            |
| 1         | Mike | 2018-09-05 |
| October   |      |            |
| 4         | Ory  | 2018-10-04 |

Is possible to separate rows with months, to look like this?

| id        | name   | date       |
|-----------|--------|------------|
| September |        |            |
| 1         | Mike   | 2018-09-05 |
| 2         | Nelson | 2018-09-07 |
| 3         | Bity   | 2018-09-08 |
| October   |        |            |
| 4         | Ory    | 2018-10-04 |

My SQL output

$month = '';
    while($row = $result->fetch_assoc()) {


        if($month != $row["date"])
        {
            $month = substr($row["date"],5,2);
            if ($month == "10") { $output= "October"; }
            if ($month == "9") { $output= "September"; }

            echo $output;
        }

Trying to achieve someting like this: enter image description here

But my output looks like this: enter image description here



from Separate months inside SQL output

No comments:

Post a Comment