CREATE TABLE IF NOT EXISTS `pagination` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=22 ;
INSERT INTO `pagination` (`id`, `name`) VALUES
(1, 'one'),
(2, 'two'),
(3, 'three'),
(4, 'four'),
(5, 'five'),
(6, 'six'),
(7, 'seven'),
(8, 'eight'),
(9, 'nine'),
(10, 'ten'),
(11, 'eleven'),
(12, 'twelve'),
(13, 'thirteen'),
(14, 'fourteen'),
(15, 'fifteen'),
(16, 'sixteen'),
(17, 'seventeen'),
(18, 'eighteen'),
(19, 'nineteen'),
(20, 'twenty'),
(21, 'twenty one');
<?php
// LET'S SEE WHAT'S WRONG
// BUT DO NOT DISPLAY NOTICES
error_reporting(E_ALL ^ E_NOTICE);
// CONNECT TO THE DB
$link = mysql_connect("localhost","you","yourpass") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());
// WE NEED TO KNOW HOW MUCH RECORDS THERE ARE
$query = "select count(*) as recordcount from pagination";
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result) or die(mysql_error());
// NUMBER OF ALL ROWS
$numrows = $row['recordcount'];
// HERE WE SET THE NUMER OF ITEMS PER ONE PAGE
$ipp = 3;
// NUMBER OF ALL PAGES
// WE USE CEIL SO IF THE RECORD COUNT
// IS - FOR EXAMPLE - 11 WE GET 3 PAGES
$pagecount = ceil($numrows / $ipp);
echo"We have ".$pagecount." pages<br />";
// DISPLAY THE PAGES LINKS
for($i=1;$i<=$pagecount;$i++){
echo"<a href=\"index.php?page=".$i."\">$i</a> | ";
}
// THE CURRENT PAGE NUMBER FROM GET VARIABLE
// IF NOT SET - IT'S FIRST
$page = 0;
if(empty($_GET[page]) || !isset($_GET[page])) $page = 1;
else $page = $_GET[page];
// WHERE ARE WE ?
echo"<br /><br />current page: $page<br /><br />";
// STARTRECORD IS USED FOR THE MYSQL QUERY
// SO WE KNOW WHERE WE CAN START FROM
// LIMIT WITH IPP (ITEMS PER PAGE)
if(!empty($page)) $startrecord = ($page-1)*$ipp;
else $startrecord = 0;
$query = "select * from pagination limit $startrecord,$ipp";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo"<div>$row[id], $row[name]</div>";
}
// THIS IS THE VALUE FOR THE NUMBER OF
// NEXT AND PREVIOUS PAGES DISPLAYED IN
// THE DYNAMIC PANEL
$margin = 2;
// THE DYNAMIC PANEL
echo"<br /><div>";
echo"Page ";
if($page == 1);
else
{
$prev = $page - 1;
echo" <a href=\"index.php?page=1\">first</a> ";
echo" <a href=\"index.php?page=$prev\">prev</a> ";
}
if($page-$margin <= 0) $start = 1; else $start = $page - $margin;
if($page+$margin > $pagecount) $last = $pagecount; else $last = $page + $margin;
for($i=$start;$i<=$last;$i++){
// SHOW THE CURRENT PAGE WITH DIFFERENT FORMATTING
if($i == $page)
echo" <a href=\"index.php?page=$i\" style=\"font-weight: bold;\">$i</a> ";
else
echo" <a href=\"index.php?page=$i\">$i</a> ";
}
if($page == $pagecount);
else
{
$next = $page + 1;
echo" <a href=\"index.php?page=$next\">next</a> ";
echo" <a href=\"index.php?page=$pagecount\">last</a> ";
}
echo"</div>";
?>
error_reporting(E_ALL ^ E_NOTICE);
$link = mysql_connect("localhost","you","yourpass") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());
$query = "select count(*) as recordcount from pagination";
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result) or die(mysql_error());
$numrows = $row['recordcount'];
$ipp = 3;
$pagecount = ceil($numrows / $ipp);
echo"We have ".$pagecount." pages<br />";
for($i=1;$i<=$pagecount;$i++){
echo"<a href=\"index.php?page=".$i."\">$i</a> | ";
}
if(empty($_GET[page]) || !isset($_GET[page])) $page = 1;
else $page = $_GET[page];
echo"<br /><br />current page: $page<br /><br />";
if(!empty($page)) $startrecord = ($page-1)*$ipp;
else $startrecord = 0;
$query = "select * from pagination limit $startrecord,$ipp";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo"<div>$row[id], $row[name]</div>";
}
if($page == 1);
else
{
$prev = $page - 1;
echo" <a href=\"index.php?page=1\">first</a> ";
echo" <a href=\"index.php?page=$prev\">prev</a> ";
}
if($page-$margin <= 0) $start = 1; else $start = $page - $margin;
if($page+$margin > $pagecount) $last = $pagecount; else $last = $page + $margin;
for($i=$start;$i<=$last;$i++){
// SHOW THE CURRENT PAGE WITH DIFFERENT FORMATTING
if($i == $page)
echo" <a href=\"index.php?page=$i\" style=\"font-weight: bold;\">$i</a> ";
else
echo" <a href=\"index.php?page=$i\">$i</a> ";
}
if($page == $pagecount);
else
{
$next = $page + 1;
echo" <a href=\"index.php?page=$next\">next</a> ";
echo" <a href=\"index.php?page=$pagecount\">last</a> ";
}
Have a question about something in this article? You can receive help directly from the article author. Sign up for a free trial to get started.
Comments (2)
Commented:
Just go for a grid based implementation where you can make thing possible for all kind of your stuff.
"flexigrid"
which is the one will have pagination,filters,searche
Commented: