2011-01-09 11 views
0

die Paginierung ASC DESC zu zeigen ist:Paginierung Fehler

if($page == 1) { $pstart = 0; } else { $pstart = $page * $totalrows; } 
$pend = $pstart + $totalrows; 

und HTML-Code von ASC ist

<form action="<?=$_SERVER["SCRIPT_NAME"];?>" method="get"> 
    <div> 

    <a class="page-numbers" href="<?=$_SERVER["SCRIPT_NAME"];?>?p=<?=$page + 1;?>">Next</a> 
    <input class="page-numbers" name="p" type="text" value="<?=$page + 1;?>" /> <input class="page-numbers" type="submit" value="Jump" /> 
    </div> 

    </form> 

ich ASC Beiträge zeigen jetzt DESC DESC mit dieser SQL:

$sql = "SELECT posts.Tags as tags, posts.OwnerUserId as postsid, posts.Id as postid, posts.Body as body, posts.Title as title, users.Id as userid, users.DisplayName as usersname FROM posts JOIN users ON posts.OwnerUserId = users.Id WHERE posts.Id >= " . $pstart . " AND posts.Title != '' ORDER by posts.Id DESC LIMIT " . $totalrows; 

Welcher PHP-Code sollte ich ändern, um DESC zu ASC-Posts und Paginierung anzuzeigen, um die nächsten 10 Posts anzuzeigen

Antwort

1

Änderung der LIMIT Teil (Syntax LIMIT Offset, row_count)

$sql = "SELECT posts.Tags as tags, posts.OwnerUserId as postsid, posts.Id as postid, posts.Body as body, posts.Title as title, users.Id as userid, users.DisplayName as usersname FROM posts JOIN users ON posts.OwnerUserId = users.Id WHERE posts.Id >= " . $pstart . " AND posts.Title != '' ORDER by posts.Id DESC LIMIT " . (($page-1) * $totalrows) .",". $totalrows; 
+0

danke, es funktioniert – Dan

1

Sie können die SQL-LIMIT-Befehl verwenden, um sich auf 10 zu begrenzen & ein Offset übergeben. auch, Ihr Code if($page == 1) { $pstart = 0; } else { $pstart = $page * $totalrows; } $pend = $pstart + $totalrows;
ist falsch - für Seite 1, $ pstart wird 0, aber für Seite 2, $ sptart wird 20 sein, so dass Sie über Datensätze 10-19 überspringen.