从php中的函数中获取值

时间:2012-10-08 06:15:41

标签: php

我正在尝试在php文件中进行分页。 我在function.php文件中编写了php函数,并将该文件包含在其他php文件中。 问题是如何在其他php文件中获取$ count,$ res的值。 在other.php中,我没有得到$ 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'];

2 个答案:

答案 0 :(得分:1)

这完全是关于范围的。 Paging()函数之外的任何内容都无法访问$count var,因为它仅在Paging()范围内可用

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

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

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

并在你的functions.php中:

...
$GLOBALS["count"] = mysql_num_rows($res);

答案 1 :(得分: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的某些版本中,我发现它们只在它们被定义的位置和调用的方法中起作用的困难方式从那里开始,但不是在方法中调用的子方法中。)