pagination error

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • kkshansid
    New Member
    • Oct 2008
    • 232

    pagination error

    this is my search page on which i am getting two parameters from previous page but the problem is that as soon as i click any other next pages my sql query fails as it doesnt get these two parameters
    kindly help
    Code:
    <?php
        session_start();   
    	
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
       <title></title>
       <meta name="generator" content="Microsoft FrontPage 5.0" />
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       <meta name="description" content="" />
       <meta name="keywords" content="" />
       <meta name="author" content="" />
    <link rel="stylesheet" href="../include/style.css" type="text/css" />
    </head>
    <body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
    
    <?php require("../include/header.php"); ?>
    <?php require("../include/left.php"); ?>
    
     <div class="heading"> 
        welcome all
       </div>
         <div class="text"> 
        <?php
    	//Include the PS_Pagination class
    	include('../include/ps_pagination.php');
    	
    	//Connect to mysql db
    	$conn = mysql_connect('localhost','root','');
    	if(!$conn) die("Failed to connect to database!");
    	$status = mysql_select_db('ncpul1', $conn);
    	if(!$status) die("Failed to select database!");
    $colv=$_POST["colv"];
    $coln=$_POST["coln"];
    echo "Search result for $coln------>$colv<br>";
    	$sql="SELECT * FROM institute WHERE ".$coln." like '%".$colv."%' order by centrecode asc";
    	
    	/*
    	 * 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['address'],"<br />\n";
    	}
    	echo "<br />\n";
    	echo "<br />\n";
    	echo"<div align='center'>";
    	//Display the full navigation in one go
    	echo $pager->renderFullNav();
    	
    	echo "<br />\n";
    	echo"</div>";
    	
    ?>
       </div>
    					  
    <?php require("../include/right.php"); ?><?php require("../include/footer.php"); ?>
    
    </body>
    </html>
    this is pagination file code(ps_paginat ion.php)
    Code:
    <?php
    /**
     * PHPSense Pagination Class
     *
     * PHP tutorials and scripts
     *
     * @package		PHPSense
     * @author		Jatinder Singh Thind
     * @copyright	Copyright (c) 2006, Jatinder Singh Thind
     * @link		http://www.phpsense.com
     */
    
    // ------------------------------------------------------------------------
    
    
    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;
    	}
    }
    ?>
  • Markus
    Recognized Expert Expert
    • Jun 2007
    • 6092

    #2
    Lines 34 and 35 should really be using the GET array - modify your search form to use method="get", and modify lines 34 and 35 accordingly.

    If you look at the pagination class, it allows you to pass in some arbitrary data that will be appended to the links the pagination provides - this is where you should give it the GET data (coln, colv, etc.)

    Comment

    • kkshansid
      New Member
      • Oct 2008
      • 232

      #3
      Originally posted by Markus
      Lines 34 and 35 should really be using the GET array - modify your search form to use method="get", and modify lines 34 and 35 accordingly.

      If you look at the pagination class, it allows you to pass in some arbitrary data that will be appended to the links the pagination provides - this is where you should give it the GET data (coln, colv, etc.)
      thank you for your valuable information its working now

      Comment

      Working...