分页在计数和分割中起作用,但链接不会改变记录

时间:2012-10-19 09:40:45

标签: php mysql pagination

尝试应用此代码。它似乎计算了记录的数量,但当你点击链接来切换页面时,url似乎拿起了GET变量,但没有任何反应。第一页的相同2条记录留在那里。

这是Page

<?php     


require("base.php");
include_once('pagination.class.php');



$items = 2;
$page = 1;


if(isset($_GET['page']) and is_numeric($_GET['page']) and $page = $_GET['page'])
         $limit = " LIMIT ".(($page-1)*$items).",$items";
      else
         $limit = " LIMIT $items";

         $aux = Mysql_Fetch_Assoc(mysql_query("SELECT count(*) as total FROM claiminfo WHERE ( privacyset='1') "));

         $query = mysql_query("SELECT *, claiminfo.claim_id AS id FROM claiminfo LEFT JOIN ( claim_pics ) ON ( claiminfo.claim_id = claim_pics.claim_id )  WHERE (    
         privacyset='1') && (picID IS NOT NULL) ORDER BY claiminfo.ts DESC".$limit);

        if($aux['total']>0){
            $p = new pagination;
            $p->Items($aux['total']);
            $p->limit($items);
            $p->target("/gallery/");
            $p->currentPage($page);
            $p->calculate();
            $p->changeClass("pagination");


            $p->show();



                      while( $row = mysql_fetch_assoc( $query ) ) { 


                                        $namelocation =      $row['namelocation'];
                                        $claimholder =   $row['claimholder'];
                                        $occasion =      $row['occasion'];
                                        $geotag =    $row['geotag'];
                                        $lat =   $row['lat'] ;
                                        $lng =   $row['lng'];
                                        $claim_id = $row['id']; 
                                        $img = $row['location'];



echo "


<div class='clearfix draft product' style='margin-top: 30px;
float: left;
padding: 17px 4px 0px 20px;
margin-right: 30px;
border-style: solid;
border-color: #F092A1;
'>
<div class='photo' style='float: left;'>
<a href='/view/?claim_id=$claim_id'><img alt='' width='130' height='55' src='$img' /></a>
</div>
<div class='basic' style='float: left; margin-left: 30px;width:280px;border:1px;'>
<h3><a href='/view/?claim_id=$claim_id'>$namelocation</a></h3>


<p style='color: black;
font-family: arial;
font-size: 20px;
float: left;
'>
$occasion
</p>
</div>
<div class='stats' style='margin-top: 80px;
margin-left: 160px;'>
<div class='stat'>
<span class='unit'>
<b>$claimholder</b>
<br />
</span>
</div>
<div class='stat'>
<b>Lat:</b>
<span class='unit'>
$lat
</span>
</div>
<div class='stat'>
<b>Lng:</b>
<span class='unit'>
$lng
</span>

</div>
<br />

</div>
</div>
";




                      }




        }else
            echo"There no are records to paginate.";


                       ?>

这是脚本

<?php
class pagination{
/*
Script Name: *Digg Style Paginator Class
Script URI: http://www.mis-algoritmos.com/2007/05/27/digg-style-pagination-class/
Description: Class in PHP that allows to use a pagination like a digg or sabrosus style.
Script Version: 0.4
Author: Victor De la Rocha
Author URI: http://www.mis-algoritmos.com
*/
        /*Default values*/
        var $total_pages = -1;//items
        var $limit = null;
        var $target = ""; 
        var $page = 1;
        var $adjacents = 2;
        var $showCounter = false;
        var $className = "pagination";
        var $parameterName = "page";
        var $urlF = false;//urlFriendly

        /*Buttons next and previous*/
        var $nextT = "Next";
        var $nextI = "&#187;"; //&#9658;
        var $prevT = "Previous";
        var $prevI = "&#171;"; //&#9668;

        /*****/
        var $calculate = false;

        #Total items
        function items($value){$this->total_pages = (int) $value;}

        #how many items to show per page
        function limit($value){$this->limit = (int) $value;}

        #Page to sent the page value
        function target($value){$this->target = $value;}

        #Current page
        function currentPage($value){$this->page = (int) $value;}

        #How many adjacent pages should be shown on each side of the current page?
        function adjacents($value){$this->adjacents = (int) $value;}

        #show counter?
        function showCounter($value=""){$this->showCounter=($value===true)?true:false;}

        #to change the class name of the pagination div
        function changeClass($value=""){$this->className=$value;}

        function nextLabel($value){$this->nextT = $value;}
        function nextIcon($value){$this->nextI = $value;}
        function prevLabel($value){$this->prevT = $value;}
        function prevIcon($value){$this->prevI = $value;}

        #to change the class name of the pagination div
        function parameterName($value=""){$this->parameterName=$value;}

        #to change urlFriendly
        function urlFriendly($value="%"){
                if(eregi('^ *$',$value)){
                        $this->urlF=false;
                        return false;
                    }
                $this->urlF=$value;
            }

        var $pagination;

        function pagination(){}
        function show(){
                if(!$this->calculate)
                    if($this->calculate())
                        echo "<div class=\"$this->className\">$this->pagination</div>\n";
            }
        function getOutput(){
                if(!$this->calculate)
                    if($this->calculate())
                        return "<div class=\"$this->className\">$this->pagination</div>\n";
            }
        function get_pagenum_link($id){
                if(strpos($this->target,'?')===false)
                        if($this->urlF)
                                return str_replace($this->urlF,$id,$this->target);
                            else
                                return "$this->target?$this->parameterName=$id";
                    else
                        return "$this->target&$this->parameterName=$id";
            }

