0

我的帖子

个人中心

设置

  发新话题
代码也就改了一些必要的变量:
<?php
        header('Content-type:text/html;charset=UTF8');
    include_once('conn.php');
    mysql_query("set names 'utf8'");
    $search = isset($_GET['search']) ? $_GET['search'] : '';
    $sql = "SELECT * FROM `tp_t1` WHERE `name` like '%$search%'";
    $result = mysql_query($sql,$conn) or die("Error");
    $data_nums = mysql_num_rows($result);
    $per = 3;
    $pages = ceil($data_nums/$per);
    if (!isset($_GET["page"])){
        $page=1;
    } else {
        $page = intval($_GET["page"]);
    }
    $start = ($page-1)*$per;
    $result = mysql_query($sql.' LIMIT '.$start.', '.$per,$conn) or die("Error");

        $num = ($page -1) * $per;
        $data = array();
        while ($row = mysql_fetch_array ($result))
        {
                $data[] = $row;
        }

        var_dump($data);
       
    echo '总 '.$data_nums.' 笔-在 '.$page.' 页-共 '.$pages.' 页';
    echo "<br /><a href=?page=1>首页</a> ";
    echo "第 ";
    for( $i=1 ; $i<=$pages ; $i++ ) {
        if ( $page-3 < $i && $i < $page+3 ) {
            echo "<a href=?search=c&page=".$i.">".$i."</a> ";
        }
    }
    echo " 页 <a href=?page=".$pages.">尾页</a><br /><br />";



宝剑厉不厉害,要看它的主人是谁,不信来PHP版块看看~!
找到一个比较合适的、简单的、可用的分页类,拿去闭关修行吧。。骚年~~
<?php
/**
* 功能: 分页类,根据提供的数据总量和页面大小
*/

class pagination
{
  var $result = array();
  var $pVar = "myp";//page参数分页记数
  var $urlParamStr = ""; //页面的所有参数
  var $sqlMoveNumber = 0; //数据的偏移量
  var $is_post = false;

