Need help with PHP Paginator

Discussion in 'PHP' started by JinRoh, Jun 27, 2007.

  1. #1
    Hello, I am trying to use a PHP Paginator for my website, I downloaded code from here (http://php.about.com/od/phpwithmysql/ss/php_pagination.htm) and edited a bit, this is my edited code:

    <?php 
    
    //This code created by Angela Bradley on php.About.com
    $pagenum = $_GET['pagenum'];
    $video = $_GET['video'];
    // Connects to your Database 
    mysql_connect("mysqlserver", "username", "password") or die(mysql_error()); 
    mysql_select_db("dbname") or die(mysql_error()); 
    
    //This checks to see if there is a page number. If not, it will set it to page 1 
    if (!(isset($pagenum))&&!(isset($video))) 
    { 
    $pagenum = 1; 
    } 
    elseif (!(isset($pagenum))&&(isset($video)))
    {$pagenum = "HERE IS WHERE I NEED HELP";}
    
    //Here we count the number of results 
    //Edit $data to be your query 
    $data = mysql_query("SELECT * FROM ratings where ID > 0 order by ID desc") or die(mysql_error()); 
    $rows = mysql_num_rows($data); 
    
    //This is the number of results displayed per page 
    $page_rows = 15; 
    
    //This tells us the page number of our last page 
    $last = ceil($rows/$page_rows); 
    
    //this makes sure the page number isn't below one, or more than our maximum pages 
    if ($pagenum < 1) 
    { 
    $pagenum = 1; 
    } 
    elseif ($pagenum > $last) 
    { 
    $pagenum = $last; 
    } 
    
    //This sets range that we will display in our query 
    $max = 'limit ' .($pagenum - 1) * $page_rows .',' .$page_rows;
    
    //This is your query again, the same one... the only difference is we add $max into it
    $data_p = mysql_query("SELECT * FROM ratings where ID > 0 order by ID desc $max") or die(mysql_error()); 
    
    //This is where you display your query results
    while($info = mysql_fetch_array( $data_p )) 
    { 
    
    Print $info['id']; 
    echo "<br>";
    } 
    
    echo "<p>";
    
    // This shows the user what page they are on, and the total number of pages
    echo " --Page $pagenum of $last-- <p>";
    
    // First we check if we are on page one. If we are then we don't need a link to the previous page or the first page so we do nothing. If we aren't then we generate links to the first page, and to the previous page.
    if ($pagenum == 1) 
    {
    } 
    else 
    {
    echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=1'> <<-First</a> ";
    echo " ";
    $previous = $pagenum-1;
    echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$previous'> <-Previous</a> ";
    } 
    
    //just a spacer
    echo " ---- ";
    
    //This does the same as above, only checking if we are on the last page, and then generating the Next and Last links
    if ($pagenum == $last) 
    {
    } 
    else {
    $next = $pagenum+1;
    echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$next'>Next -></a> ";
    echo " ";
    echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$last'>Last ->></a> ";
    } 
    ?>
    PHP:
    You can see it live here. http://www.chetos.es/pag.php

    Ok, where I need help is here
    elseif (!(isset($pagenum))&&(isset($video)))
    {$pagenum = "HERE IS WHERE I NEED HELP";}
    PHP:
    I would like the script to set $pagenum according to the ID of the video being showed, for example, if an user is in pag.php?video=40 (that video right now would be in the second page of the paginator) I would like $pagenum to be set to 2.

    Do you know what I mean? Please tell me if you don't understand.

    Is there any way to do that? Thanks in advance.
     
    JinRoh, Jun 27, 2007 IP
  2. JinRoh

    JinRoh Peon

    Messages:
    41
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #2
    Forgot to say, ID ($video) is ordered DESC (So, 55 to 1, not 1 to 55). That's important I think. Is there any way to do that? Thanks

    (I can't edit the post)
     
    JinRoh, Jun 28, 2007 IP
  3. JinRoh

    JinRoh Peon

    Messages:
    41
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #3
    SOLVED: I did this

    elseif (!(isset($page))&&(isset($video)))
    {$latestquery = mysql_query("SELECT max( id) FROM `ratings`") or die(mysql_error()); 
    $latest= mysql_result($latestquery, 0);
    $pagenum = 1+floor(($latest-$video)/$page_rows);}
    PHP:
     
    JinRoh, Jun 28, 2007 IP
  4. Joobz

    Joobz Peon

    Messages:
    598
    Likes Received:
    9
    Best Answers:
    0
    Trophy Points:
    0
    #4
    A nice conversation with yourself....

    thanks for posting the solution once you found it.
     
    Joobz, Jun 28, 2007 IP