0

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

2 に答える 2

1

これはすべてスコープに関するものです。var は のスコープ内でのみ使用できるため、関数外のものはPaging()その var にアクセスできません。$countPaging()

データベースのものを other.php に戻し、ナビゲーションをエコーするために必要なもの (ページの総数、ターゲット ページ、現在のページなど) を Paging() 関数に渡すことをお勧めします。

functions.php をインクルードする直前にグローバル var を作成して、インクルードしたスクリプト内に値を設定することもできます。

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

すべての変数には、それらが設定されて有効なスコープがあることを常に念頭に置いてください。したがって、メソッド内で変数を使用する場合、それはこの1つのメソッド内でのみ有効であり、メソッドの外部では有効ではなく、メソッド自体の内部で呼び出されるメソッドでも有効ではありません。

さらに、実際に$ res全体を返し、後で実行する変換を既に実行している場所で配列を定義しない場合(つまり、結果セットではなくデータを既に返す場合)を考える必要がありますが、それはそこにはもっと好みの問題があります。

グローバル変数(a。)独自の問題が発生するため、お勧めしません(さらに、PHPの一部のバージョンでは、定義された場所でのみ機能し、そこからメソッドが呼び出されるという難しい方法を見つけました。ただし、メソッド内から呼び出されるサブメソッドではありません)。

于 2012-10-08T06:25:30.167 に答える