function paginate_stories() { global $connection; $table = "stories"; $rows = "title, id"; $sql = "SELECT COUNT(*) FROM " . $table; $result = mysql_query($sql, $connection) or trigger_error("SQL", E_USER_ERROR); $r = mysql_fetch_row($result); $numrows = $r[0]; // number of rows to show per page $rowsperpage = 5; // find out total pages $totalpages = ceil($numrows / $rowsperpage); // get the current page or set a default if (isset($_GET['currentpage']) && is_numeric($_GET['currentpage'])) { // cast var as int $currentpage = (int) $_GET['currentpage']; } else { // default page num $currentpage = 1; } // end if // if current page is greater than total pages... if ($currentpage > $totalpages) { // set current page to last page $currentpage = $totalpages; } // end if // if current page is less than first page... if ($currentpage < 1) { // set current page to first page $currentpage = 1; } // end if // the offset of the list, based on current page $offset = ($currentpage - 1) * $rowsperpage; // get the info from the db $sql = "SELECT " . $rows . " FROM " . $table . " LIMIT {$offset}, {$rowsperpage}"; $result = mysql_query($sql, $connection) or trigger_error("SQL", E_USER_ERROR); // create the nice html to render $output = "<ul class=\"story-list\">"; // while there are rows to be fetched... while ($story = mysql_fetch_assoc($result)) { $total = get_story_children_n($story['id']); // echo data $output .= "<li><a href=\"start_new_story.php?story={$story['id']}\">{$story['title']}</a> \n\t\t\t\t\t<span class='secondary'>{$total} chapters</span></li>"; } // end while $output .= "</ul>"; // close the list echo $output; echo '<a href="new_story.php" class="button new-story">Create a story</a>'; /****** build the pagination links ******/ // range of num links to show $range = 3; // if not on page 1, don't show back links if ($currentpage > 1) { // show << link to go back to page 1 echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=1'><<</a> "; // get previous page num $prevpage = $currentpage - 1; // show < link to go back to 1 page echo " <a href='{$_SERVER['PHP_SELF']}?currentpage={$prevpage}'><</a> "; } // end if // loop to show links to range of pages around current page for ($x = $currentpage - $range; $x < $currentpage + $range + 1; $x++) { // if it's a valid page number... if ($x > 0 && $x <= $totalpages && $totalpages > 1) { // if we're on current page... if ($x == $currentpage) { // 'highlight' it but don't make a link echo " [<b>{$x}</b>] "; // if not current page... } else { // make it a link echo " <a href='{$_SERVER['PHP_SELF']}?currentpage={$x}'>{$x}</a> "; } // end else } // end if } // end for // if not on last page, show forward and last page links if ($currentpage != $totalpages) { // get next page $nextpage = $currentpage + 1; // echo forward link for next page echo " <a href='{$_SERVER['PHP_SELF']}?currentpage={$nextpage}'>></a> "; // echo forward link for lastpage echo " <a href='{$_SERVER['PHP_SELF']}?currentpage={$totalpages}'>>></a> "; } // end if /****** end build pagination links ******/ }
<h2 class='page-title'>Your Stories</h2> <?php $message = ""; global $connection; $pager = new Pager($connection, "user-stories"); $result = $pager->getResult(); ?> <ul class="story-list"> <?php // Loop through stories to create a list while ($story = mysql_fetch_array($result)) { $chapter_id = get_first_chapter($story['id']); // Get the specific chapter // Find how many chapters are in a story. This is just for fun -- to show how long or full a given story is. $total = get_story_children_n($story['id']); ?> <li class="my-story"> <a href="start_new_story.php?story=<?php echo $story['id']; ?> &chapter=<?php echo $chapter_id; ?> " class="title"><?php print $story['title']; ?> </a> <span class='secondary'><?php print $total; ?>