Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 4 of 4
  1. #1
    New to the CF scene
    Join Date
    Feb 2009
    Posts
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts

    PHP Pagination and Mod_Rewrite

    HI there guys,

    Hoping someone can please help - been working on this for 2 days now with no luch ....

    I've managed to implement a Rewrite on my website where the URL that I'm specifying is static. ie.

    My old link was:
    http://www.mysite/Fonts.php?ID=1
    I implemented:
    RewriteRule my-fonts-(.*)\.htm$ Fonts.php?ID=$1
    This gave me the SEO friendly of:
    http://www.mysite/my-fonts-A.htm

    Great !!!!

    But now I need to do something similar (ie. SEO friendly links) with the PHP Pagination script that I've implemented.


    <?php
    // database connection info
    $conn = mysql_connect('localhost','db_un','pw') or trigger_error("SQL", E_USER_ERROR);
    $db = mysql_select_db('db',$conn) or trigger_error("SQL", E_USER_ERROR);

    // find out how many rows are in the table
    $sql = "SELECT COUNT(*) FROM fonts WHERE Letter = '1'";
    $result = mysql_query($sql, $conn) or trigger_error("SQL", E_USER_ERROR);
    $r = mysql_fetch_row($result);
    $numrows = $r[0];

    // number of rows to show per page
    $rowsperpage = 10;
    // find out total pages
    $totalpages = ceil($numrows / $rowsperpage);

    // get the current page or set a default
    if (isset($_GET['page']) && is_numeric($_GET['page'])) {
    // cast var as int
    $currentpage = (int) $_GET['page'];
    } 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;



    $ID = $_GET['ID'];

    // get the info from the db
    $sql = "SELECT * FROM fonts WHERE Letter = '$ID' LIMIT $offset, $rowsperpage";
    $result = mysql_query($sql, $conn) or trigger_error("SQL", E_USER_ERROR);

    // while there are rows to be fetched...
    while ($list = mysql_fetch_assoc($result)) {
    // echo data
    echo $list['UniqueID'] . " : " . $list['Name'] . "<br />";
    } // end while

    /****** 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']}?ID=$ID&page=1'><<</a> ";
    // get previous page num
    $prevpage = $currentpage - 1;
    // show < link to go back to 1 page
    echo " <a href='{$_SERVER['PHP_SELF']}?ID=$ID&page=$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']}?ID=$ID&page=$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']}?ID=$ID&page=$nextpage'>></a> ";
    // echo forward link for lastpage
    echo " <a href='{$_SERVER['PHP_SELF']}?ID=$ID&page=$totalpages'>>></a> ";
    } // end if
    /****** end build pagination links ******/
    ?>


    I think my question is ....

    Q: How should the Pagination links be modified (Next, Last, Numbers etc) so that I can use them in a Mod_Rewrite ...
    Q2: what is the code for the Mod_Rewrite to go in the htaccess file. ...

    Ideally I want to output something like:

    http://www.mysite/my-fonts-A-page1.htm
    http://www.mysite/my-fonts-A-page2.htm
    http://www.mysite/my-fonts-A-page3.htm
    etc.

    Thank you in advance !!!


  • #2
    Regular Coder
    Join Date
    Jan 2009
    Location
    Norway
    Posts
    118
    Thanks
    8
    Thanked 2 Times in 2 Posts
    This rule should work:
    Code:
    RewriteRule my-fonts-(.*)/page/([0-9]*).htm$ Fonts.php?ID=$1&page=$2
    Now the link would be:
    Code:
    http://www.mysite/my-fonts-A/page/3.htm

  • #3
    New to the CF scene
    Join Date
    Feb 2009
    Posts
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Thumbs up

    Cheers... thanks for the help!

    Much appreciated.

    Jay
    Last edited by new4you; 02-15-2009 at 01:53 PM.

  • #4
    Regular Coder kokjj87's Avatar
    Join Date
    Sep 2008
    Location
    Singapore
    Posts
    279
    Thanks
    1
    Thanked 55 Times in 54 Posts
    You need to change all your link manually, the server is not that smart to convert all links in your page to the rewrite version.


  •  

    Tags for this Thread

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •