Category Page / Pagination Issue...
- Brian Jester
- Beginner


- Joined: Jan 06, 2006
- Posts: 61
- Loc: Bayonne, New Jersey USA
- Status: Offline
Hi,
It's been long while since I have been on this forum. like to say glad to be back!
Any how, on to the pagination issue. What I am trying to accomplish is to make the following script echo out some categories from the db on a pagination page. The categories need to be output in a table where I can specify the number of columns as needed. The pagination code is below which basically has all the functionality I am looking for, it just needs to be checked for the errors. The end result should be to have the categories displayed with the option to limit the amount displayed / page.
For reference:
Database Name: categories
Table Name: categories
Row to output: category_name
<html>
<head> <title>Reunite My Site - Category Index</title>
<link rel="stylesheet" type="text/css" href="/css/default.css" media="screen">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
<meta name="Description" content="The World's Most Trusted Source For Online Advertising!">
<style type="text/css">
.gradient {
border: 1px solid #000;
background: #c5deea; /* old browsers */
background: -moz-linear-gradient(top, #c5deea 0%, #8abbd7 31%, #066dab 100%); /* firefox */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#c5deea), color-stop(31%,#8abbd7), color-stop(100%,#066dab)); /* webkit */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#c5deea', endColorstr='#066dab',GradientType=0 ); /* ie */
}
</style>
</head>
<body>
<script type="text/javascript" src="track.php?mode=js"></script>
<noscript><img src="track.php?mode=img" border="0" alt="" width="1" height="1"></noscript>
<div class="gradient">
<br>
<a name="Top" target="_TOP"> </a>
<div class="pagination white">
<!-- The Following Php Code is the pagination script, which will create pages based on the number of banners in the database. Ex: 2 columns (across) x 5 Rows (down) the page -->
<?php
/* Include your code to connect to DB. */
include('cats_db.php');
/* Your DB table name */
$tbl_name="categories";
// How many adjacent pages should be shown on each side?
$adjacents = 1;
/*
First get total number of rows in data table.
If you have a WHERE clause in your query, make sure you mirror it here.
*/
$query = "SELECT COUNT(*) as num FROM $tbl_name";
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages[num];
/* Setup vars for query. */
$targetpage = "categories.php"; //your file name (the name of this file)
$limit = 1; //how many items to show per page
$page = $_GET['page'];
if($page)
$st = ($page - 1) * $limit; //first item to display on this page
else
$st = 0; //if no page var is given, set st to 0
/* Get data. */
$sql = "SELECT category_name FROM $tbl_name LIMIT $st, $limit";
$result = mysql_query($sql);
/* Setup page vars for display. */
if ($page == 0) $page = 1; //if no page var is given, default to 1.
$prev = $page - 1; //previous page is page - 1
$next = $page + 1; //next page is page + 1
$lastpage = ceil($total_pages/$limit); //lastpage is = total pages / items per page, rounded up.
$lpm1 = $lastpage - 1; //last page minus 1
/*
Now we apply our rules and draw the pagination object.
We're actually saving the code to a variable in case we want to draw it more than once.
*/
$pagination = "";
if($lastpage > 1)
{
$pagination .= "";
//previous button
if ($page > 1)
$pagination.= "<a href=\"$targetpage?page=$prev\" class=\"current\"> previous </a>";
else
$pagination.= "<span class=\"disabled\"> previous </span>";
//pages
if ($lastpage < 7 + ($adjacents * 2)) //not enough pages to bother breaking it up
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"number\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?page=$counter\" class=\"number current\">$counter</a>";
}
}
elseif($lastpage > 5 + ($adjacents * 2)) //enough pages to hide some
{
//close to beginning; only hide later pages
if($page < 1 + ($adjacents * 2))
{
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"number\">$counter </span>";
else
$pagination.= "<a href=\"$targetpage?page=$counter\" class=\"number current\">$counter</a>";
}
$pagination.= "<span class=\"dots\">...</span>";
$pagination.= "<a href=\"$targetpage?page=$lpm1\" class=\"number\">$lpm1</a>";
$pagination.= "<a href=\"$targetpage?page=$lastpage\" class=\"number current\">$lastpage</a>";
}
//in middle; hide some front and some back
elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
{
$pagination.= "<a href=\"$targetpage?page=1\" class=\"number\">1</a>";
$pagination.= "<a href=\"$targetpage?page=2\" class=\"number\">2</a>";
$pagination.= "<span class=\"dots\">...</span>";
for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"number\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?page=$counter\" class=\"number current\">$counter</ a>";
}
$pagination.= "<span class=\"dots\">...</span>";
$pagination.= "<a href=\"$targetpage?page=$lpm1\" class=\"number\">$lpm1</a>";
$pagination.= "<a href=\"$targetpage?page=$lastpage\" class=\"number current\">$lastpage</a>";
}
//close to end; only hide early pages
else
{
$pagination.= "<a href=\"$targetpage?page=1\" class=\"number\">1</a>";
$pagination.= "<a href=\"$targetpage?page=2\" class=\"number\">2</a>";
$pagination.= "<span class=\"dots\">...</span>";
for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"number\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?page=$counter\" class=\"number current\">$counter</a>";
}
}
}
//next button
if ($page < $counter - 1)
$pagination.= "<a href=\"$targetpage?page=$next\" class=\"number current\"> next </a>";
else
$pagination.= "<span class=\"disabled\"> next </span>";
$pagination.= "</div>\n";
}
// End of Pagination Script //
?>
<!-- Table Output Code -->
<?php
$result = mysql_query("SELECT * FROM category_name") or die(mysql_error());
$numCols = 2;
$numPerCol = ceil(mysql_num_rows($result) / $numCols);
echo "<table valign=\"top\"><tr>";
for($col = 1; $col <= $numCols; $col++) {
echo "<td valign=\"top\">";
for($row = 0; $row < $numPerCol; $row++) {
$resultRow = mysql_fetch_assoc($result);
if($resultRow == false) {
break;
}
// while loop goes here
}
echo "</td>";
}
echo "</tr></table>";
?>
<?=$pagination?>
</div>
<div align="center" valign="absbottom"><a href="main.php#Top" target="_parent">Goto Top of Page</a>
</body>
</html>
Thank you for your help in advance!
Brian
It's been long while since I have been on this forum. like to say glad to be back!
Any how, on to the pagination issue. What I am trying to accomplish is to make the following script echo out some categories from the db on a pagination page. The categories need to be output in a table where I can specify the number of columns as needed. The pagination code is below which basically has all the functionality I am looking for, it just needs to be checked for the errors. The end result should be to have the categories displayed with the option to limit the amount displayed / page.
For reference:
Database Name: categories
Table Name: categories
Row to output: category_name
Code: [ Select ]
<html>
<head> <title>Reunite My Site - Category Index</title>
<link rel="stylesheet" type="text/css" href="/css/default.css" media="screen">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
<meta name="Description" content="The World's Most Trusted Source For Online Advertising!">
<style type="text/css">
.gradient {
border: 1px solid #000;
background: #c5deea; /* old browsers */
background: -moz-linear-gradient(top, #c5deea 0%, #8abbd7 31%, #066dab 100%); /* firefox */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#c5deea), color-stop(31%,#8abbd7), color-stop(100%,#066dab)); /* webkit */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#c5deea', endColorstr='#066dab',GradientType=0 ); /* ie */
}
</style>
</head>
<body>
<script type="text/javascript" src="track.php?mode=js"></script>
<noscript><img src="track.php?mode=img" border="0" alt="" width="1" height="1"></noscript>
<div class="gradient">
<br>
<a name="Top" target="_TOP"> </a>
<div class="pagination white">
<!-- The Following Php Code is the pagination script, which will create pages based on the number of banners in the database. Ex: 2 columns (across) x 5 Rows (down) the page -->
<?php
/* Include your code to connect to DB. */
include('cats_db.php');
/* Your DB table name */
$tbl_name="categories";
// How many adjacent pages should be shown on each side?
$adjacents = 1;
/*
First get total number of rows in data table.
If you have a WHERE clause in your query, make sure you mirror it here.
*/
$query = "SELECT COUNT(*) as num FROM $tbl_name";
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages[num];
/* Setup vars for query. */
$targetpage = "categories.php"; //your file name (the name of this file)
$limit = 1; //how many items to show per page
$page = $_GET['page'];
if($page)
$st = ($page - 1) * $limit; //first item to display on this page
else
$st = 0; //if no page var is given, set st to 0
/* Get data. */
$sql = "SELECT category_name FROM $tbl_name LIMIT $st, $limit";
$result = mysql_query($sql);
/* Setup page vars for display. */
if ($page == 0) $page = 1; //if no page var is given, default to 1.
$prev = $page - 1; //previous page is page - 1
$next = $page + 1; //next page is page + 1
$lastpage = ceil($total_pages/$limit); //lastpage is = total pages / items per page, rounded up.
$lpm1 = $lastpage - 1; //last page minus 1
/*
Now we apply our rules and draw the pagination object.
We're actually saving the code to a variable in case we want to draw it more than once.
*/
$pagination = "";
if($lastpage > 1)
{
$pagination .= "";
//previous button
if ($page > 1)
$pagination.= "<a href=\"$targetpage?page=$prev\" class=\"current\"> previous </a>";
else
$pagination.= "<span class=\"disabled\"> previous </span>";
//pages
if ($lastpage < 7 + ($adjacents * 2)) //not enough pages to bother breaking it up
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"number\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?page=$counter\" class=\"number current\">$counter</a>";
}
}
elseif($lastpage > 5 + ($adjacents * 2)) //enough pages to hide some
{
//close to beginning; only hide later pages
if($page < 1 + ($adjacents * 2))
{
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"number\">$counter </span>";
else
$pagination.= "<a href=\"$targetpage?page=$counter\" class=\"number current\">$counter</a>";
}
$pagination.= "<span class=\"dots\">...</span>";
$pagination.= "<a href=\"$targetpage?page=$lpm1\" class=\"number\">$lpm1</a>";
$pagination.= "<a href=\"$targetpage?page=$lastpage\" class=\"number current\">$lastpage</a>";
}
//in middle; hide some front and some back
elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
{
$pagination.= "<a href=\"$targetpage?page=1\" class=\"number\">1</a>";
$pagination.= "<a href=\"$targetpage?page=2\" class=\"number\">2</a>";
$pagination.= "<span class=\"dots\">...</span>";
for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"number\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?page=$counter\" class=\"number current\">$counter</ a>";
}
$pagination.= "<span class=\"dots\">...</span>";
$pagination.= "<a href=\"$targetpage?page=$lpm1\" class=\"number\">$lpm1</a>";
$pagination.= "<a href=\"$targetpage?page=$lastpage\" class=\"number current\">$lastpage</a>";
}
//close to end; only hide early pages
else
{
$pagination.= "<a href=\"$targetpage?page=1\" class=\"number\">1</a>";
$pagination.= "<a href=\"$targetpage?page=2\" class=\"number\">2</a>";
$pagination.= "<span class=\"dots\">...</span>";
for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"number\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?page=$counter\" class=\"number current\">$counter</a>";
}
}
}
//next button
if ($page < $counter - 1)
$pagination.= "<a href=\"$targetpage?page=$next\" class=\"number current\"> next </a>";
else
$pagination.= "<span class=\"disabled\"> next </span>";
$pagination.= "</div>\n";
}
// End of Pagination Script //
?>
<!-- Table Output Code -->
<?php
$result = mysql_query("SELECT * FROM category_name") or die(mysql_error());
$numCols = 2;
$numPerCol = ceil(mysql_num_rows($result) / $numCols);
echo "<table valign=\"top\"><tr>";
for($col = 1; $col <= $numCols; $col++) {
echo "<td valign=\"top\">";
for($row = 0; $row < $numPerCol; $row++) {
$resultRow = mysql_fetch_assoc($result);
if($resultRow == false) {
break;
}
// while loop goes here
}
echo "</td>";
}
echo "</tr></table>";
?>
<?=$pagination?>
</div>
<div align="center" valign="absbottom"><a href="main.php#Top" target="_parent">Goto Top of Page</a>
</body>
</html>
- <html>
- <head> <title>Reunite My Site - Category Index</title>
- <link rel="stylesheet" type="text/css" href="/css/default.css" media="screen">
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
- <meta name="Description" content="The World's Most Trusted Source For Online Advertising!">
- <style type="text/css">
- .gradient {
- border: 1px solid #000;
- background: #c5deea; /* old browsers */
- background: -moz-linear-gradient(top, #c5deea 0%, #8abbd7 31%, #066dab 100%); /* firefox */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#c5deea), color-stop(31%,#8abbd7), color-stop(100%,#066dab)); /* webkit */
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#c5deea', endColorstr='#066dab',GradientType=0 ); /* ie */
- }
- </style>
- </head>
- <body>
- <script type="text/javascript" src="track.php?mode=js"></script>
- <noscript><img src="track.php?mode=img" border="0" alt="" width="1" height="1"></noscript>
- <div class="gradient">
- <br>
- <a name="Top" target="_TOP"> </a>
- <div class="pagination white">
- <!-- The Following Php Code is the pagination script, which will create pages based on the number of banners in the database. Ex: 2 columns (across) x 5 Rows (down) the page -->
- <?php
- /* Include your code to connect to DB. */
- include('cats_db.php');
- /* Your DB table name */
- $tbl_name="categories";
- // How many adjacent pages should be shown on each side?
- $adjacents = 1;
- /*
- First get total number of rows in data table.
- If you have a WHERE clause in your query, make sure you mirror it here.
- */
- $query = "SELECT COUNT(*) as num FROM $tbl_name";
- $total_pages = mysql_fetch_array(mysql_query($query));
- $total_pages = $total_pages[num];
- /* Setup vars for query. */
- $targetpage = "categories.php"; //your file name (the name of this file)
- $limit = 1; //how many items to show per page
- $page = $_GET['page'];
- if($page)
- $st = ($page - 1) * $limit; //first item to display on this page
- else
- $st = 0; //if no page var is given, set st to 0
- /* Get data. */
- $sql = "SELECT category_name FROM $tbl_name LIMIT $st, $limit";
- $result = mysql_query($sql);
- /* Setup page vars for display. */
- if ($page == 0) $page = 1; //if no page var is given, default to 1.
- $prev = $page - 1; //previous page is page - 1
- $next = $page + 1; //next page is page + 1
- $lastpage = ceil($total_pages/$limit); //lastpage is = total pages / items per page, rounded up.
- $lpm1 = $lastpage - 1; //last page minus 1
- /*
- Now we apply our rules and draw the pagination object.
- We're actually saving the code to a variable in case we want to draw it more than once.
- */
- $pagination = "";
- if($lastpage > 1)
- {
- $pagination .= "";
- //previous button
- if ($page > 1)
- $pagination.= "<a href=\"$targetpage?page=$prev\" class=\"current\"> previous </a>";
- else
- $pagination.= "<span class=\"disabled\"> previous </span>";
- //pages
- if ($lastpage < 7 + ($adjacents * 2)) //not enough pages to bother breaking it up
- {
- for ($counter = 1; $counter <= $lastpage; $counter++)
- {
- if ($counter == $page)
- $pagination.= "<span class=\"number\">$counter</span>";
- else
- $pagination.= "<a href=\"$targetpage?page=$counter\" class=\"number current\">$counter</a>";
- }
- }
- elseif($lastpage > 5 + ($adjacents * 2)) //enough pages to hide some
- {
- //close to beginning; only hide later pages
- if($page < 1 + ($adjacents * 2))
- {
- for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
- {
- if ($counter == $page)
- $pagination.= "<span class=\"number\">$counter </span>";
- else
- $pagination.= "<a href=\"$targetpage?page=$counter\" class=\"number current\">$counter</a>";
- }
- $pagination.= "<span class=\"dots\">...</span>";
- $pagination.= "<a href=\"$targetpage?page=$lpm1\" class=\"number\">$lpm1</a>";
- $pagination.= "<a href=\"$targetpage?page=$lastpage\" class=\"number current\">$lastpage</a>";
- }
- //in middle; hide some front and some back
- elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
- {
- $pagination.= "<a href=\"$targetpage?page=1\" class=\"number\">1</a>";
- $pagination.= "<a href=\"$targetpage?page=2\" class=\"number\">2</a>";
- $pagination.= "<span class=\"dots\">...</span>";
- for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
- {
- if ($counter == $page)
- $pagination.= "<span class=\"number\">$counter</span>";
- else
- $pagination.= "<a href=\"$targetpage?page=$counter\" class=\"number current\">$counter</ a>";
- }
- $pagination.= "<span class=\"dots\">...</span>";
- $pagination.= "<a href=\"$targetpage?page=$lpm1\" class=\"number\">$lpm1</a>";
- $pagination.= "<a href=\"$targetpage?page=$lastpage\" class=\"number current\">$lastpage</a>";
- }
- //close to end; only hide early pages
- else
- {
- $pagination.= "<a href=\"$targetpage?page=1\" class=\"number\">1</a>";
- $pagination.= "<a href=\"$targetpage?page=2\" class=\"number\">2</a>";
- $pagination.= "<span class=\"dots\">...</span>";
- for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
- {
- if ($counter == $page)
- $pagination.= "<span class=\"number\">$counter</span>";
- else
- $pagination.= "<a href=\"$targetpage?page=$counter\" class=\"number current\">$counter</a>";
- }
- }
- }
- //next button
- if ($page < $counter - 1)
- $pagination.= "<a href=\"$targetpage?page=$next\" class=\"number current\"> next </a>";
- else
- $pagination.= "<span class=\"disabled\"> next </span>";
- $pagination.= "</div>\n";
- }
- // End of Pagination Script //
- ?>
- <!-- Table Output Code -->
- <?php
- $result = mysql_query("SELECT * FROM category_name") or die(mysql_error());
- $numCols = 2;
- $numPerCol = ceil(mysql_num_rows($result) / $numCols);
- echo "<table valign=\"top\"><tr>";
- for($col = 1; $col <= $numCols; $col++) {
- echo "<td valign=\"top\">";
- for($row = 0; $row < $numPerCol; $row++) {
- $resultRow = mysql_fetch_assoc($result);
- if($resultRow == false) {
- break;
- }
- // while loop goes here
- }
- echo "</td>";
- }
- echo "</tr></table>";
- ?>
- <?=$pagination?>
- </div>
- <div align="center" valign="absbottom"><a href="main.php#Top" target="_parent">Goto Top of Page</a>
- </body>
- </html>
Thank you for your help in advance!
Brian
- Anonymous
- Bot


- Joined: 25 Feb 2008
- Posts: ?
- Loc: Ozzuland
- Status: Online
July 2nd, 2011, 4:46 pm
Page 1 of 1
To Reply to this topic you need to LOGIN or REGISTER. It is free.
Post Information
- Total Posts in this topic: 1 post
- Users browsing this forum: No registered users and 240 guests
- You cannot post new topics in this forum
- You cannot reply to topics in this forum
- You cannot edit your posts in this forum
- You cannot delete your posts in this forum
- You cannot post attachments in this forum
