Создание отчета с данными из таблицы базы данных MySQL, которые могут быть отфильтрованы пользователем на внешнем интерфейсе. - PullRequest
0 голосов
/ 02 мая 2018

У меня возникли проблемы с проектом, над которым я работаю, в отношении отчета, показывающего активность пользователя, который я храню в таблице mysql db. Сохраняемыми данными об активности пользователя являются отметка времени, идентификатор пользователя и тип действия. Во внешнем интерфейсе таблицы отображаются в каждой строке пользователя и суммируют типы действий в каждом столбце, над которыми я в настоящее время работаю.

Я бы хотел добавить в интерфейсную опцию, позволяющую пользователю фильтровать даты, с которых извлекаются данные (на основе отметки времени), например, фильтр «последние 7 дней, последние 30 дней, последние». 60 дней и т. Д. ", Но я не уверен, каким образом я сначала отобразил бы эту информацию, а затем имел возможность фильтровать по дате.

Все, что я построил, в настоящее время работает над Wordpress (поэтому я часто использую php, но не уверен, что это лучший способ сделать это или мне следует использовать js).

Любое предложение или толчок в правильном направлении приветствуется!

Ниже приведен общий пример кода

<table class="activityreport">
    <thead>
        <tr class="table100-head">
            <th class="column1">User</th>
            <th class="column1">Activity 1</th>
            <th class="column1">Activity 2</th>
            <th class="column1">Activity 3</th>
            <th class="column1">Activity 4</th>
            <th class="column1">Total Activities</th>
        </tr>
    </thead>
    <tbody>

<?php 
    global $wpdb;   
    $table_name = $wpdb->prefix . "_activities";
    $activity_log = $wpdb->get_results( "SELECT * FROM " . $table_name );
    $users = get_users();
    foreach($users as $user){
        $total_activities = 0;
        $total_activity1 = 0;
        $total_activity2 = 0;
        $total_activity3 = 0;
        $total_activity4 = 0;

        foreach($activity_log as $activity){
            if($activity->user_id == $user->ID){
                if($activity->activity_type == 'activity1'){
                    $total_activity1 += 1;
                }elseif($activity->activity_type == 'activity2'){
                    $total_activity2 += 1;
                }elseif($activity->activity_type == 'activity3'){
                    $total_activity3 += 1;
                }elseif($activity->activity_type == 'activity4'){
                    $total_activity4 += 1;
                }
            }else{}
            $total_activities = $total_activity1 + $total_activity2 +$total_activity3 + $total_activity4;

?>

<tr>
    <td><?php echo $user->first_name; ?></td>
    <td><?php echo $total_activity1; ?></td>
    <td><?php echo $total_activity2; ?></td>
    <td><?php echo $total_activity3; ?></td>
    <td><?php echo $total_activity4; ?></td>
    <td><?php echo $total_activities; ?></td>
</tr>

<?php
        }
    }
?>
    </tbody>
</table>
...