I have used JOIN in pagination query. I think error is there. (No error with join)
First page results is shown correctly and also other page numbers are shown too. But when we click them for view results no results are displayed and two errors are shown.
1.Notice: Undefined variable: lab_id in F:\xampplite\htdocs\chem\view_all_chemicallab.php on line 71
2.Notice: Undefined variable: lab_id in F:\xampplite\htdocs\chem\view_all_chemicallab.php on line 86
If i use simple query like Select * from chemical It gives all results correctly.

require_once('auth.php');
include("config.php");	
ini_set('display_errors', 1);
error_reporting(E_ALL);  

 if (isset($_POST['lab_id']) && is_numeric($_POST['lab_id']))
   {		
     $lab_id = $_POST['lab_id'];
   }
$targetpage = "view_all_chemicallab.php"; 	
	$limit      = 5; 

$query = "SELECT COUNT(*) as num FROM chemical
JOIN lab_inventory_chemical ON chemical.chemical_code = lab_inventory_chemical.chemical_code
WHERE lab_inventory_chemical.lab_id= '$lab_id' ";     // this is line 71 
	$total_pages = mysql_fetch_array(mysql_query($query));
	$total_pages = $total_pages['num'];

$stages = 3;
$page =isset($_GET['name'])?mysql_escape_string($_GET['page']): '';
if($page){
	$start = ($page - 1) * $limit; 
}else{
	$start = 0;	
	}	

// Get page data
$query1 = "SELECT * FROM chemical
JOIN lab_inventory_chemical ON chemical.chemical_code = lab_inventory_chemical.chemical_code
WHERE lab_inventory_chemical.lab_id='$lab_id' LIMIT $start, $limit";   //this is line 86 
	$result = mysql_query($query1);

// Initial page num setup
if ($page == 0){$page = 1;}
$prev = $page - 1;	
$next = $page + 1;							
$lastpage = ceil($total_pages/$limit);		
$LastPagem1 = $lastpage - 1;					


$paginate = '';
if($lastpage > 1)
{	




	$paginate .= "<div class='paginate'>";
	// Previous
	if ($page > 1){
		$paginate.= "<a href='$targetpage?page=$prev'>previous</a>";
	}else{
		$paginate.= "<span class='disabled'>previous</span>";	}



	// Pages	
	if ($lastpage < 7 + ($stages * 2))	// Not enough pages to breaking it up
	{	
		for ($counter = 1; $counter <= $lastpage; $counter++)
		{
			if ($counter == $page){
				$paginate.= "<span class='current'>$counter</span>";
			}else{
				$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}					
		}
	}
	elseif($lastpage > 5 + ($stages * 2))	// Enough pages to hide a few?
	{
		// Beginning only hide later pages
		if($page < 1 + ($stages * 2))		
		{
			for ($counter = 1; $counter < 4 + ($stages * 2); $counter++)
			{
				if ($counter == $page){
					$paginate.= "<span class='current'>$counter</span>";
				}else{
					$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}					
			}
			$paginate.= "...";
			$paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
			$paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";		
		}
		// Middle hide some front and some back
		elseif($lastpage - ($stages * 2) > $page && $page > ($stages * 2))
		{
			$paginate.= "<a href='$targetpage?page=1'>1</a>";
			$paginate.= "<a href='$targetpage?page=2'>2</a>";
			$paginate.= "...";
			for ($counter = $page - $stages; $counter <= $page + $stages; $counter++)
			{
				if ($counter == $page){
					$paginate.= "<span class='current'>$counter</span>";
				}else{
					$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}					
			}
			$paginate.= "...";
			$paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
			$paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";		
		}
		// End only hide early pages
		else
		{
			$paginate.= "<a href='$targetpage?page=1'>1</a>";
			$paginate.= "<a href='$targetpage?page=2'>2</a>";
			$paginate.= "...";
			for ($counter = $lastpage - (2 + ($stages * 2)); $counter <= $lastpage; $counter++)
			{
				if ($counter == $page){
					$paginate.= "<span class='current'>$counter</span>";
				}else{
					$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}					
			}
		}
	}

			// Next
	if ($page < $counter - 1){ 
		$paginate.= "<a href='$targetpage?page=$next'>next</a>";
	}else{
		$paginate.= "<span class='disabled'>next</span>";
		}


$paginate.= "</div>";

}


