Как добавить сюда сортировку по дате? - PullRequest
0 голосов
/ 17 апреля 2020

Это код определенного рейтинга, проблема в том, что когда добавляется человек с таким же количеством очков, как и в прошлом, он занимает первое место. Например: я получил 5 баллов и занял первое место, когда после меня вы получили те же 5 баллов, вы получили первое место. И мне нужно сохранить время получения. Я получил это первым, значит мое место первое.

function game_plugin_function()
{

global $wpdb;

$table_group = $wpdb->prefix . "bp_groups"; // group
$table_members = $wpdb->prefix . "bp_groups_members"; // group members
$table_matauser = $wpdb->prefix . "usermeta"; // user meta

$groups_array = array();

$sql_groups = $wpdb->get_results("SELECT * FROM $table_group");
foreach($sql_groups as $sql_groups_new)
{
    $a_group_id = $sql_groups_new->id;
    $a_group_name = $sql_groups_new->name;

    $sql_members = $wpdb->get_results("SELECT * FROM $table_members where group_id = '$a_group_id'");
    foreach($sql_members as $sql_members_new)
    {
        $a_member_id = $sql_members_new->user_id;

        $sql_pointer = $wpdb->get_results("SELECT meta_value FROM $table_matauser where user_id = '$a_member_id' AND meta_key = '_gamipress_star_points' ");
        foreach($sql_pointer as $sql_pointer_new)
        {
            $a_groups_points = $sql_pointer_new->meta_value;
            $groups_array[$a_group_name] += $a_groups_points;
        }
    }
}
array_filter($groups_array);
arsort($groups_array);
$icount_rank = 0;
?>
<table>
    <tr>
        <th>
            Rank
        </th>
        <th>
            Group    
        </th>
        <th>
            Points
        </th>
    </tr>
    <?php
    foreach($groups_array as $groups_array_title => $groups_array_points)
    {
        $icount_rank++;
        echo '<tr>';
            echo '<td>';
                echo $icount_rank;
            echo '</td>';
            echo '<td>';
                echo $groups_array_title;
            echo '</td>';
            echo '<td>';
                echo $groups_array_points;
            echo '</td>';
        echo '</tr>';
    }
    ?>
</table>
<?php  
}
?>

Я хочу добавить что-то вроде этого здесь:

$sql_date = $wpbd->get_results("SELECT $date FROM $table_date where user_id = '$a_member_id' AND trigger_type = 'gamipress_earn_points'");

Чтобы добавить что-то вроде фильтра по дате, как это реализовать ? Я надеюсь, вы понимаете меня

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Я думаю, что самый простой способ - добавить order by к вашему запросу. Пример: SELECT * FROM table ORDER BY points DESC, date DESC или SELECT * FROM table ORDER BY points DESC, id DESC, если у вас есть идентификатор автоинкремента, он тоже должен работать.

0 голосов
/ 17 апреля 2020
$sql_date = $wpbd->get_results("SELECT * FROM table_date where user_id = '$a_member_id' AND trigger_type = 'gamipress_earn_points' ORDER BY datetime_field DESC ");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...