Не съм сигурен доколко това ще ви помогне, но
1.) Къде е дефиниран вашият $uid? Може би беше там и го пропуснах, защото имахте МНОГО код. Ако е бил дефиниран в контролер или друг тип файл на посредник, тогава може би, когато сте променили страниците, uid е неустановен?
2.) Ако използвате една и съща пагинация повече от веднъж, създайте я във функция.
Предполагам, че резултатите, които сте получили, са правилни с помощта на заявката, която използвате, единственият проблем с нея е, че не показва правилните резултати на други страници. Ако случаят е такъв, използвайте тази функция, която настроих. (Може да се наложи да го настроите сами, например страницата ви може да не чете domain.com/pg=3 като моята)
function Pagination($list, $limit){
global $pagination;
global $total_pages;
global $pg;
global $offset;
global $page_limit;
$page_limit = $limit;
global $total_results;
$total_results = $list;
global $offset;
// number of rows to show per page
// find out total pages
$total_pages = ceil($list / $limit);
// get the current page or set a default
if ($pagination) {
// cast var as int
$pg = $pagination;
} else {
// default page num
$pg = 1;
} // end if
// if current page is greater than total pages...
if ($pg > $total_pages || $pg == "last") {
// set current page to last page
$pg = $total_pages;
} // end if
// if current page is less than first page...
if ($pg <= 1 || $pg == "first") {
// set current page to first page
$pg = 1;
} // end if
// the offset of the list, based on current page
$offset = ($pg - 1) * $limit;
// get the info from the db
}
function PaginationLinks($url, $tab){
global $pg;
global $total_pages;
global $total_results;
global $page_limit;
global $offset;
$displayed_results = ($total_results - $offset);
if($displayed_results >= $page_limit && $total_results > $page_limit){
$displayed_results = $page_limit;
}
/****** build the pagination links ******/
// range of num links to show
$range = 5;
if($tab){
$tab = "?$tab";
}
// if not on page 1, don't show back links
if ($pg > 1) {
// show << link to go back to page 1
echo "<li class='pagination'><a href='$url/pg=first$tab'><<</a></li>";
// get previous page num
$prevpage = $pg - 1;
// show < link to go back to 1 page
echo "<li class='pagination'><a href='$url/pg=$prevpage$tab'><</a></li>";
} // end if
// loop to show links to range of pages around current page
for ($x = ($pg - $range); $x < (($pg + $range) + 1); $x++) {
// if it's a valid page number...
if (($x > 0) && ($x <= $total_pages)) {
// if we're on current page...
if ($x == $pg) {
// 'highlight' it but don't make a link
echo "<li class='current_page'>$x</li>";
// if not current page...
} else {
// make it a link
echo "<li class='pagination'><a href='$url/pg=$x$tab'>$x</a></li>";
} // end else
} // end if
} // end for
// if not on last page, show forward and last page links
if ($pg != $total_pages) {
// get next page
$nextpage = $pg + 1;
// echo forward link for next page
echo "<li class='pagination'><a href='$url/pg=$nextpage$tab'>></a></li>";
// echo forward link for lastpage
echo "<li class='pagination'><a href='$url/pg=last$tab'>>></a></li>";
} // end if
/****** end build pagination links ******/
echo "<div style='float:right; align: right; margin-top: 10px'>Displaying <font class='f2'>$displayed_results</font> of <font class='f2'>$total_results</font> results</div>";
} // end pagination links function
За да използвате: (Използвам основната таблица "потребители", защото е проста)
Напишете една заявка, за да получите общия брой редове за това, което търсите. Пример:
$getusers = mysql_query("SELECT * FROM users", $conn);
$total_users = mysql_num_rows($getusers)
$display_limit = "20" // display 20 users per page
след това използвайте първата функция.
Pagination($total_users, $display_limit);
след това изпълнете заявката отново, но този път задайте ограниченията, така че да се показват само 20 потребители на страница.
$getusers = mysql_query("SELECT * FROM users ORDER BY id DESC LIMIT $offset, $display_limit", $conn);
if($total_users == 0){
echo "There are no users at this time.";
}
else {
// for each user
while ($rowuserss = mysql_fetch_assoc($getusers)) {
// echo data
$user_id = $rowusers['id'];
$username = $rowusers['username'];
// etc etc
}
След това, за да покажете връзките, използвайте втората заявка
PaginationLinks($url_to_go_to, $optional_tab_if_you_need_to_select_a_default_tab);
Това трябва да работи за ВСЯКАКВА заявка, без значение колко е сложна, стига заявката ви да е правилна отначало. Звучи ми, че вашата заявка е правилна, просто резултатите се показват на втората страница. По какъвто и да е начин, ако тази функция не работи за вас, все пак трябва да създадете своята пагинация в собствена функция, това е твърде много код, за да бъде изписан на повече от едно място.