0

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'];
4

2 回答 2

1

这都是关于范围的。函数之外的任何东西Paging()都无法访问该$countvar,因为它仅在Paging()

我建议将数据库内容放回 other.php 中,然后将回显导航所需的内容(页面总数、目标页面、当前页面等)传递给 Paging() 函数。

您还可以尝试在包含 functions.php 之前创建一个全局变量,然后在包含的脚本中设置值,如下所示:

...
session_start();
$count = 0;
include("conn.php");
include("function.php");

在你的functions.php中:

...
$GLOBALS["count"] = mysql_num_rows($res);
于 2012-10-08T06:21:26.450 回答
0

您可以在那里使用 3 个选项 a.) 使用全局变量(我不建议这样做,但为了完整起见,我想提一下)。b.)您在分页函数中返回一个类 c.)您在分页函数中返回一个数组

我认为 b 在你的情况下有点过头了,所以我会解释 b。)

函数分页($tbl_name,$targetpage,$where,$limit,$page,$qstr):

在函数的末尾插入以下代码:

$returnarray['pagination']=$pagination;
$returnarray['count']=$count;
$returnarray['res']=$res;

然后在您的“其他文件”中使用以下行:

$array=Paging($tbl_name,$targetpage,$where,$limit,$page,$qstr);
$pagination=$array['pagination'];
$count=$array['count'];
$res=$array['res'];

永远记住,所有变量都有一个设置和有效的范围。因此,如果您在方法中使用变量,则它仅在该方法中有效,而不是在它之外,也不在方法本身调用的任何方法中。

此外,您应该考虑是否要真正返回 $res 作为一个整体而不是定义一个数组,而不是定义一个数组,而不是定义一个数组,在那里您已经进行了以后想要做的转换(因此您不返回结果集而是返回数据),但那是更多的是那里的品味问题。

全局变量(a.)我不推荐,因为它带来了自己的问题(另外在 PHP 的某些版本中,我发现它们仅在定义它们的位置和从那里调用的方法的地方起作用,但不在方法内调用的子方法中)。

于 2012-10-08T06:25:30.167 回答