【问题标题】:How to add here sorting by date?如何在此处添加按日期排序?
【发布时间】:2020-07-31 10:20:12
【问题描述】:

这是一个特定等级的代码,问题是当一个人被添加到与过去相同的点数时,他是第一名。 例如:我得了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'");

要添加类似按日期过滤的内容,如何实现? 希望你能理解我

【问题讨论】:

标签: php sql wordpress filter


【解决方案1】:
$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 ");

【讨论】:

  • 如果“array_filter”和“arsort”的底部对这个表进行排序有什么区别?请解释一下。
  • 请在您的答案中添加一些解释,以便其他人可以从中学习。还要解释为什么你发布一个对 SQL 注入开放的查询
【解决方案2】:

我认为最简单的方法是将order by 添加到您的查询中。 示例:SELECT * FROM table ORDER BY points DESC, date DESCSELECT * FROM table ORDER BY points DESC, id DESC 如果您有自动增量 ID,它也应该可以工作。

【讨论】:

  • 如果“array_filter”和“arsort”的底部对这个表进行排序有什么区别?请解释一下。
  • 如果可以在sql查询中以非常简单的方式声明排序顺序,为什么要尝试在PHP中排序?
  • 这段代码我不擅长,不知道怎么实现。我需要一个解决方案。此外,这里使用了几个数据库,而不是一个。
  • 告诉我你在表格中有哪一列,你想显示哪一列以及你想如何排序。
  • 我想显示列 - 表中的名称 - bp_groups 它是团队。而且,我们的用户有积分,他们在一个组中,我们检查组中的人并总结他们的评分。接下来,我们在表格中显示评分类型。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-19
  • 2017-03-16
  • 1970-01-01
  • 2019-05-03
  • 1970-01-01
  • 2013-01-14
  • 1970-01-01
相关资源
最近更新 更多