/    Sign up×
Community /Pin to ProfileBookmark

Paging the list of records

HI,
trying to give page numbers for the list of records from the database…
there are some 1000 records in the database so i want to display 15 records per page by giving page numbers and next button options. can anybody help me?…

to post a comment
PHP

3 Comments(s)

Copy linkTweet thisAlerts:
@SrWebDeveloperJun 07.2010 — Follow this really excellent tutorial on adding pagination for MySQL results in PHP:

http://www.phpeasystep.com/phptu/29.html

-jim
Copy linkTweet thisAlerts:
@tirnaJun 07.2010 — another pagination script and sql script to create the demo database.

For the demo to work, just change the db connection settings at the top of the php script

[code=php]
<?php
session_start();
//----------------------------------------------------------------------------------------------------------------------
//connect to the database
$DBUserName = "root"; //database user account name
$DBPassword = ""; //database user account password

$DBName = "test"; //name of database

@$conn = mysql_connect("localhost",$DBUserName,$DBPassword) or die('<br />1-Cannot connect to the database at the moment.<br /><br />Please try again later.<br />'); //connect to mysql

@$isDbSelected = mysql_select_db($DBName, $conn) or die('<br />1-Cannot connect to the database at the moment.<br /><br />Please try again later.<br />'); //connect to the db
//----------------------------------------------------------------------------------------------------------------------
$linesPerPage = 4; //number of lines to print per page
//check if a page link was clicked
if(isset($_GET['txtPgNum']))
{
$_SESSION['currPage'] = $_GET['txtPgNum']; //txtPgNum comes from the page links
unset($_GET['txtPgNum']);
}
//check if either 'previous' or 'next' buttons were clicked
else if(isset($_GET['dir']))
{
$direction = $_GET['dir']; // -1 = prev page 1 = next page
unset($_GET['dir']);

$_SESSION['currPage'] = $_SESSION['currPage'] + $direction;
if($_SESSION['currPage'] < 1) $_SESSION['currPage'] = 1;
if($_SESSION['currPage'] > $_SESSION['totPages']) $_SESSION['currPage'] = $_SESSION['totPages'];

}
else //neither a page link or previous or next buttons were clicked. This must then be the first call to this page
{
$_SESSION['currPage'] = 1; //set current page = 1

//select all the records to work out max number of rows and number of pages needed
$query = 'select * from tblperson';
$rs = mysql_query($query,$conn) or die("<p>3-Server is busy.<br />Please try again later.</p>");
$totRows = mysql_num_rows($rs); //total number of rows to display
if($totRows%$linesPerPage == 0)
$totPages = $totRows/$linesPerPage;
else
$totPages = round(($totRows/$linesPerPage)+0.5); //total number of pages required

mysql_free_result($rs);

$_SESSION['totRows'] = $totRows;
$_SESSION['totPages'] = $totPages;
}

//calculate the first record number to retrieve from the DB for this page
$_SESSION['offset'] = ($_SESSION['currPage']*$linesPerPage)-$linesPerPage;

if($_SESSION['offset'] < 0) $_SESSION['offset'] = 0;
if($_SESSION['offset'] > $_SESSION['totRows']) $_SESSION['offset'] = $_SESSION['totRows'];
//------------------------------------------------------------
//Code to retrieve the rows to display on the current page
//------------------------------------------------------------
$query = 'select * from tblperson limit '.$_SESSION['offset'].','.$linesPerPage;
$rs = mysql_query($query,$conn) or die("<p>3-Server is busy.<br />Please try again later.</p>");
?>
<html>
<head>
<title>Pagination</title>
<style type="text/css">
<!--
body {
font-size: 10pt;
font-family: tahoma, arial, sans serif}
#page-links-container {
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px}
#page-links-container ul {
list-style-type: none}
#page-links-container ul li {
display: inline;
color: rgb(0,0,205);
padding: 3px 4px 3px 4px;
margin: 0px 0px 0px 6px}
#page-links-container ul li a {
text-decoration: none;
font-size: 10pt}
#page-links-container ul li a:hover {
text-decoration: underline}
#page-links-container ul li a:visited {
color: rgb(0,0,205);}
-->
</style>

</head>
<body>
<!-- Start of page links container -->
<div id="page-links-container">
<ul id="page-links">
<li id="liPrevPage"><a href="pagination.php?dir=-1" title="Click to view previous page">Previous</a></li>
<?php
for($i=1; $i<=$_SESSION['totPages']; $i=$i+1) {
echo '<li id="liPg'.$i.'"><a href="pagination.php?txtPgNum='.$i.'" title="Go to page '.$i.'">'.$i.'</a></li>';
}
?>
<li id="liNextPage"><a href="pagination.php?dir=1" title="Click to view next page">Next</a></li>
</ul>
</div>

