2017-02-10 8 views
0

Ich bin neu in Paginierung, und ich habe es versucht. Es funktioniert teilweise. Meine Seitennummerierung bringt die korrekte Anzahl der Ergebnisse auf jeder Seite sowie die korrekte Anzahl der Seiten zur Anzeige. Aber das Problem ist, es zeigt die gleichen Ergebnisse auf jeder Seite. HierPHP- Seitennummerierung, gleiche Ergebnisse auf allen Seiten

ist der Code:

$rows = mysqli_num_rows($result); 
echo $rows; 
//Total row count. 


//Number of results we want displayed per page. 
$page_rows = 3; 
//Last page, page number. 
$last = ceil($rows/$page_rows); 
//Making sure that last page cannot be less than one. 
if($last < 1){ 
$last = 1; 
} 
//Establish pagenum variable; 
$pagenum = 1; 
//Get paenum variable from the URL if it exists. 
if(isset($_GET['pn'])){ 
$pagenum = preg_replace('#[^0-9]#', '', $_GET['pn']); 
} 
//Making sure the pagenum isn't below one. 
if($pagenum < 1){ 
$pagenum = 1; 
}else if($pagenum > $last){ 
$pagenum = $last; 
} 
//This sets the limit. 
$limit = 'LIMIT ' .($pagenum-1) * $page_rows .',' .$page_rows; 
//Establish the pagination controls. 
$paginationCtrls = ''; 
//If there is more than one page worth of results. 
if($last != 1){ 
if($pagenum > 1){ 
    $previous = $pagenum - 1; 
    $paginationCtrls .= '<a href = "'.$_SERVER['PHP_SELF'].'?pn='.$previous.'">Previous</a> &nbsp; &nbsp; '; 
    //Clickable links that should appear on the left. 
    for($i = $pagenum - 4; $i < $pagenum; $i++){ 
     if($i > 0){ 
      $paginationCtrls .='<a href = "'.$_SERVER['PHP_SELF'].'?pn='.$i.'">'.$i.'</a> &nbsp; '; 
     } 
    } 
} 
$paginationCtrls .= ''.$pagenum.' &nbsp; '; 
for($i = $pagenum+1; $i<= $last; $i++){ 
    $paginationCtrls .= '<a href="'.$_SERVER['PHP_SELF'].'?pn='.$i.'">'.$i.'</a> &nbsp; '; 
    if($i > $pagenum+4){ 
     break; 
    } 
} 
if($pagenum != $last){ 
    $next = $pagenum+1; 
    $paginationCtrls .= ' &nbsp; &nbsp; <a href="'.$_SERVER['PHP_SELF'].'?pn='.$next.'">Next</a>'; 
} 
} 
$sql = "SELECT * FROM blogdata2 ORDER BY id DESC ".$limit; 

ich auch diese während Abfrage versucht haben:

$sql = "SELECT * FROM blogdata2 ORDER BY id DESC $limit"; 

Aber keiner zu funktionieren scheint. Was könnte das Problem hier sein?

Vielen Dank für die Hilfe im Voraus.

+0

Führen Sie die Abfrage erneut aus, nachdem Sie '$ sql' ganz unten zugewiesen haben? – Barmar

+0

Da Sie bereits die gewünschten Ergebnisse in '$ result' haben, können Sie mit' mysqli_data_seek' zu der Zeile springen, mit der Sie beginnen möchten, anstatt eine weitere Abfrage mit 'LIMIT' durchzuführen. – Barmar

+0

Ja, ich führe die Abfrage unten aus, und ist es auch nicht in Ordnung LIMIT zu verwenden? Ist im Code etwas nicht in Ordnung? –

Antwort

0

Problem ist hier: $ last = ceil ($ rows/$ page_rows);

Machen Sie eine Logik, die die No-in-Limit-Abfrage erhöht.

Verwandte Themen