Jump to content

[SOLVED] Search page


timmah1

Recommended Posts

I have a search page from drop down menu's.

The search works, but it don't display any results on the first page, I have to click on Next Page to see the results, and then if I click on Previous Page, more results are there.

 

 

Here is the code


include('config.php');	// include your code to connect to DB.

$tbl_name="users";		//your table name
// How many adjacent pages should be shown on each side?
$adjacents = 1;

/* 
   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 WHERE state LIKE '%".$_POST['state']."%'";
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages[num];

/* Setup vars for query. */
$targetpage = "search.php"; 				//your file name  (the name of this file)
$limit = 5; 								//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 WHERE city LIKE '%".$_POST['city']."%' AND state LIKE '%".$_POST['state']."%' AND ages LIKE '%".$_POST['ages']."%' 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 "$row[name] $row[state]<br>";

	}
?>

<?=$pagination?>

 

Any help would be greatly appreciated.

 

Thanks in advance.

Link to comment
https://forums.phpfreaks.com/topic/108126-solved-search-page/
Share on other sites

try changing...

 

if($page) 
	$start = ($page - 1) * $limit; 			//first item to display on this page
else
	$start = 0;	

 

to

 

if($page) {
	$start = ($page - 1) * $limit; 			//first item to display on this page
}else{
	$start = 0;	
}

 

Not sure if that'll make a different tho. Have a look anyway

Link to comment
https://forums.phpfreaks.com/topic/108126-solved-search-page/#findComment-554206
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • 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.