        function calculate(){
                $this->pagination = "";
                $this->calculate == true;
                $error = false;
                if($this->urlF and $this->urlF != '%' and strpos($this->target,$this->urlF)===false){
                        //Es necesario especificar el comodin para sustituir
                        echo "Especificaste un wildcard para sustituir, pero no existe en el target<br />";
                        $error = true;
                    }elseif($this->urlF and $this->urlF == '%' and strpos($this->target,$this->urlF)===false){
                        echo "Es necesario especificar en el target el comodin % para sustituir el número de página<br />";
                        $error = true;
                    }

                if($this->total_pages < 0){
                        echo "It is necessary to specify the <strong>number of pages</strong> (\$class->items(1000))<br />";
                        $error = true;
                    }
                if($this->limit == null){
                        echo "It is necessary to specify the <strong>limit of items</strong> to show per page (\$class->limit(10))<br />";
                        $error = true;
                    }
                if($error)return false;

                $n = trim($this->nextT.' '.$this->nextI);
                $p = trim($this->prevI.' '.$this->prevT);

                /* Setup vars for query. */
                if($this->page) 
                    $start = ($this->page - 1) * $this->limit;             //first item to display on this page
                else
                    $start = 0;                                //if no page var is given, set start to 0

                /* Setup page vars for display. */
                $prev = $this->page - 1;                            //previous page is page - 1
                $next = $this->page + 1;                            //next page is page + 1
                $lastpage = ceil($this->total_pages/$this->limit);        //lastpage is = total pages / items per page, rounded up.
                $lpm1 = $lastpage - 1;                        //last page minus 1

                /* 
                    Now we apply our rules and draw the pagination object. 
                    We're actually saving the code to a variable in case we want to draw it more than once.
                */

                if($lastpage > 1){
                        if($this->page){
                                //anterior button
                                if($this->page > 1)
                                        $this->pagination .= "<a href=\"".$this->get_pagenum_link($prev)."\" class=\"prev\">$p</a>";
                                    else
                                        $this->pagination .= "<span class=\"disabled\">$p</span>";
                            }
                        //pages 
                        if ($lastpage < 7 + ($this->adjacents * 2)){//not enough pages to bother breaking it up
                                for ($counter = 1; $counter <= $lastpage; $counter++){
                                        if ($counter == $this->page)
                                                $this->pagination .= "<span class=\"current\">$counter</span>";
                                            else
                                                $this->pagination .= "<a href=\"".$this->get_pagenum_link($counter)."\">$counter</a>";
                                    }
                            }
                        elseif($lastpage > 5 + ($this->adjacents * 2)){//enough pages to hide some
                                //close to beginning; only hide later pages
                                if($this->page < 1 + ($this->adjacents * 2)){
                                        for ($counter = 1; $counter < 4 + ($this->adjacents * 2); $counter++){
                                                if ($counter == $this->page)
                                                        $this->pagination .= "<span class=\"current\">$counter</span>";
                                                    else
                                                        $this->pagination .= "<a href=\"".$this->get_pagenum_link($counter)."\">$counter</a>";
                                            }
                                        $this->pagination .= "...";
                                        $this->pagination .= "<a href=\"".$this->get_pagenum_link($lpm1)."\">$lpm1</a>";
                                        $this->pagination .= "<a href=\"".$this->get_pagenum_link($lastpage)."\">$lastpage</a>";
                                    }
                                //in middle; hide some front and some back
                                elseif($lastpage - ($this->adjacents * 2) > $this->page && $this->page > ($this->adjacents * 2)){
                                        $this->pagination .= "<a href=\"".$this->get_pagenum_link(1)."\">1</a>";
                                        $this->pagination .= "<a href=\"".$this->get_pagenum_link(2)."\">2</a>";
                                        $this->pagination .= "...";
                                        for ($counter = $this->page - $this->adjacents; $counter <= $this->page + $this->adjacents; $counter++)
                                            if ($counter == $this->page)
                                                    $this->pagination .= "<span class=\"current\">$counter</span>";
                                                else
                                                    $this->pagination .= "<a href=\"".$this->get_pagenum_link($counter)."\">$counter</a>";
                                        $this->pagination .= "...";
                                        $this->pagination .= "<a href=\"".$this->get_pagenum_link($lpm1)."\">$lpm1</a>";
                                        $this->pagination .= "<a href=\"".$this->get_pagenum_link($lastpage)."\">$lastpage</a>";
                                    }
                                //close to end; only hide early pages
                                else{
                                        $this->pagination .= "<a href=\"".$this->get_pagenum_link(1)."\">1</a>";
                                        $this->pagination .= "<a href=\"".$this->get_pagenum_link(2)."\">2</a>";
                                        $this->pagination .= "...";
                                        for ($counter = $lastpage - (2 + ($this->adjacents * 2)); $counter <= $lastpage; $counter++)
                                            if ($counter == $this->page)
                                                    $this->pagination .= "<span class=\"current\">$counter</span>";
                                                else
                                                    $this->pagination .= "<a href=\"".$this->get_pagenum_link($counter)."\">$counter</a>";
                                    }
                            }
                        if($this->page){
                                //siguiente button
                                if ($this->page < $counter - 1)
                                        $this->pagination .= "<a href=\"".$this->get_pagenum_link($next)."\" class=\"next\">$n</a>";
                                    else
                                        $this->pagination .= "<span class=\"disabled\">$n</span>";
                                    if($this->showCounter)$this->pagination .= "<div class=\"pagination_data\">($this->total_pages Pages)</div>";
                            }
                    }

                return true;
            }
    }
?>

有没有人有预感。

仅供参考:它是在Wordpress上,但这完全是一个自定义的mysql代码。我不是在发帖或任何东西。我想知道也许Wordpress .htaccess可能阻止它工作。

0 个答案:

没有答案