Визуализация данных из базы данных MySQL внутри графика / диаграммы - PullRequest
0 голосов
/ 11 января 2020

Я создал массив, который извлекает данные из базы данных MySQL, и выглядит это так (упрощенно):

    Array
(
    [0] => Array
        (
            [amount] => 36.750000
            [date] => 2018-02-14 22:29:24
        )

    [1] => Array
        (
            [amount] => 44.250000
            [date] => 2018-05-21 09:39:09
        )

    [2] => Array
        (
            [amount] => 54.750000
            [date] => 2018-07-13 12:58:22
        )

    [3] => Array
        (
            [amount] => 54.750000
            [date] => 2018-07-16 11:14:37
        )

    [4] => Array
        (
            [amount] => 21.750000
            [date] => 2018-10-27 23:52:00
        )    

)

На данный момент я не знаю, как дополнительно изменить array в monthly разделах, а затем отобразите данные (используя implode) и сделайте их читаемыми внутри chart.js, так что это будет выглядеть так:

// January - December {year}
var Sales = [0,1,0,0,1,0,2,0,0,1,0,0];
var Earnings = [0,36.75,0,0,44.25,0,109.50,0,0,21.75,0,0];

Любой пример кода, который мне поможет в правильном направлении очень ценится.

РЕДАКТИРОВАТЬ (2): Для тех, кто находится в подобной ситуации, я нашел хорошее решение.

Я использовал основы c sql команда для получения значений, упомянутых выше. Например,

$start_date = date( 'Y-m-d H:i:s', strtotime('first day of this year 00:00:00') );
$end_date = date( 'Y-m-d H:i:s', strtotime('last day of December this year 23:59:59') );

$query = $wpdb->prepare( "SELECT * FROM {$table} WHERE user_id = %d AND date_created >= %s AND date_created <= %s ORDER BY ID DESC", absint( $user_id ), $start_date, $end_date );

Но я обнаружил, что вы также можете использовать команду sql для создания массива, который автоматически подсчитывает для меня amount.

$query = $wpdb->prepare( "SELECT MONTH(date_created) AS month, count(*) AS total_sales, SUM(amount) AS total_earnings FROM {$table} WHERE user_id = %d  AND date_created >= %s AND date_created <= %s GROUP BY MONTH(date_created)", absint( $user_id ), $start_date, $end_date );

Тогда формируется новый массив, подобный приведенному ниже.

Array
(
    [0] => Array
        (
            [month] => 2
            [total_sales] => 1
            [total_earnings] => 36.750000

        )

    [1] => Array
        (
            [month] => 5
            [total_sales] => 1
            [total_earnings] => 44.250000
        )

    [2] => Array
        (
            [month] => 7
            [total_sales] => 2
            [total_earnings] => 109.500000
        )

    [3] => Array
        (
            [month] => 10
            [total_sales] => 1
            [total_earnings] => 21.750000
        )

)

После этого вам все еще нужно создать еще один массив, чтобы заполнить пустых месяцев и объединить их вместе. Тогда у вас будет полный рабочий массив, который может быть внутри диаграммы. js.

...