  public function pagination()
  {

  }
  public function set($sum,$pageSize,$page="",$is_post = false)
  {
    $this->is_post = $is_post;
    $this->pVar = defined('PAGE_BAR') ? PAGE_BAR : 'myp' ;
    $url = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
    //计算出总页数
    $curPage = $this->getCurPage();

    $temp['sumPage'] = ceil($sum/$pageSize);
    //修改了,页码超出的bug
    if($curPage>$temp['sumPage']) $curPage=$temp['sumPage'];
    $temp['curPage'] = $curPage;
    $temp['nextPage'] = $temp['sumPage'] > $curPage ? ($curPage+1) : $temp['sumPage'];
    $temp['upPage'] = $curPage >1 ? $curPage-1 :1;
    $temp['endPage'] = $temp['sumPage'];
    $this->urlParamStr = $this->_makeUrl($url);
    $temp['urlPageStr'] = ($page=="") ? $this->_makeUrl($url) : $page.$this->urlParamStr;

    $this->sqlMoveNumber = $curPage <2 ? 0 : ($curPage-1)*$pageSize;
    $temp['sqlMoveNumber'] = $this->sqlMoveNumber;
    $temp['rowNo'] = $sum;
    $this->result = $temp;
    return $this->result;
    //print_r($temp);exit();
  }
  public function getSqlMove()
  {
    return $this->sqlMoveNumber;
  }
  public function getFooter()
  {
    $str= "共有 <FONT COLOR=#FF0033>{$this->result['rowNo']}</FONT> 条 <a href='{$this->result['urlPageStr']}{$this->result['upPage']}'";
    if($this->is_post) $str .=" onclick='return sanshi_page_post(this.href,{$this->result['upPage']});' ";
    $str .=" >上一页</a> ";
    $str .=" 当前 {$this->result['curPage']} 页";
    $str .=" 共有 {$this->result['sumPage']} 页";
    $str .=" <a href='{$this->result['urlPageStr']}{$this->result['nextPage']}'";
    if($this->is_post) $str .=" onclick='return sanshi_page_post(this.href,{$this->result['nextPage']});' ";
    $str .=" >下一页</a>";
    return $str;
  }
  public function getJumpPage()
  {
    if($this->is_post)
    {
      $str = " 跳到第 <select name='topage' size='1' onchange='sanshi_page_post(\"{$this->result['urlPageStr']}\"+this.value,this.value)'>\n";
    }else{
      $str = " 跳到第 <select name='topage' size='1' onchange='window.location=\"{$this->result['urlPageStr']}\"+this.value'>\n";
    }
    for($i=1;$i<=$this->result['sumPage'];$i++)
    {
      $str .= ($i==$this->result['curPage']) ? "<option value='$i' selected>$i</option>\n" : "<option value='$i'>$i</option>\n";
    }
    $str.="</select> 页";
    //输出form表单
    if($this->is_post)
    {
      $str .="<script type='text/javascript'><!--
            function sanshi_page_post(jump_link,page_no)
            {
                document.getElementById('sanshi_goPage').action = jump_link; document.getElementById('{$this->pVar}').value = page_no;
                document.getElementById('sanshi_goPage').submit();
                return false;
            }

// --></script>";
            $str .="<form name='sanshi_goPage' id='sanshi_goPage' method=post>";
            $str .="<input type=\"hidden\" name='{$this->pVar}' id='{$this->pVar}' value=0>";
            $_POST = isset($_POST) ? $_POST : array();
            foreach($_POST AS $k=>$v)
            {
              $str .="<input type=\"hidden\" name=\"{$k}\" id=\"{$k}\" value=\"{$v}\">";
            }
            $str .="</form>";
        }
    return $str;
  }
  public function getCurPage()
  {
    return isset($_GET[$this->pVar]) ? intval($_GET[$this->pVar]) : 1 ;
  }
  //分析出url的参数返回?后的参数,页码为空 包括问号
  private function _makeUrl($url)
  {
    $arrayUrl=parse_url($url);
    if(isset($arrayUrl['query']))
    {
      $q=$arrayUrl['query'];
      parse_str($q,$qParam);
      //print_r($qParam);
      if(array_key_exists($this->pVar,$qParam))
      {
        foreach ($qParam AS $k=>$v)
        {
          if($k !=$this->pVar) $temp[$k] = $v;
        }
        $temp[$this->pVar] = "";
        if(function_exists("http_build_query"))
          return '?'.http_build_query($temp);
        else
          return '?'.sanshi_http_build_query($temp);
      }else {
        return "?{$q}&{$this->pVar}=";
      }
    }else{
      return "?{$this->pVar}=";
    }

  }
}
function sanshi_http_build_query($a,$b='',$c=0)
{
  if (!is_array($a)) return false;
  foreach ((array)$a as $k=>$v)
  {
    if ($c)
      $k=$b."[".$k."]";
    elseif (is_int($k))
      $k=$b.$k;
    if (is_array($v)||is_object($v))
    {
      $r[]=http_build_query($v,$k,1);
      continue;
    }
    $r[]=$k."=".urlencode($v);
  }
  return implode("&",$r);
}
header('Content-type:text/html;charset=UTF8');

//print_r($_SERVER);
$p = new pagination();
$p->set(10,2,'page.php');
echo $p->getFooter();
echo $p->getJumpPage();

?>



宝剑厉不厉害,要看它的主人是谁,不信来PHP版块看看~!
‹‹ 上一贴:【其他】死循环:看谁死得更惨!   |   下一贴:【教程经验】有关 PHP 和 js 浮点运算的坑 ... ››
  发新话题
快速回复主题
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 友情链接 |意见反馈 | 网站地图
Copyright©2005-2018 51CTO.COM
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系:bbs@51cto.com