场景:请教PHP生成JSON分页有关问题
请问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);
?>
php
json
分享到:
------解决方案--------------------
你可先分页,再生成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
//循环处理 每条数据
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
$lists[] = $row;
}
$result['lists'] = $lists;
echo json_encode($result);
exit;
思路与楼上一样,只不过这里多处理一下了记录总数,因为这个查询可以仅仅在第一次时候进行,返回给前端后缓存起来。
之后的查询把total放到GET中,效率上略有优势。
我记得之前有封装过这类东西,不知道你这个应用场景是不是一般的web分页,如果是,可以找到不少类似的封装函数的。google下
------解决方案--------------------
不懂为什么要引入json,用php直接分页输出就好了呀。