<!-- end of page-links-container div -->
<!-- Code block to display the DB data from row $_SESSION['offset'] to row $_SESSION['offset']+$linesPerPage -->
<table>
<?php
while($row=mysql_fetch_assoc($rs))
{
echo '<tr><td>'.$row['fldPersonID'].'</td><td>'.$row['fldGivenName'].'</td><td>'.$row['fldFamilyName'].'</td></tr>';
}
mysql_free_result($rs);
mysql_close($conn);
?>
</table>
<!-- End of code block to display the DB data from row $_SESSION['offset'] to row $_SESSION['offset']+$linesPerPage -->
<?php
//hide or display the 'previous' and 'next' buttons as required
if($_SESSION['totPages'] == 1)
echo '<script type="text/javascript">document.getElementById("page-links-container").style.display="none";</script>';
if($_SESSION['currPage'] == 1)
echo '<script type="text/javascript">document.getElementById("liPrevPage").style.visibility="hidden";</script>';
else
echo '<script type="text/javascript">document.getElementById("liPrevPage").style.visibility="visible";</script>';

if($_SESSION['currPage'] == $_SESSION['totPages'])
echo '<script type="text/javascript">document.getElementById("liNextPage").style.visibility="hidden";</script>';
else
echo '<script type="text/javascript">document.getElementById("liNextPage").style.visibility="visible";</script>';

//highlight the current page's page link
echo '<script type="text/javascript">document.getElementById("liPg'.$_SESSION['currPage'].'").style.backgroundColor="rgb(200,200,200)";</script>';
echo '<script type="text/javascript">document.getElementById("liPg'.$_SESSION['currPage'].'").style.border="1px solid rgb(0,0,0)";</script>';
?>
</body>
</html>
[/code]


[CODE]
CREATE TABLE tblperson (
fldPersonID int(11) NOT NULL AUTO_INCREMENT,
fldFamilyName varchar(20) DEFAULT NULL,
fldGivenName varchar(20) DEFAULT NULL,
PRIMARY KEY (fldPersonID)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;
/*Data for the table tblperson */
insert into tblperson(fldPersonID,fldFamilyName,fldGivenName) values (1,'Sui','Steven');
insert into tblperson(fldPersonID,fldFamilyName,fldGivenName) values (2,'Student','Mary');
insert into tblperson(fldPersonID,fldFamilyName,fldGivenName) values (3,'Student','Sam');
insert into tblperson(fldPersonID,fldFamilyName,fldGivenName) values (4,'Malik','Moore');
insert into tblperson(fldPersonID,fldFamilyName,fldGivenName) values (5,'Soo','Malinda');
insert into tblperson(fldPersonID,fldFamilyName,fldGivenName) values (6,'flinstone','fred');
insert into tblperson(fldPersonID,fldFamilyName,fldGivenName) values (7,'rubble','barney');
insert into tblperson(fldPersonID,fldFamilyName,fldGivenName) values (8,'flinstone','wilma');
insert into tblperson(fldPersonID,fldFamilyName,fldGivenName) values (9,'flinstone','pebbles');
insert into tblperson(fldPersonID,fldFamilyName,fldGivenName) values (10,'smart','maxwell');
insert into tblperson(fldPersonID,fldFamilyName,fldGivenName) values (11,'Soo','Malinda');
[/CODE]
Copy linkTweet thisAlerts:
@ravichegantiauthorJun 09.2010 — <?php

session_start();

//----------------------------------------------------------------------------------------------------------------------

//connect to the database

$DBUserName = "root"; //database user account name

$DBPassword = ""; //database user account password


$DBName = "test"; //name of database

@$conn = mysql_connect("localhost",$DBUserName,$DBPassword) or die('<br />1-Cannot connect to the database at the moment.<br /><br />Please try again later.<br />'); //connect to mysql


@$isDbSelected = mysql_select_db($DBName, $conn) or die('<br />1-Cannot connect to the database at the moment.<br /><br />Please try again later.<br />'); //connect to the db

//----------------------------------------------------------------------------------------------------------------------

$linesPerPage = 4; //number of lines to print per page

//check if a page link was clicked

if(isset($_GET['txtPgNum']))

{

$_
SESSION['currPage'] = $_GET['txtPgNum']; //txtPgNum comes from the page links

unset($_
GET['txtPgNum']);

}

//check if either 'previous' or 'next' buttons were clicked

else if(isset($_GET['dir']))

{

$direction = $_
GET['dir']; // -1 = prev page 1 = next page

unset($_GET['dir']);


$_
SESSION['currPage'] = $_SESSION['currPage'] + $direction;

if($_
SESSION['currPage'] < 1) $_SESSION['currPage'] = 1;

if($_
SESSION['currPage'] > $_SESSION['totPages']) $_SESSION['currPage'] = $_SESSION['totPages'];


}

else //neither a page link or previous or next buttons were clicked. This must then be the first call to this page

{

$_
SESSION['currPage'] = 1; //set current page = 1

//select all the records to work out max number of rows and number of pages needed
$query = 'select * from tblperson';
$rs = mysql_query($query,$conn) or die("<p>3-Server is busy.<br />Please try again later.</p>");
$totRows = mysql_num_rows($rs); //total number of rows to display
if($totRows%$linesPerPage == 0)
$totPages = $totRows/$linesPerPage;
else
$totPages = round(($totRows/$linesPerPage)+0.5); //total number of pages required

mysql_free_result($rs);


$_SESSION['totRows'] = $totRows;

$_
SESSION['totPages'] = $totPages;

}


//calculate the first record number to retrieve from the DB for this page

$_SESSION['offset'] = ($_SESSION['currPage']*$linesPerPage)-$linesPerPage;


if($_SESSION['offset'] < 0) $_SESSION['offset'] = 0;

if($_SESSION['offset'] > $_SESSION['totRows']) $_SESSION['offset'] = $_SESSION['totRows'];

//------------------------------------------------------------

//Code to retrieve the rows to display on the current page

//------------------------------------------------------------

$query = 'select *
from tblperson limit '.$_SESSION['offset'].','.$linesPerPage;

$rs = mysql_query($query,$conn) or die("<p>3-Server is busy.<br />Please try again later.</p>");

?>

<html>

<head>

<title>Pagination</title>

<style type="text/css">

<!--

body {

font-size: 10pt;

font-family: tahoma, arial, sans serif}

#page-links-container {

margin: 0px 0px 0px 0px;

padding: 0px 0px 0px 0px}

