最近在搞生成PHP 生成JSON,想实现分页,下边代码已能把数组生成了,分页要怎实现了?想实现每10条分一次页
<?php
    
  //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 < mysql_num_rows($query); $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 < mysql_num_rows($query) -1)
            $json .= ",";
       else
           $json .= "]}";
  }
    
    $response = $_GET["callback"] . $json;
    echo $response;    //close connection
    mysql_close($server);?>
phpjson

解决方案 »

  1.   

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

  2.   

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

  3.   

    前端部分,比如用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下
      

  4.   

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

  5.   

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

  6.   

    我们的android开发全部都是调用的php接口,非常方便。