Monday, July 2, 2012

Pagination php

Pagination php
When mysql database is populated with large number of data you have to navigate from one page to other to view your data.For this tutorial, I have created table called "namelist" in my_database and populated 20 rows with data and broken down 5 rows into one page view.
bellow codes are to make table

--
-- Table structure for table `namelist`
--

CREATE TABLE IF NOT EXISTS `namelist` (
  `id` int(45) NOT NULL AUTO_INCREMENT,
  `FirstName` varchar(15) DEFAULT NULL,
  `LastName` varchar(15) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=21 ;

--
-- Dumping data for table `namelist`
--

INSERT INTO `namelist` (`id`, `FirstName`, `LastName`) VALUES
(1, 'Scarlett', 'Johansson'),
(2, 'Clooney', 'Anderson'),
(3, 'Kate ', 'Hudson'),
(4, 'Scarlett', 'Clooney'),
(5, 'Kate', 'Eva'),
(6, 'Angelina ', 'Jolie'),
(7, 'Jennifer ', 'Aniston'),
(8, 'Reese', 'Witherspoon'),
(9, 'Megan ', 'Fox'),
(10, 'Nicole ', 'Kidman'),
(11, 'Penelope ', 'Cruz'),
(12, 'Alyssa ', 'Milano'),
(13, 'Keira ', 'Knightley'),
(14, 'Cameron ', 'Diaz'),
(15, 'Jean ', 'Harlow'),
(16, 'Claudette ', 'Colbert'),
(17, 'Barbara ', 'Stanwyck'),
(18, ' Lucille ', 'Ball'),
(19, 'Vivien ', 'Leigh'),
(20, 'Jane ', 'Wyman');

ScarlettJohansson
ClooneyAnderson
Kate Hudson
ScarlettClooney
KateEva


bellow codes display the above page

<?php
    mysql_connect("localhost", "root", "") or die(mysql_error());

 mysql_select_db("my_database") or die(mysql_error());
  
    $tbl_name="namelist";      
    $adjacents = 3;
  
  
    $query = "SELECT COUNT(*) as num FROM $tbl_name";
    $total_pages = mysql_fetch_array(mysql_query($query));
    $total_pages = $total_pages[num];
  
  
    $targetpage = "pagi2.php";   
    $limit = 5;                               
    $page = $_GET['page'];
    if($page)
        $start = ($page - 1) * $limit;           
    else
        $start = 0;                              
  
  
    $sql = "SELECT column_name FROM $tbl_name LIMIT $start, $limit";
    $result = mysql_query($sql);
  
  
    if ($page == 0) $page = 1;                  
    $prev = $page - 1;                          
    $next = $page + 1;                          
    $lastpage = ceil($total_pages/$limit);      
    $lpm1 = $lastpage - 1;                      
  
  
    $pagination = "";
    if($lastpage > 1)
    {  
        $pagination .= "<div class=\"pagination\">";
        //previous button
        if ($page > 1)
            $pagination.= "<a href=\"$targetpage?page=$prev\"><img src='images/barrow.jpg'> previous</a>";
        else
            $pagination.= "<span class=\"disabled\"><img src='images/barrow.jpg'> 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>";                  
                }
            }
        }
      
  
        if ($page < $counter - 1)
            $pagination.= "<a href=\"$targetpage?page=$next\">next <img src='images/parrow.jpg'> </a>";
        else
            $pagination.= "<span class=\"disabled\">next <img src='images/parrow.jpg'></span>";
        $pagination.= "</div>\n";      
    }
?>

    <?php
    $sql = "SELECT *FROM $tbl_name LIMIT $start, $limit";
    $result = mysql_query($sql);
        while($row = mysql_fetch_array($result))
        {
  
        echo $row['FirstName']."".$row['LastName']."</br>";
  
        }
    ?>

<?php echo $pagination ?>

No comments:

Post a Comment