Reputation: 353
i am trying to do the paging in the php file. i have written php function in function.php file and include that file in other php file. the problem is how can i get the value of $count,$res in other php file. in the other.php i am not getting value of $count,$res.
//function.php
function Paging($tbl_name,$targetpage,$where,$limit,$page,$qstr)
{
//$tbl_name="shopitup_productmaster"; //your table name
// How many adjacent pages should be shown on each side?
$adjacents = 3;
/*
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 ".$where;
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages[num];
/* Setup vars for query. */
//$targetpage = "paging.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. */
echo $sql = "SELECT * FROM $tbl_name where ".$where." LIMIT $start, $limit";
$res = mysql_query($sql);
$count=mysql_num_rows($res);
/* 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
$pagination = "";
if($lastpage > 1)
{
$pagination .= "<div class=\"pagination\">";
//previous button
if ($page > 1)
$pagination.= '<a href="'.$targetpage.'?page='.$prev.$qstr.'">« 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.$qstr.'">'.$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.$qstr\">$counter</a>";
}
$pagination.= "...";
$pagination.= "<a href=\"$targetpage?page=$lpm1.$qstr\">$lpm1</a>";
$pagination.= "<a href=\"$targetpage?page=$lastpage.$qstr\">$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.$qstr\">$counter</a>";
}
$pagination.= "...";
$pagination.= "<a href=\"$targetpage?page=$lpm1.$qstr\">$lpm1</a>";
$pagination.= "<a href=\"$targetpage?page=$lastpage.$qstr\">$lastpage</a>";
}
//close to end; only hide early pages
else
{
$pagination.= "<a href=\"$targetpage?page=1.$qstr\">1</a>";
$pagination.= "<a href=\"$targetpage?page=2.$qstr\">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.$qstr\">$counter</a>";
}
}
}
//next button
if ($page < $counter - 1)
$pagination.= "<a href=\"$targetpage?page=$next.$qstr\">next</a>";
else
$pagination.= "<span class=\"disabled\">next »</span>";
$pagination.= "</div>\n";
}
//return $pagination;
echo $pagination;
}
?>
other.php
<?php
ob_start();
session_start();
include("conn.php");
include("function.php");
$tbl="gallary";
$tb="album";
$aid=$_GET['aid'];
$aname=$_GET['name'];
?>
$where="aid='$aid'";
$limit="6";
$qstr="&aid=$aid";
$counter=1;
$tbl_name = "gallary";
$targetpage = $_SERVER['PHP_SELF'];
if(strlen(trim($_GET['page'])) > 0)
{ $page =($_GET['page']); }
if($page) { $start = ($page - 1) * $limit; } //first item to display on this page
else { $start = 0; }
?>
<?php $pagination=Paging($tbl_name,$targetpage,$where,$limit,$page,$qstr);?>
<?php echo "count=$count;" ?>
<?php
if($count==0)
{?>
<table align="center" style="padding-top:30px;">
<tr><b>NO Image Available in this Album....!!!!</tr></table>
<?
}
else
{
$i=0;
for($j=1;$j<=$count;$j+=3)
{
?>
<table align="center" style="padding-top:30px;">
<tr></tr>
<tr><td>
<?php
$row= mysql_fetch_assoc($res);
$img=stripslashes($row['image']);
$img_id=$row['eid'];
Upvotes: 0
Views: 507
Reputation: 6615
this is all about scope. Anything outside of the Paging()
function cannot access that $count
var because it is only available within the scope of Paging()
I would recommend bringing the database stuff back into other.php and just passing the Paging() function the stuff that's needed for echoing the navigation (total number of pages, target page, current page etc).
You could also try to create a global var, just before including functions.php, and then set the value inside your included script, like so:
...
session_start();
$count = 0;
include("conn.php");
include("function.php");
and in your functions.php:
...
$GLOBALS["count"] = mysql_num_rows($res);
Upvotes: 1
Reputation: 2984
You could use 3 options there a.) use global variables (I wouldn't recommend this, but I want to mention it for sake of completeness). b.) You return a class in the paging function c.) You return an array in the paging function
I think b is a bit overdoing it in your case so I'll explain b.)
function Paging($tbl_name,$targetpage,$where,$limit,$page,$qstr):
At the end of your function your insert the following code:
$returnarray['pagination']=$pagination;
$returnarray['count']=$count;
$returnarray['res']=$res;
And then in your "other file" you use this lines:
$array=Paging($tbl_name,$targetpage,$where,$limit,$page,$qstr);
$pagination=$array['pagination'];
$count=$array['count'];
$res=$array['res'];
Always keep in mind that all variables have a scope in which they are set and valid. Thus if you use a variable within a method it is only valid within this one method, and NOT outside of it and also NOT in any methods called within the method itself.
Additionally you should think if you want to really return $res as a whole and not define an array instead where you already do the transformations you want to do later (thus that you do not return the resultset but the data already), but that is more a matter of taste there.
Global variables (a.) I would not recommend as it brings its own problems with it (and additionally in some versions in PHP I've found out the hard way that they only function in the place they were defined and methods called from there, but not in submethods called from within the methods).
Upvotes: 0