2016-12-07 13 views
0

Ich habe ein kleines Problem mit der Anzeige von Daten aus der Datenbank. Get_results zeigt alle Datensätze aus der Datenbank mit Ausnahme der zuletzt hinzugefügten. Ich habe auch Funktionen für die Paginierung und wenn ich es lösche, dann zeigt alles richtig an.get_results zeigt nicht den letzten Datensatz

Code:

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

Kann wegen LIMIT & OFFSET, nur begrenzte Datensätze angezeigt werden. –

+0

Probieren Sie es aus, indem Sie 1 zu Ihrem Offset hinzufügen: '$ offset = $ page * $ per_page - $ per_page + 1;' Dies ist mehr zu debuggen als die beste Lösung –

+0

Ihr Standardwert von $ offset muss '0 sein ' – Beginner

Antwort

1

Es ist nicht der letzte Datensatz nicht angezeigt werden, da die erste Zeile mit Index beginnt: 0

EI: Wenn die aktuelle Seite 1 ist, aber Ihr in diesem Code-Offset 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 

zu lösen, dass Ihre subtrahieren Offset 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

Ich sehe. Es funktioniert, danke! :) – ZYWIEC

+1

@ZYWIEC vielleicht ist es nur Sie nicht die Indizes der Zeile (n), die mit Index 0 beginnt :) – Beginner

Verwandte Themen