2016-12-07 4 views
0

У меня есть небольшая проблема с отображением данных из базы данных. Get_results показывает все записи из базы данных, кроме последней добавленной. У меня также есть функции для разбивки на страницы, и если я удалю его, то отобразится все правильно.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>'; 
?> 
+0

Может быть из-за LIMIT & OFFSET, только с ограниченным количеством записей. –

+0

Попробуйте добавить 1 к вашему смещению: '$ offset = $ page * $ per_page - $ per_page + 1;' Это больше для отладки, чем лучшее решение –

+0

ваше значение по умолчанию '$ offset' должно быть' 0 ' – Beginner

ответ

1

Он не отображает последнюю запись, так как первая строка начинается с индексом: 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; 
+0

Я вижу. Он работает, спасибо! :) – ZYWIEC

+1

@ ZYWIEC возможно, это просто вы не индексы строк (строк), которые начинаются с индекса 0 :) – Beginner

Смежные вопросы