for example i have 100 files , i want to make it 10 links per page. with previous and next links by using php ...
i have some code but it is just showing the data from mysql table by using title and descripton. i want to make it links ...... how should i do.... please help me...... more appreciated for reply .....

Recommended Answers

All 12 Replies

thanks... it was awesome. working fine..... i need sql table example please... for the code available in this link... http://phpsense.com/2007/php-pagination-script/. because i was inserted text ....so i am getting text only. but i need links. and
First << 13 14 15 16 17 >> Last
First << 13 14 15 16 17 >> Last

two times i am getting the first and last..

sorry i didn't get that. there are some other logics. please help me i need links to display....

Member Avatar for diafol

Our house rules ask kindly that you show some effort yourself. While we are here to help, it's not our place to provide you with a complete solution. Could you show what you've done so far (your code) and what seems to be the problem?

i have replaced my database connection,rows,coloumns details in the following code....

<?php
    //Include the PS_Pagination class
    include('ps_pagination.php');

    //Connect to mysql db
    $conn = mysql_connect('myhost','myusername','mypassword');
    if(!$conn) die("Failed to connect to database!");
    $status = mysql_select_db('mydbname', $conn);
    if(!$status) die("Failed to select database!");
    $sql = 'SELECT * FROM mytable';

    /*
     * Create a PS_Pagination object
     * 
     * $conn = MySQL connection object
     * $sql = SQl Query to paginate
     * 10 = Number of rows per page
     * 5 = Number of links
     * "param1=valu1&param2=value2" = You can append your own parameters to paginations links
     */
    $pager = new PS_Pagination($conn, $sql, 10, 5, "param1=valu1&param2=value2");

    /*
     * Enable debugging if you want o view query errors
    */
    $pager->setDebug(true);

    /*
     * The paginate() function returns a mysql result set
     * or false if no rows are returned by the query
    */
    $rs = $pager->paginate();
    if(!$rs) die(mysql_error());
    while($row = mysql_fetch_assoc($rs)) {
        echo $row['msg'],"<br />\n";
    }

    //Display the full navigation in one go
    echo $pager->renderFullNav();

    echo "<br />\n";

    /*
     * Or you can display the individual links for more
     * control over HTML rendering.
     * 
    */

    //Display the link to first page: First
    echo $pager->renderFirst();

    //Display the link to previous page: <<
    echo $pager->renderPrev();

    /*
     * Display page links: 1 2 3
     * $prefix = Will be prepended to the page link (optional)
     * $suffix = Will be appended to the page link (optional)
     * 
    */
    echo $pager->renderNav('<span>', '</span>');

    //Display the link to next page: >>
    echo $pager->renderNext();

    //Display the link to last page: Last
    echo $pager->renderLast();
?>


include('ps_pagination.php');

//Connect to mysql db
$conn = mysql_connect('myhost','myusername','mypassword');
if(!$conn) die("Failed to connect to database!");
$status = mysql_select_db('mydbname', $conn);
if(!$status) die("Failed to select database!");
$sql = 'SELECT * FROM mytable';

/*
 * Create a PS_Pagination object
 * 
 * $conn = MySQL connection object
 * $sql = SQl Query to paginate
 * 10 = Number of rows per page
 * 5 = Number of links
 * "param1=valu1¶m2=value2" = You can append your own parameters to paginations links
 */
$pager = new PS_Pagination($conn, $sql, 10, 5, "param1=valu1¶m2=value2");

/*
 * Enable debugging if you want o view query errors
*/
$pager->setDebug(true);

/*
 * The paginate() function returns a mysql result set
 * or false if no rows are returned by the query
*/
$rs = $pager->paginate();
if(!$rs) die(mysql_error());
while($row = mysql_fetch_assoc($rs)) {
    echo $row['msg'],"<br />\n";
}

//Display the full navigation in one go
echo $pager->renderFullNav();

echo "<br />\n";

/*
 * Or you can display the individual links for more
 * control over HTML rendering.
 * 
*/

//Display the link to first page: First
echo $pager->renderFirst();

//Display the link to previous page: <<
echo $pager->renderPrev();

/*
 * Display page links: 1 2 3
 * $prefix = Will be prepended to the page link (optional)
 * $suffix = Will be appended to the page link (optional)
 * 
*/
echo $pager->renderNav('<span>', '</span>');

