get_results不显示最后一条记录

时间:2016-12-07 10:52:23

标签: php mysql wordpress

我在显示数据库中的数据方面遇到了一些问题。 Get_results显示数据库中的所有记录,除了添加的最后一个记录。我也有分页功能,如果我删除它,然后正确显示所有内容。

代码:

global $wpdb;
                $per_page = 10;
                $page = isset( $_GET['cpage'] ) ? abs( (int) $_GET['cpage'] ) : 1;
                if ($page > 1) {
                $offset = $page * $per_page - $per_page;
                } else {
                $offset = $page;
                }


                $show_ad=$wpdb->get_results("SELECT * FROM advertisement WHERE active=1 ORDER BY data DESC limit $per_page offset $offset");
        $total = $wpdb->get_var("SELECT count(id) from advertisement WHERE active=1 ORDER BY data DESC");

~~~~~~
<?php
        echo '<div class="pagination">';
                echo paginate_links(array(
    'base' => add_query_arg('cpage', '%#%'),
    'format' => '',
    'prev_text' => __('&laquo;'),
    'next_text' => __('&raquo;'),
    'total' => ceil($total / $per_page),
    'current' => $page
));
echo '</div>';
?>

1 个答案:

答案 0 :(得分:1)

它没有显示最后一条记录,因为第一行以index:0

开头

EI:如果您当前页面为1,但此代码中的偏移量为1

offset : 1 which mean starts at index 1 and index 0 will not be included

row 1: 0 - not
row 2: 1 - displayed
row 3: 2 - displayed
row 4: 3 - displayed
row 5: 4 - displayed
row 6: 5 - displayed
row 7: 6 - displayed
row 8: 7 - displayed
row 9: 8 - displayed
row 10: 9 - displayed
row 11: 10 - displayed

要解决这个问题,请将您的偏移量减去1

$per_page = 10;
$page = isset( $_GET['cpage'] ) ? abs( (int) $_GET['cpage'] ) : 1;
if ($page > 1) {
    $offset = $page * $per_page - $per_page;
} else {
    $offset = $page;
}
$offset = $offset - 1;