myscripting Posted November 15, 2009 Share Posted November 15, 2009 I have this RSS parsing code and it paginates , but only uses next and previous links instead of how google does it. I want it to read like this: first 1 2 3.... last <?php require_once('simplepie.inc'); // Set your own configuration options as you see fit. $feed = new SimplePie(); $feed->set_feed_url(array( 'http://feeds2.feedburner.com/MishsGlobalEconomicTrendAnalysis', 'http://feeds.feedburner.com/TheBigPicture', 'http://feeds2.feedburner.com/ChartsAndCoffee', 'http://feeds.feedburner.com/typepad/tradeblogs/the_slope_of_hope_with_ti', )); $success = $feed->init(); // Make sure the page is being served with the right headers. $feed->handle_content_type(); // Set our paging values $start = (isset($_GET['start']) && !empty($_GET['start'])) ? $_GET['start'] : 0; // Where do we start? $length = (isset($_GET['length']) && !empty($_GET['length'])) ? $_GET['length'] : 5; // How many per page? $max = $feed->get_item_quantity(); // Where do we end? // When we end our PHP block, we want to make sure our DOCTYPE is on the top line to make // sure that the browser snaps into Standards Mode. ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"> <head> <title>SimplePie: Demo</title> <link rel="stylesheet" href="styles.css" type="text/css" media="screen, projector" /> </head> <body> <div id="site"> <?php // If we have an error, display it. if ($feed->error()) { echo '<div class="sp_errors">' . "\r\n"; echo '<p>' . htmlspecialchars($feed->error()) . "</p>\r\n"; echo '</div>' . "\r\n"; } ?> <?php if ($success): ?> <?php // get_items() will accept values from above. foreach($feed->get_items($start, $length) as $item): $feed = $item->get_feed(); ?> <div class="chunk"> <h4><?php if ($item->get_permalink()) echo '<a href="' . $item->get_permalink() . '">'; echo $item->get_title(true); if ($item->get_permalink()) echo '</a>'; ?></h4> <p class="footnote">Source: <a href="<?php echo $feed->get_permalink(); ?>"><?php echo $feed->get_title(); ?></a> | <?putenv("TZ=US/Pacific"); echo $item->get_date('j M Y | g:i a'); ?></p> </div> <?php endforeach; ?> <?php endif; ?> <?php // Let's do our paging controls $next = (int) $start + (int) $length; $prev = (int) $start - (int) $length; // Create the NEXT link $nextlink = '<a href="?start=' . $next . '&length=' . $length . '">Next »</a>'; if ($next > $max) { $nextlink = 'Next »'; } // Create the PREVIOUS link $prevlink = '<a href="?start=' . $prev . '&length=' . $length . '">« Previous</a>'; if ($prev < 0 && (int) $start > 0) { $prevlink = '<a href="?start=0&length=' . $length . '">« Previous</a>'; } else if ($prev < 0) { $prevlink = '« Previous'; } // Normalize the numbering for humans $begin = (int) $start + 1; $end = ($next > $max) ? $max : $next; ?> <p>Showing <?php echo $begin; ?>–<?php echo $end; ?> out of <?php echo $max; ?> | <?php echo $prevlink; ?> | <?php echo $nextlink; ?> | <a href="<?php echo '?start=' . $start . '&length=5'; ?>">5</a>, <a href="<?php echo '?start=' . $start . '&length=10'; ?>">10</a>, or <a href="<?php echo '?start=' . $start . '&length=20'; ?>">20</a> at a time.</p> </div> </body> </html> Quote Link to comment https://forums.phpfreaks.com/topic/181653-convert-this-code-into-a-google-like-pagination/ Share on other sites More sharing options...
marklarah Posted November 15, 2009 Share Posted November 15, 2009 http://www.phpfreaks.com/forums/index.php/topic,200925.0.html Quote Link to comment https://forums.phpfreaks.com/topic/181653-convert-this-code-into-a-google-like-pagination/#findComment-958146 Share on other sites More sharing options...
myscripting Posted November 15, 2009 Author Share Posted November 15, 2009 I read the tutorial http://www.phpfreaks.com/tutorial/basic-pagination do how do I break the results such that it resembles google? I'm sure it involves something like this: I tried pasting it into my original code but it made no difference ****** 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)) { // 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 ******/ Quote Link to comment https://forums.phpfreaks.com/topic/181653-convert-this-code-into-a-google-like-pagination/#findComment-958157 Share on other sites More sharing options...
marklarah Posted November 15, 2009 Share Posted November 15, 2009 It should be easy to set up pagination. I'll give you quick how to, and you can attempt it. First, define how many results per page you want, then from a GET variable, get what page you are on. Assuming you have your array of results somewhere, loop through them from array number currentpage*resultsperpage, to (currentpage*resultsperpage)+50, then display that. Quote Link to comment https://forums.phpfreaks.com/topic/181653-convert-this-code-into-a-google-like-pagination/#findComment-958160 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.