0

Hi dear all
I have 2 question to be asked
1. everything is working fine but I couldnot understand $page = $_GET['page']; what function is performing in the script?
2. when I change limit greater then 2 its not echo any record but for limit=1 or limit=2 its working perfectly. please check given below code.

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<?php
	/*
		Place code to connect to your DB here.
	*/
#connect to mysql server
	$conn = @mysql_connect("localhost","root","");
	#select database
	@mysql_select_db("onm",$conn);		// include your code to connect to DB.

	$tbl_name="elec_advance";		//your table name
	// How many adjacent pages should be shown on each side?
	$adjacents = 4;
	
	/* 
	   First get total number of rows in data table. 
	   If you have a WHERE clause in your query, make sure you mirror it here.
	*/
	$query = "SELECT COUNT(*) as num FROM $tbl_name";
	$total_pages = mysql_fetch_array(mysql_query($query));
	$total_pages = $total_pages[num];
	
	/* Setup vars for query. */
	$targetpage = "filename.php"; 	//your file name  (the name of this file)
	$limit = 2; 								//how many items to show per page
	$page = $_GET['page'];
	if($page) 
		$start = ($page - 1) * $limit; 			//first item to display on this page
	else
		$start = 0;								//if no page var is given, set start to 0
	
	/* Get data. */
	$sql = "SELECT * FROM $tbl_name LIMIT $start, $limit";
	$result = mysql_query($sql);
	
	/* Setup page vars for display. */
	if ($page == 0) $page = 1;					//if no page var is given, default to 1.
	$prev = $page - 1;							//previous page is page - 1
	$next = $page + 1;							//next page is page + 1
	$lastpage = ceil($total_pages/$limit);		//lastpage is = total pages / items per page, rounded up.
	$lpm1 = $lastpage - 1;						//last page minus 1
	
	/* 
		Now we apply our rules and draw the pagination object. 
		We're actually saving the code to a variable in case we want to draw it more than once.
	*/
	$pagination = "";
	if($lastpage > 1)
	{	
		$pagination .= "<div class=\"pagination\">";
		//previous button
		if ($page > 1) 
			$pagination.= "<a href=\"$targetpage?page=$prev\">« previous</a>";
		else
			$pagination.= "<span class=\"disabled\">« 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>";					
				}
			}
		}
		
		//next button
		if ($page < $counter - 1) 
			$pagination.= "<a href=\"$targetpage?page=$next\">next »</a>";
		else
			$pagination.= "<span class=\"disabled\">next »</span>";
		$pagination.= "</div>\n";		
	}
?>

	<?php
		while($row = mysql_fetch_array($result))
		{
	
	echo "<table cellpadding=2 cellspacing=2 width=100%>
<tr>


</tr>";
  echo "<tr>";
  echo "<th bgcolor=#FFCC00  width=250px>$page</th>";
  echo "<td bgcolor=#FEE9A9>" . $row[0] . "</td>";
    echo "</tr>";
  echo "<tr>";
						

	
	
	echo "<tr>";
  echo "<th bgcolor=#FFCC00>
  LAPeriodEnd</th>";
  echo "<td bgcolor=#FEE9A9>" . $row[1] . "</td>";
    echo "</tr>";
	
	echo "<tr>";
  echo "<th bgcolor=#FFCC00>
  LAPeriodEnd</th>";
  echo "<td bgcolor=#FEE9A9>" . $row[2] . "</td>";
    echo "</tr>";
	
	
	echo "<tr>";
  echo "<th bgcolor=#FFCC00>
  LAPeriodEnd</th>";
  echo "<td bgcolor=#FEE9A9>" . $row[3] . "</td>";
    echo "</tr>";
	
	
	echo "<tr>";
  echo "<th bgcolor=#FFCC00>
  LAPeriodEnd</th>";
  echo "<td bgcolor=#FEE9A9>" . $row[4] . "</td>";
    echo "</tr>";

	
	
  }
echo "</table>";



	
		
	?>

<?=$pagination?>
	
</body>
</html>
3
Contributors
2
Replies
8
Views
7 Years
Discussion Span
Last Post by dasatti
0

This does not seem any error.

check your query :
just echo this statement:
$sql = "SELECT * FROM $tbl_name LIMIT $start, $limit";

see what it reflects in browser when you put $limit=3.
make sure that you are in first page ($page='').

then run that query in your database. check the result.

If result is ok there. you may have left an url variable as 'page' with some value.

remove it and check it again.

you too have an error in designing.

echo "<table cellpadding=2 cellspacing=2 width=100%> should be before while statement.

Hope you get it.

Edited by jeet7454: design error

0

In your code $page defines the page number, $start defines the row number of starting record which will be displayed on the page, $limit defines number of records per page $page=$_GET['page']; is actualling fetching "page" veriable appended in the url. If you see the url you will see "page" appended in the url.

The problem you are facing is due to this code $start = ($page - 1) * $limit; Lets suppose if you have 6 records in the database and page you are trying to browse is 3 and limit is set to 2. In this case $start = (3-1) * 2 = 4 . In this case 5th and 6th records will be displayed.

Now suppose that you have 6 records in database and page you are browsing in 3 and limit is set to 3. in this case $start = (3-1)* 3 = 6 . By logic it should display 7th and 8th record but the database has only 6 records so nothing is displayed.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.