andrew_biggart Posted February 17, 2010 Share Posted February 17, 2010 Ok so at the minute I have designed a working forum. I am now trying to implement pagination into the threads. At the minute this is the working code before pagination. <br /> <table cellpadding="0" cellspacing="0" class="acc_status_table"> <tr> <td class="forum_lt">Latest Thread's</td> </tr> <tr> <td class="acc_status_feed"> <?php include("config.php"); // Retrieve data from database $sql="SELECT * FROM biggartfp9_forum_threadst ORDER BY Post_id DESC LIMIT 15 " ; $result=mysql_query($sql); // Start looping rows in mysql database. while($rows=mysql_fetch_array($result)){ ?> <table class="acc_status_statuses"> <tr> <td class="acc_status_img" rowspan="2" valign="top"><a href="profile.php?username=<?php echo $rows['Post_username']; ?>"><?php echo "<img class='profile_pic' src='../Profile_thumbs/". $rows['Post_pp'] . "' style='width:50px; height:50px;' />";?></a></td> <td class="acc_alerts_posted"> In <a class="forum_cat" href="forum_filter.php?id=<? echo $rows['Post_type']; ?>"><?php echo $rows['Post_type']; ?></a> , by <a class="forum_cat" href="profile.php?username=<? echo $rows['Post_username']; ?>"><?php echo $rows['Post_username']; ?></a> on <?php echo $rows['Post_date']; ?> </td> </tr> <tr> <td class="acc_alerts_comment" valign="top"> <a class="forum_subject_link" href="forum_view.php?Post_id=<? echo $rows['Post_id']; ?>"><?php echo $rows['Post_subject']; ?></a> </td> </tr> </table> <br /> <?php // close while loop } // close connection mysql_close(); ?> </td> </tr> </table> And this is the pagination code i am trying to use. <br /> <table cellpadding="0" cellspacing="0" class="acc_status_table"> <tr> <td class="forum_lt">Latest Thread's</td> </tr> <tr> <td class="acc_status_feed"> <?php /* Place code to connect to your DB here. */ include('config.php'); // include your code to connect to DB. $tbl_name="biggartfp9_forum_threadst"; //your table name // How many adjacent pages should be shown on each side? $adjacents = 3; /* 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 = "forum_pagetest.php"; //your file name (the name of this file) $limit = 5; //how many items to show per page $page = $_GET['page']; if($page) $start = ($page - 1) * $limit; //first item to display on this page else $start = 0; //if no page var is given, set start to 0 /* Get data. */ $sql = "SELECT * FROM $tbl_name LIMIT $start, $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 .= "<div class=\"pagination\">"; //previous button if ($page > 1) $pagination.= "<a href=\"$targetpage?page=$prev\">« 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=\"current\">$counter</span>"; else $pagination.= "<a href=\"$targetpage?page=$counter\">$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=\"current\">$counter</span>"; else $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>"; } $pagination.= "..."; $pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>"; $pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>"; } //in middle; hide some front and some back elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) { $pagination.= "<a href=\"$targetpage?page=1\">1</a>"; $pagination.= "<a href=\"$targetpage?page=2\">2</a>"; $pagination.= "..."; for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) { if ($counter == $page) $pagination.= "<span class=\"current\">$counter</span>"; else $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>"; } $pagination.= "..."; $pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>"; $pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>"; } //close to end; only hide early pages else { $pagination.= "<a href=\"$targetpage?page=1\">1</a>"; $pagination.= "<a href=\"$targetpage?page=2\">2</a>"; $pagination.= "..."; for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) { if ($counter == $page) $pagination.= "<span class=\"current\">$counter</span>"; else $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>"; } } } //next button if ($page < $counter - 1) $pagination.= "<a href=\"$targetpage?page=$next\">next »</a>"; else $pagination.= "<span class=\"disabled\">next »</span>"; $pagination.= "</div>\n"; } ?> <?php while($row = mysql_fetch_array($result)) { // close while loop } ?> <?=$pagination?> </td> </tr> </table> I am having trouble adding my old while loop intot he new pagination code, i know i have to add the table i want to echo, but then what syntax do i use to echo the rows of data? Link to comment https://forums.phpfreaks.com/topic/192445-pagination-help-please/ Share on other sites More sharing options...
andrew_biggart Posted February 17, 2010 Author Share Posted February 17, 2010 Should this work? I thought this is the right way to do it but i am receiving no output from the database. <br /> <table cellpadding="0" cellspacing="0" class="acc_status_table"> <tr> <td class="forum_h">Thread Filter</td> </tr> <tr> <td class="acc_status_feed"> <table> <tr> <td><a class="forum_filter" href="forum_filter.php?id=ILoveArt">ILoveArt</a></td> <td><a class="forum_filter" href="forum_filter.php?id=Artists">Artists</a></td> <td><a class="forum_filter" href="forum_filter.php?id=Artwork">Artwork</a></td> <td><a class="forum_filter" href="forum_filter.php?id=Galleries">Galleries</a></td> <td><a class="forum_filter" href="forum_filter.php?id=Contests">Contests</a></td> <td><a class="forum_filter" href="forum_filter.php?id=Love | Hate">Love | Hate</a></td> <td><a class="forum_filter" href="forum_filter.php?id=Rant | Moan">Rant | Moan</a></td> <td><a class="forum_filter" href="forum_filter.php?id=Whatever">Whatever</a></td> <td><a class="forum_filter" href="forum_filter.php?id=Problem">Problem</a></td> </tr> </table> </td> </tr> </table> <br /> <table cellpadding="0" cellspacing="0" class="acc_status_table"> <tr> <td class="forum_lt">Latest Thread's</td> </tr> <tr> <td class="acc_status_feed"> <?php /* Place code to connect to your DB here. */ include('config.php'); // include your code to connect to DB. $tbl_name="biggartfp9_forum_threadst"; //your table name // How many adjacent pages should be shown on each side? $adjacents = 3; /* 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 = "forum_pagetest.php"; //your file name (the name of this file) $limit = 5; //how many items to show per page $page = $_GET['page']; if($page) $start = ($page - 1) * $limit; //first item to display on this page else $start = 0; //if no page var is given, set start to 0 /* Get data. */ $sql = "SELECT * FROM $tbl_name LIMIT $start, $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 .= "<div class=\"pagination\">"; //previous button if ($page > 1) $pagination.= "<a href=\"$targetpage?page=$prev\">« 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=\"current\">$counter</span>"; else $pagination.= "<a href=\"$targetpage?page=$counter\">$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=\"current\">$counter</span>"; else $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>"; } $pagination.= "..."; $pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>"; $pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>"; } //in middle; hide some front and some back elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) { $pagination.= "<a href=\"$targetpage?page=1\">1</a>"; $pagination.= "<a href=\"$targetpage?page=2\">2</a>"; $pagination.= "..."; for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) { if ($counter == $page) $pagination.= "<span class=\"current\">$counter</span>"; else $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>"; } $pagination.= "..."; $pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>"; $pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>"; } //close to end; only hide early pages else { $pagination.= "<a href=\"$targetpage?page=1\">1</a>"; $pagination.= "<a href=\"$targetpage?page=2\">2</a>"; $pagination.= "..."; for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) { if ($counter == $page) $pagination.= "<span class=\"current\">$counter</span>"; else $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>"; } } } //next button if ($page < $counter - 1) $pagination.= "<a href=\"$targetpage?page=$next\">next »</a>"; else $pagination.= "<span class=\"disabled\">next »</span>"; $pagination.= "</div>\n"; } ?> <?php while($row = mysql_fetch_array($result)) { ?> <table class="acc_status_statuses"> <tr> <td class="acc_status_img" rowspan="2" valign="top"><a href="profile.php?username=<?php echo $rows['Post_username']; ?>"><?php echo "<img class='profile_pic' src='../Profile_thumbs/". $rows['Post_pp'] . "' style='width:50px; height:50px;' />";?></a></td> <td class="acc_alerts_posted"> In <a class="forum_cat" href="forum_filter.php?id=<? echo $rows['Post_type']; ?>"><?php echo $rows['Post_type']; ?></a> , by <a class="forum_cat" href="profile.php?username=<? echo $rows['Post_username']; ?>"><?php echo $rows['Post_username']; ?></a> on <?php echo $rows['Post_date']; ?> </td> </tr> <tr> <td class="acc_alerts_comment" valign="top"> <a class="forum_subject_link" href="forum_view.php?Post_id=<? echo $rows['Post_id']; ?>"><?php echo $rows['Post_subject']; ?></a> </td> </tr> </table> <br /> <? // close while loop } // close connection mysql_close(); ?> <?=$pagination?> </td> </tr> </table> Link to comment https://forums.phpfreaks.com/topic/192445-pagination-help-please/#findComment-1014032 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.