Jump to content

Pagination


DarthJawns

Recommended Posts

1 hour ago, DarthJawns said:

Does anyone have a good tutorial or reference for pagination in PHP?  Looking to incorporate pagination for a few pages on my site

Another option is Kaminari which has pretty good performance in comparison to pagination. Its a tool I use for my ruby on rails site. I am not sure if it supports php though.

Link to comment
Share on other sites

  • 1 month later...

How many things on the page:
 

$perpage = 100;

Then put this after to get the page number from the URL
 

if (isset($_GET["page"])) { $page  = $_GET["page"]; } else { $page=1; }; 
$start_from = ($page-1) * $perpage; 

This add this to the end of the select query of things youre paginating.
 

LIMIT $start_from, $perpage

Then you just need to gather the links to the pages (in another query but without the limit). 

Link to comment
Share on other sites

15 hours ago, Hare said:

How many things on the page:
 


$perpage = 100;

Then put this after to get the page number from the URL
 


if (isset($_GET["page"])) { $page  = $_GET["page"]; } else { $page=1; }; 
$start_from = ($page-1) * $perpage; 

This add this to the end of the select query of things youre paginating.
 


LIMIT $start_from, $perpage

Then you just need to gather the links to the pages (in another query but without the limit). 

You have to be careful with a query like that.  You should be validating that it is more than just set otherwise you could potentially get yourself into SQL injection territories. Adding in an "intval" could help with that just to 100% make the string an integer before being placed in your code.

I've adjusted your code block to also remove the "else" section, because you can easily define it above, and won't run into scoping issues.

$page = 1;

if (isset($_GET["page"]) && ($value = intval($_GET["page"]))) {
    $page  = $value;
}

$start_from = ($page-1) * $perpage; 

The caveat with this code, is it isn't going to do a "0-based", so your pages must start at 1 which is what you are doing anyways with the page - 1 part.

  • Like 1
Link to comment
Share on other sites

1 hour ago, judda said:

You have to be careful with a query like that.  You should be validating that it is more than just set otherwise you could potentially get yourself into SQL injection territories. Adding in an "intval" could help with that just to 100% make the string an integer before being placed in your code.

I've adjusted your code block to also remove the "else" section, because you can easily define it above, and won't run into scoping issues.


$page = 1;

if (isset($_GET["page"]) && ($value = intval($_GET["page"]))) {
    $page  = $value;
}

$start_from = ($page-1) * $perpage; 

The caveat with this code, is it isn't going to do a "0-based", so your pages must start at 1 which is what you are doing anyways with the page - 1 part.

Thank you, Judda! This looks great =D

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...