#page-links-container ul {

list-style-type: none}

#page-links-container ul li {

display: inline;

color: rgb(0,0,205);

padding: 3px 4px 3px 4px;

margin: 0px 0px 0px 6px}

#page-links-container ul li a {

text-decoration: none;

font-size: 10pt}

#page-links-container ul li a:hover {

text-decoration: underline}

#page-links-container ul li a:visited {

color: rgb(0,0,205);}

-->

</style>

</head>

<body>

<!-- Start of page links container -->

<div id="page-links-container">

<ul id="page-links">

<li id="liPrevPage"><a href="pagination.php?dir=-1" title="Click to view previous page">Previous</a></li>

<?php

for($i=1; $i<=$_SESSION['totPages']; $i=$i+1) {

echo '<li id="liPg'.$i.'"><a href="pagination.php?txtPgNum='.$i.'" title="Go to page '.$i.'">'.$i.'</a></li>';

}

?>

<li id="liNextPage"><a href="pagination.php?dir=1" title="Click to view next page">Next</a></li>

</ul>

</div>


<!-- end of page-links-container div -->

<!-- Code block to display the DB data from row $_
SESSION['offset'] to row $_SESSION['offset']+$linesPerPage -->

<table>

<?php

while($row=mysql_fetch_assoc($rs))

{

echo '<tr><td>'.$row['fldPersonID'].'</td><td>'.$row['fldGivenName'].'</td><td>'.$row['fldFamilyName'].'</td></tr>';

}

mysql_free_result($rs);

mysql_close($conn);

?>

</table>

<!-- End of code block to display the DB data from row $_
SESSION['offset'] to row $_SESSION['offset']+$linesPerPage -->

<?php

//hide or display the 'previous' and 'next' buttons as required

if($_
SESSION['totPages'] == 1)

echo '<script type="text/javascript">document.getElementById("page-links-container").style.display="none";</script>';

if($_SESSION['currPage'] == 1)

echo '<script type="text/javascript">document.getElementById("liPrevPage").style.visibility="hidden";</script>';

else

echo '<script type="text/javascript">document.getElementById("liPrevPage").style.visibility="visible";</script>';

if($_SESSION['currPage'] == $_SESSION['totPages'])

echo '<script type="text/javascript">document.getElementById("liNextPage").style.visibility="hidden";</script>';

else

echo '<script type="text/javascript">document.getElementById("liNextPage").style.visibility="visible";</script>';

//highlight the current page's page link

echo '<script type="text/javascript">document.getElementById("liPg'.$_SESSION['currPage'].'").style.backgroundColor="rgb(200,200,200)";</script>';

echo '<script type="text/javascript">document.getElementById("liPg'.$_
SESSION['currPage'].'").style.border="1px solid rgb(0,0,0)";</script>';

?>

</body>

</html>
×

Success!

Help @ravicheganti spread the word by sharing this article on Twitter...

Tweet This
Sign in
Forgot password?
Sign in with TwitchSign in with GithubCreate Account
about: ({
version: 0.1.9 BETA 5.4,
whats_new: community page,
up_next: more Davinci•003 tasks,
coming_soon: events calendar,
social: @webDeveloperHQ
});

legal: ({
terms: of use,
privacy: policy
});
changelog: (
version: 0.1.9,
notes: added community page

version: 0.1.8,
notes: added Davinci•003

version: 0.1.7,
notes: upvote answers to bounties

version: 0.1.6,
notes: article editor refresh
)...
recent_tips: (
tipper: @Yussuf4331,
tipped: article
amount: 1000 SATS,

tipper: @darkwebsites540,
tipped: article
amount: 10 SATS,

tipper: @Samric24,
tipped: article
amount: 1000 SATS,
)...