//Display the link to next page: >>
echo $pager->renderNext();

//Display the link to last page: Last
echo $pager->renderLast();

?>

13edcb7d5dd5c5c892404113b4f4847e 2nd file is

<?php


class PS_Pagination {
    var $php_self;
    var $rows_per_page = 10; //Number of records to display per page
    var $total_rows = 0; //Total number of rows returned by the query
    var $links_per_page = 5; //Number of links to display per page
    var $append = ""; //Paremeters to append to pagination links
    var $sql = "";
    var $debug = false;
    var $conn = false;
    var $page = 1;
    var $max_pages = 0;
    var $offset = 0;

    /**
     * Constructor
     *
     * @param resource $connection Mysql connection link
     * @param string $sql SQL query to paginate. Example : SELECT * FROM users
     * @param integer $rows_per_page Number of records to display per page. Defaults to 10
     * @param integer $links_per_page Number of links to display per page. Defaults to 5
     * @param string $append Parameters to be appended to pagination links 
     */

    function PS_Pagination($connection, $sql, $rows_per_page = 10, $links_per_page = 5, $append = "") {
        $this->conn = $connection;
        $this->sql = $sql;
        $this->rows_per_page = (int)$rows_per_page;
        if (intval($links_per_page ) > 0) {
            $this->links_per_page = (int)$links_per_page;
        } else {
            $this->links_per_page = 5;
        }
        $this->append = $append;
        $this->php_self = htmlspecialchars($_SERVER['PHP_SELF'] );
        if (isset($_GET['page'] )) {
            $this->page = intval($_GET['page'] );
        }
    }

    /**
     * Executes the SQL query and initializes internal variables
     *
     * @access public
     * @return resource
     */
    function paginate() {
        //Check for valid mysql connection
        if (! $this->conn || ! is_resource($this->conn )) {
            if ($this->debug)
                echo "MySQL connection missing<br />";
            return false;
        }

        //Find total number of rows
        $all_rs = @mysql_query($this->sql );
        if (! $all_rs) {
            if ($this->debug)
                echo "SQL query failed. Check your query.<br /><br />Error Returned: " . mysql_error();
            return false;
        }
        $this->total_rows = mysql_num_rows($all_rs );
        @mysql_close($all_rs );

        //Return FALSE if no rows found
        if ($this->total_rows == 0) {
            if ($this->debug)
                echo "Query returned zero rows.";
            return FALSE;
        }

        //Max number of pages
        $this->max_pages = ceil($this->total_rows / $this->rows_per_page );
        if ($this->links_per_page > $this->max_pages) {
            $this->links_per_page = $this->max_pages;
        }

        //Check the page value just in case someone is trying to input an aribitrary value
        if ($this->page > $this->max_pages || $this->page <= 0) {
            $this->page = 1;
        }

        //Calculate Offset
        $this->offset = $this->rows_per_page * ($this->page - 1);

        //Fetch the required result set
        $rs = @mysql_query($this->sql . " LIMIT {$this->offset}, {$this->rows_per_page}" );
        if (! $rs) {
            if ($this->debug)
                echo "Pagination query failed. Check your query.<br /><br />Error Returned: " . mysql_error();
            return false;
        }
        return $rs;
    }

    /**
     * Display the link to the first page
     *
     * @access public
     * @param string $tag Text string to be displayed as the link. Defaults to 'First'
     * @return string
     */
    function renderFirst($tag = 'First') {
        if ($this->total_rows == 0)
            return FALSE;

        if ($this->page == 1) {
            return "$tag ";
        } else {
            return '<a href="' . $this->php_self . '?page=1&' . $this->append . '">' . $tag . '</a> ';
        }
    }

    /**
     * Display the link to the last page
     *
     * @access public
     * @param string $tag Text string to be displayed as the link. Defaults to 'Last'
     * @return string
     */
    function renderLast($tag = 'Last') {
        if ($this->total_rows == 0)
            return FALSE;

        if ($this->page == $this->max_pages) {
            return $tag;
        } else {
            return ' <a href="' . $this->php_self . '?page=' . $this->max_pages . '&' . $this->append . '">' . $tag . '</a>';
        }
    }

