0

我使用分页来显示数据库中的记录,现在我想要显示页码的下拉列表,如何在我的代码中添加下拉列表?并且还想显示数据库中的总行数。

我使用以下代码

    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;
        }
    }
    ?>
4

1 回答 1

-1

此代码用于显示行数

<?php
$link = mysql_connect("localhost", "username", "password");

mysql_select_db("dbname", $link);
$result = mysql_query("SELECT column name FROM table name", $link);

$num_rows = mysql_num_rows($result);
echo "$num_rows Rows\n";
?>
于 2013-09-07T09:59:10.280 回答