// get results from database
     //   $result = mysql_query("SELECT * FROM members") 
       //         or die(mysql_error());  

    // display data in table 
	echo "<div>";
    echo "<table id='table1'>";
    echo "<tr> <th>Chemical Name</th> <th>Chemical Code</th> <th>Type</th> <th>Edit</th><th>Delete</th><th>Stock</th>  </tr>";

    // loop through results of database query, displaying them in the table
    while($row = mysql_fetch_array( $result )) 
	{

            // echo out the contents of each row into a table
            echo "<tr>";
            echo '<td>'. $row['name'] . '</td>';
            echo '<td>' . $row['chemical_code'] . '</td>';
            echo '<td>' . $row['type'] . '</td>';
			echo '<td><a href="editchemical.php?chemical_code=' . $row['chemical_code'] . '">Edit</a></td>';
			echo "<td><a href=\"delete_chemical.php?chemical_code=" . $row['chemical_code'] ."\" * onclick=\"return confirm('Are you sure you want to delete?')\">Delete</a></td>";
			echo '<td><a href="stock_chemical.php?chemical_code=' . $row['chemical_code'] . '">Stock</a></td>';
            echo "</tr>"; 


    } 
   echo "</table>";
   echo $paginate;
   echo "</div>";


?>

I have worked on this script about 7hours but still couldn't find the solution.

My approach
Problem is with lab_id passing (As i think). So i have change this line

$targetpage = "view_all_chemicallab.php";

to this

$targetpage = "view_all_chemicallab.php?lab_id={$_REQUEST['lab_id']}";