    /**
     * Display the next link
     *
     * @access public
     * @param string $tag Text string to be displayed as the link. Defaults to '>>'
     * @return string
     */
    function renderNext($tag = '&gt;&gt;') {
        if ($this->total_rows == 0)
            return FALSE;

        if ($this->page < $this->max_pages) {
            return '<a href="' . $this->php_self . '?page=' . ($this->page + 1) . '&' . $this->append . '">' . $tag . '</a>';
        } else {
            return $tag;
        }
    }

    /**
     * Display the previous link
     *
     * @access public
     * @param string $tag Text string to be displayed as the link. Defaults to '<<'
     * @return string
     */
    function renderPrev($tag = '&lt;&lt;') {
        if ($this->total_rows == 0)
            return FALSE;

        if ($this->page > 1) {
            return ' <a href="' . $this->php_self . '?page=' . ($this->page - 1) . '&' . $this->append . '">' . $tag . '</a>';
        } else {
            return " $tag";
        }
    }

    /**
     * Display the page links
     *
     * @access public
     * @return string
     */
    function renderNav($prefix = '<span class="page_link">', $suffix = '</span>') {
        if ($this->total_rows == 0)
            return FALSE;

        $batch = ceil($this->page / $this->links_per_page );
        $end = $batch * $this->links_per_page;
        if ($end == $this->page) {
            //$end = $end + $this->links_per_page - 1;
        //$end = $end + ceil($this->links_per_page/2);
        }
        if ($end > $this->max_pages) {
            $end = $this->max_pages;
        }
        $start = $end - $this->links_per_page + 1;
        $links = '';

        for($i = $start; $i <= $end; $i ++) {
            if ($i == $this->page) {
                $links .= $prefix . " $i " . $suffix;
            } else {
                $links .= ' ' . $prefix . '<a href="' . $this->php_self . '?page=' . $i . '&' . $this->append . '">' . $i . '</a>' . $suffix . ' ';
            }
        }

        return $links;
    }

    /**
     * Display full pagination navigation
     *
     * @access public
     * @return string
     */
    function renderFullNav() {
        return $this->renderFirst() . '&nbsp;' . $this->renderPrev() . '&nbsp;' . $this->renderNav() . '&nbsp;' . $this->renderNext() . '&nbsp;' . $this->renderLast();
    }

    /**
     * Set debug mode
     *
     * @access public
     * @param bool $debug Set to TRUE to enable debug messages
     * @return void
     */
    function setDebug($debug) {
        $this->debug = $debug;
    }
}
?>

it is working no doubt. but i am getting text only. please see the screenshot . i am begineer to php so that am asking you sir. i will do my best . can you please help me in that...

Member Avatar for diafol

I'm really sorry to be picky, but you seem to have found an online class and have just pasted the source and example code here.
I'm assuming it's from here:

http://phpsense.com/2007/php-pagination-script/

Now this beauty seems to be 7 years old. Things may have changed since then. However I did see an update on github (https://github.com/cjando/ps_pagination) from last year - so you may be in luck. I would add that this still uses "mysql" as opposed to mysqli or PDO - so it is in need of updating.

it is working no doubt. but i am getting text only. please see the screenshot . i am begineer to php so that am asking you sir. i will do my best . can you please help me in that...

I don't know what you were expecting. What was the output you though that was going to appear?

I would suggest that as a beginner, you may find it a worthwhile project to sit down and design your own paginator.

All you really need for a simple one are:

  • results per page to display
  • total number of results
  • url querystring parameter, e.g. record.php?page=1

ok thank you sir. thanks for all your posts.
i actually need pagination results as links.
like

Click Here
Click Here
Click Here
and so on....

First << 1 2 3 4 5 >> Last.

if you know any links please send. i am not asking complete code. am asking examples or explanation for that.

Member Avatar for diafol

ok thank you sir. thanks for all your posts. i actually need pagination results as links. like

We're aware of what you need. It's just a question of how you're going to get there. With regard to links, we'd have to search too - so I think it's safe to say, you can do that yourself. Examples and explanations on pagination are plentiful in Daniweb's PHP forum. I believe I gave a search result in a previous post.

I'm sorry if this doesn't address your issue, but if you provided some of your code and stated what the problem was with it - that would get a lot more interest. This isn't the same as simply dumping the source code of a class that you found on another website.

BTW - I've written more pagination classes than I care to remember - they're not too difficult. Have a go.

ok... thanks for reply....

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.