Home  >  Article  >  Backend Development  >  请问PHP生成JSON分页问题

请问PHP生成JSON分页问题

WBOY
WBOYOriginal
2016-06-23 14:11:451149browse

php json

最近在搞生成PHP 生成JSON,想实现分页,下边代码已能把数组生成了,分页要怎实现了?想实现每10条分一次页
    
  //connection information
  $host = "XXX";
  $user = "XXX";
  $password = "XX";
  $database = "XX";
    
    //make connection
  $server = mysql_connect($host, $user, $password);
  $connection = mysql_select_db($database, $server);
    
    //query the database
mysql_query('set character set "utf8"');
  $query = mysql_query("SELECT * FROM akb order by infoid desc");
 
    //start json object
    $json = '{"tags":['; 
    
    //loop through and return results
  for ($x = 0; $x      $row = mysql_fetch_assoc($query);
    $infoid=$row["InfoId"];
  $Title=$row["Title"]; 
   $pic=$row["LogoImg"]; 
   $bpic=$row["LogoImg2"];
   $time=$row["AccTime"];
   $info=$row["Burden"];
    $url=$row["ExtUrl"];
   
   
   $json .= '{"id":"'. $infoid .'","title":"'.$Title.'","pic":"'.$pic.'","bpic":"'.$bpic.'","time":"'.$time.'","info":"'. $info .'","url":"'. $url.'"}';
        
      
if ($x              $json .= ",";
       else
           $json .= "]}";
  }
    
    $response = $_GET["callback"] . $json;
    echo $response;

    //close connection
    mysql_close($server);

?>

回复讨论(解决方案)

你可先分页,再生成json.

先生成数组,再用json_encode()生成json。

分页不是在客户端用JS分的,分页通常都在服务器端用PHP计算出需要获取的数据库条数,然后直接从数据库中获取选择的记录。
比如你通过GET或POST方法指导了现在是第几页,
$page = 1;//第几页
$pagenum = 10;//每页几条
$start = ($page - 1) * $pagenum;//这个就是计算出开始的记录数
//你的SQL语句就可以这样写
$sql = "SELECT * FROM akb order by infoid desc LIMIT $start,$pagenum";

前端部分,比如用jquery库

var page=1;var total=-1;$.getJSON('list.php?total='+total+'&page='+page,function(data){     var len,i,htm;     total = data.total;     lists = data.lists;     len=data.length;     htm = '';     for (i=0; i<len;i++){          //循环处理 每条数据          htm += lists[i].title;     }     //将处理后的 第 page 页数据插入页面指定的DOM中     $('listDom').html(htm);     if(page==1){         //当加载第一页的时候 根据返回的数目 生成分页代码 插入到页面指定DOM中         //这里就要对 分页按钮绑定事件 加载数据的事件         htm = .......         $('pageDom').html(htm);     }})


上面的JS大概是个意思,用的时候不能直接Copy,根据自己的情况写。
后端部分

$result = array();if($total == -1){     $result['total'] = msql查询符合条件的总记录数}else{     $result['total'] =$total;}//当前页数$page = min(1,$page);//每页加载数据条数$pgerow = 10;$sql = "SELECT * FROM akb order by infoid desc LIMIT ".($page-1)*$pagerow.",$pagerow";$lists = array();$query = mysql_query($sql);for ($x = 0; $x < mysql_num_rows($query); $x++) {      $lists[] = $row;}$result['lists'] = $lists;echo json_encode($result);exit;


思路与楼上一样,只不过这里多处理一下了记录总数,因为这个查询可以仅仅在第一次时候进行,返回给前端后缓存起来。
之后的查询把total放到GET中,效率上略有优势。

我记得之前有封装过这类东西,不知道你这个应用场景是不是一般的web分页,如果是,可以找到不少类似的封装函数的。google下

不懂为什么要引入json,用php直接分页输出就好了呀。

用来android开发调用数据用,不会JAVA,所以用php来生成!

用来android开发调用数据用,不会JAVA,所以用php来生成!
我们的android开发全部都是调用的php接口,非常方便。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn