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