Jump to content

returns error when empty..


techker

Recommended Posts

hey guys i have a pagination script that works great but when there is nothing in the table it returns an error saying querry empty..

 

can i mod it to say nothing..

 

if(!$conn) die("Failed to connect to database!");
$status = mysql_select_db($db, $conn);
if(!$status) die("Failed to select database!");
$sql = 'SELECT * FROM Formulaire_S';

/*
 * 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, 4, 5, "param1=valu1&param2=value2");

$pager->setDebug(true);
$rs = $pager->paginate();
if(!$rs) die(mysql_error());

Link to comment
Share on other sites



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 = 'Premier') {
	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 = 'Dernier') {
	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 = '>>') {
	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 = '<<') {
	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() . ' ' . $this->renderPrev() . ' ' . $this->renderNav() . ' ' . $this->renderNext() . ' ' . $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;
}
}

Link to comment
Share on other sites

okay, i looked over the class, the function paginate() relies on the variable $debug being set to true to display errors. Really you want those errors to show when you are in the developmental stage. However if you wish to remove the errors, simply remove this line from your code.

 

$pager->setDebug(true);

 

since $debug is defaulted to false.

Link to comment
Share on other sites

you will need to modify some things in the class.

 

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

 

it's really up to you.

 

1. you can remove this check all together.

2. you can make the "return false" statement dependent on $this->debug equating to true

3. you can remove the return FALSE.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.