But problem is still there 🙁 Your help is highly appreciated

    In the code you posted above, where do you define $lab_id?

      Oh sorry I havent post that 🙁. Please refer the edited one

        if (isset($_POST['lab_id']) && is_numeric($_POST['lab_id'])) 
           {         
        $lab_id = $_POST['lab_id']; }

        So if $_POST['lab_id'] isn't set OR its not numeric then it will not be set. So unless your page links are POSTING the lab id, once you past the first page it will not be set.

          @

          if $la_id isnt set or if it is not numeric how could i get 1st page results?

          I think $la_id variable value isnt pass to 2nd,3rd ..... pages thats why Undefined variable error occurred. Therefore i have tried to pass the $la_id value like this

          $targetpage = "view_all_chemicallab.php?lab_id={$_REQUEST['lab_id']}";

          but it isnt successfull 🙁

            I like I said, when you first come to the page you are POSTING data, but then you click a link and make a get request, therefore subsequent pages will not see the POSTED data, because its not existent in the request. To do what you're showing in your last response, you'd have to use $_GET to access the value. GET != POST

              Thanks Derokorian
              My english is bad 🙁. Therefore i didnt get what u have said. can u pls answer this then i will be able to understand 🙂

              1. You want me to just change

              $targetpage = "view_all_chemicallab.php?lab_id={$_REQUEST['lab_id']}";

              to this

              $targetpage = "view_all_chemicallab.php?lab_id={$_GET['lab_id']}";

                          OR
              1. Send values using GET method and do following changes.
                if (isset($_GET['lab_id']) && is_numeric($_GET['lab_id'])) 
                   {         
                $lab_id = $_GET['lab_id']; }

              Any how I have done the both ways but no one works for me same error is still there (IN both methods)

                Helpppppppppppppppppppp !!!!!!!

                  When you submit a form you have the choice to use GET or POST method.

                  then you access them via
                  $xyz=$GET['foo_id']
                  or
                  $xyz=$
                  POST['foo_id']

                  In addition you can do
                  $xyz=$_REQUEST['foo_id']
                  which will access both GET and POST submissions

                  GET submissions show in url bar, POST do not

                  When you go to a page using
                  echo '<a href="stock_chemical.php?foo=' . $row['bar'] . '">Stock</a>';
                  then that will be received as a GET submission
                  it can also be accessed via $_REQUEST

                    Thanku for ur response cretaceous
                    but Iam looking something which can make my pagination work.

                      Yes - but it seems you are not able to access 'lab_id' as you need.
                      And it further appears you are unclear on the usage of GET and POST.
                      Once you know those you should be able to work out where the problem is.
                      Echo lab_id to see what it is at each stage

                        I have added

                           echo '<pre>';print_r($_REQUEST);echo '</pre>'; 

                        line after

                         echo $paginate;
                        	   echo "</div>";

                        to get an understand about what are posting or geting values
                        this what i have got in 1st page

                        Array
                        (
                            [lab_id] => 1
                            [page] => 2
                            [PHPSESSID] => 86i2ob11e1fg3pib7q8o5cggl2
                        )
                        Array
                        (
                            [lab_id] => 1?page=2
                            [PHPSESSID] => 86i2ob11e1fg3pib7q8o5cggl2
                        )

                          try changing this near top of your script:

                          if (isset($REQUEST['lab_id']) && is_numeric($REQUEST['lab_id']))
                          {

                          $lab_id = $_REQUEST['lab_id'];
                          }

                          then in script below whenever you want lab_id don't use
                          $targetpage = "view_all_chemicallab.php?lab_id={$_REQUEST['lab_id']}";
                          use
                          $targetpage = "view_all_chemicallab.php?lab_id=".$lab_id;

                          I'm not sure why your second Request array is showing this :
                          [lab_id] => 1?page=2

                          where does that second array come from?
                          are you using mod _rewrite anywhere?

                            Its because his URL ends up looking like example.com/mypage.php?lab_id=1?page=2 where the second question mark should actually be an ampersand.

                              also if you have a POST AND a GET value with the same name, one will overwrite the other in REQUEST (not sure which way round the overwrite is)

                              @ - yes but I couldn't see where he gets it to do that..?

                                @
                                I have done exactly as u said. BUt it results another error. Now i am having three error massages >>>> Undefined variable: lab_id.

                                lines which errors belongs to

                                1.$targetpage = "view_all_chemicallab.php?lab_id=.$lab_id";
                                2.WHERE lab_inventory_chemical.lab_id= '$lab_id' ";
                                3WHERE lab_inventory_chemical.lab_id='$lab_id' LIMIT $start, $limit";

                                  you mistyped this one - should be :
                                  $targetpage = "view_all_chemicallab.php?lab_id=".$lab_id;

                                  the errors show $lab_id is not set - therefore it's not being passed to your pages correctly

                                  amend upper bit to:
                                  if (isset($REQUEST['lab_id']) && is_numeric($REQUEST['lab_id']))
                                  {
                                  $lab_id = $_REQUEST['lab_id'];
                                  } else {
                                  $lab_id =0;
                                  }
                                  BUT all this will do is set $lab_id to 0 to fix the undefined var error
                                  It won't fix why you are not accessing the id.

                                    cretaceous;11006425 wrote:

                                    also if you have a POST AND a GET value with the same name, one will overwrite the other in REQUEST (not sure which way round the overwrite is)

                                    The order is based on php.ini setting: variables_order

                                    @ - yes but I couldn't see where he gets it to do that..?

                                    Its because the change to $targetpage = "view_all_chemicallab.php?lab_id={$_REQUEST['lab_id']}"; and then is building the links using $targetpage?page= so the solution would be to change the links being made to $targetpage&page= so that the query string is constructed properly.

                                      cretaceous;11006430 wrote:

                                      you mistyped this one - should be :
                                      $targetpage = "view_all_chemicallab.php?lab_id=".$lab_id;

                                      No iam not copy paste it once again but same results 🙁 As u said before when it is set to zero in else statement error isnot there how could i find correct solution?

                                      @

                                      Its because the change to $targetpage = "view_all_chemicallab.php?lab_id={$_REQUEST['lab_id']}"; and then is building the links using $targetpage?page= so the solution would be to change the links being made to $targetpage&page= so that the query string is constructed properly.

                                      what i have done according to you

                                      $paginate.= "<a href='$targetpage?page=$next'>next</a>"; 

                                      replace with

                                      $paginate.= "<a href='{$targetpage}&page={$next}'>next</a>"; 

                                      but errors are still there. do i need to change other ? to & ????