思路
点击时:
1、得到当前页数据 2、得到当前分页连接html
分别替换数据,分布连接
第1页
//该专家全部相关问答
$m = new Model();
$page = I("get.page", 1, "intval");
$start = ($page - 1) * 6;
$sql = "SELECT post_ask.expert_id,post_ask.ask_id,post_ask.ask_body,post_ask.ask_user,post_ask.ask_time,post_answer.answer_body,post_answer.answer_user,post_answer.answer_time from post_ask
right JOIN post_answer on post_ask.ask_id = post_answer.ask_id and post_answer.answer_body is not null
where post_ask.ask_id is not null and post_ask.ask_body <>'' and (post_ask.expert_id =$expert_id and post_answer.answer_user =$expert_id)
GROUP BY post_ask.ask_id
LIMIT $start, 6";
$rela_ask_answer = $m->query($sql);
foreach ($rela_ask_answer as $key => &$value) {
$ask_user_name = M('user')->where("id = " . $value['ask_user'])->getField('nickname');
$value['ask_user'] = $ask_user_name ? mb_substr($ask_user_name, 0, 12) : "匿名用户";
if($value['label_id'] == NULL){
$value['label_id'] = '';
}
$map['label_id']=array('in',$value['label_id']);
$ask_list[$key]['label_name']=M('label_list')->where($map)->select();
}
//分页处理
$sql = "SELECT count(*) as count from (SELECT post_ask.expert_id,post_ask.ask_id,post_ask.ask_body,post_ask.ask_user,post_ask.ask_time,post_answer.answer_body,post_answer.answer_user,post_answer.answer_time from post_ask
right JOIN post_answer on post_ask.ask_id = post_answer.ask_id and post_answer.answer_body is not null
where post_ask.ask_id is not null and post_ask.ask_body <>'' and (post_ask.expert_id =$expert_id and post_answer.answer_user =$expert_id)
GROUP BY post_ask.ask_id ) as u";
$rela_ask_answer_info = $m->query($sql);
$rela_ask_answer_count = $rela_ask_answer_info[0]['count'];
$total_page = ceil($rela_ask_answer_count / 6);
//$link_url = U('Coach/zhuanjia/zj_id/', array('page' => 'ppp'));
$page_htmls = pagination($total_page, $page, "javascript:void(0);", 5, "class='nu_page'");
$zhuanjia_name = $getExpertLists[0]['nickname'];
$this->assign('zhuanjia_name', $zhuanjia_name);
$this->assign('pageLinks', $page_htmls);
$this->assign('rela_ask_answer', $rela_ask_answer);
2步:前端ajax请求
//ajax无刷新翻页
//上一页,下一页
$('.next').live("click", function () {
var page = parseInt($('.ck-page .curr').html()) + 1;
get_page_list(page);
})
$('.prev').live("click", function () {
var page = parseInt($('.ck-page .curr').html()) - 1;
get_page_list(page);
})
//页码list 1,2,3,4,5
$('.nu_page').live("click", function () {
var page = $(this).html(); //获得点击页码
var expert_id = "{$expert_id}";
var Ajaxurl = "/index.php/Coach/get_zhuanjia_wenda"; //提交点按钮后的数据
$.ajax({
type: 'post',
url: Ajaxurl,
data: "page=" + page+"&expert_id="+expert_id,
success: function (mag) {
if (mag) {
//console.log(eval(mag));
var htmls = eval(mag);
var zhuanjia_name = "{$zhuanjia_name}";
console.log(htmls);
//console.log(htmls.length);
var str_html = "";
for ($i = 0; $i < (htmls.length) - 1; $i++) {
str_html = str_html + '<li>' + '<ul class=\'askul\'>' +
'<li>' + '<img src=\'/Public/img/问.png\' alt=\'\' class=\'askimg\'>' + '<p class=\'askp\'>' +
'<a href=\'/wenda/'+htmls[$i]['ask_id']+'.html\' target=\'_blank\'>' +htmls[$i]['ask_body']+ '</a></p><span class=\'asktime\'>'+htmls[$i]['ask_time']+
'</span><span class=\'askactor\'>By '+htmls[$i]['ask_user']+'</span></li>' +
'<li>' + '<img src=\'/Public/img/huida.png\' alt=\'\' class=\'askimg\'>' + '<p class=\'askp\'>' +
'<a href=\'/wenda/'+htmls[$i]['ask_id']+'.html\' target=\'_blank\'>' +htmls[$i]['answer_body']+ '</a></p><span class=\'asktime\'>'+htmls[$i]['answer_time']+
'</span><span class=\'askactor\'>By '+zhuanjia_name+'</span></li>' +
'</ul>' +
'</li>'
}
$("#ask_lists").html(str_html);
console.log(str_html);
$(".wenda_pagelink").html(eval(mag)[htmls.length-1]);
}
}
});
})
//上下页的翻动
function get_page_list(page){
var page = page;
var expert_id = "{$expert_id}";
var Ajaxurl = "/index.php/Coach/get_zhuanjia_wenda"; //提交点按钮后的数据
$.ajax({
type: 'post',
url: Ajaxurl,
data: "page=" + page+"&expert_id="+expert_id,
success: function (mag) {
if (mag) {
//console.log(eval(mag));
var htmls = eval(mag);
var zhuanjia_name = "{$zhuanjia_name}";
console.log(htmls);
//console.log(htmls.length);
var str_html = "";
for ($i = 0; $i < (htmls.length) - 1; $i++) {
str_html = str_html + '<li>' + '<ul class=\'askul\'>' +
'<li>' + '<img src=\'/Public/img/问.png\' alt=\'\' class=\'askimg\'>' + '<p class=\'askp\'>' +
'<a href=\'/wenda/'+htmls[$i]['ask_id']+'.html\' target=\'_blank\'>' +htmls[$i]['ask_body']+ '</a></p><span class=\'asktime\'>'+htmls[$i]['ask_time']+
'</span><span class=\'askactor\'>By '+htmls[$i]['ask_user']+'</span></li>' +
'<li>' + '<img src=\'/Public/img/huida.png\' alt=\'\' class=\'askimg\'>' + '<p class=\'askp\'>' +
'<a href=\'/wenda/'+htmls[$i]['ask_id']+'.html\' target=\'_blank\'>' +htmls[$i]['answer_body']+ '</a></p><span class=\'asktime\'>'+htmls[$i]['answer_time']+
'</span><span class=\'askactor\'>By '+zhuanjia_name+'</span></li>' +
'</ul>' +
'</li>'
}
$("#ask_lists").html(str_html);
console.log(str_html);
$(".wenda_pagelink").html(eval(mag)[htmls.length-1]);
}
}
});
}
3步 分布得数据方法
$page_htmls = str_replace("title='第1页'","title='第1页' class='nu_page'",$page_htmls); //专家页面相关问答分页请求
public function get_zhuanjia_wenda()
{
//该专相关问答
$m = new Model();
$page = $_POST['page'];$expert_id = $_POST['expert_id'];
$start = ($page - 1) * 6;
$sql = "SELECT post_ask.expert_id,post_ask.ask_id,post_ask.ask_body,post_ask.ask_user,post_ask.ask_time,post_answer.answer_body,post_answer.answer_user,post_answer.answer_time from post_ask
right JOIN post_answer on post_ask.ask_id = post_answer.ask_id and post_answer.answer_body is not null
where post_ask.ask_id is not null and post_ask.ask_body <>'' and (post_ask.expert_id =$expert_id and post_answer.answer_user =$expert_id)
GROUP BY post_ask.ask_id
LIMIT $start, 6";
$rela_ask_answer = $m->query($sql);
foreach ($rela_ask_answer as $key => &$value) {
$ask_user_name = M('user')->where("id = " . $value['ask_user'])->getField('nickname');
$value['ask_user'] = $ask_user_name ? mb_substr($ask_user_name, 0, 12) : "匿名用户";
if($value['label_id'] == NULL){
$value['label_id'] = '';
}
$map['label_id']=array('in',$value['label_id']);
$ask_list[$key]['label_name']=M('label_list')->where($map)->select();
}
//分页处理
$sql = "SELECT count(*) as count from (SELECT post_ask.expert_id,post_ask.ask_id,post_ask.ask_body,post_ask.ask_user,post_ask.ask_time,post_answer.answer_body,post_answer.answer_user,post_answer.answer_time from post_ask
right JOIN post_answer on post_ask.ask_id = post_answer.ask_id and post_answer.answer_body is not null
where post_ask.ask_id is not null and post_ask.ask_body <>'' and (post_ask.expert_id =$expert_id and post_answer.answer_user =$expert_id)
GROUP BY post_ask.ask_id ) as u";
$rela_ask_answer_info = $m->query($sql);
$rela_ask_answer_count = $rela_ask_answer_info[0]['count'];
$total_page = ceil($rela_ask_answer_count / 6);
//$link_url = U('Coach/zhuanjia/zj_id/', array('page' => 'ppp'));
$page_htmls = pagination($total_page, $page, "javascript:void(0);", 5, "class='nu_page'");
$page_htmls = str_replace("title='第1页'","title='第1页' class='nu_page'",$page_htmls);
array_push($rela_ask_answer,explode('@',$page_htmls));//将分页链接加入 相关问答数组中,一起json返回给前端
$this->ajaxReturn($rela_ask_answer);
}
其中改变一下 分页类中分页连接,加class参数,class方法点击触发
function公共类中
/**
*
* @param unknown $total_page
* @param unknown $current_page
* @param unknown $link_url
* @param number $type
* @return string
*
* e.g
* pagination($total_page, $current_page, $link_url);
*/
function pagination($total_page, $current_page, $link_url, $type = 1, $a_class='') {
if ($total_page <= 1) {
return '';
}
$link_head = array();
parse_str($_SERVER['QUERY_STRING'], $query);
if (isset ($query['page'])) {
unset ($query['page']);
}
foreach ($query as $k => $v) {
//去除无效参数名
if (empty($v) && $v != 0) {
unset($query[$k]);
continue;
}
$link_head[] = $k.'='.urlencode($v);
}
$link_head[] = 'page=';
$vhead = strtolower($_SERVER['PHP_SELF']).'?'.implode('&', $link_head);
$separator = '';
$content = '';
if (1 == $type) {
$prev = "<a title='上一页' href='".str_replace('ppp', $current_page - 1, $link_url)."' class='pagePrev ajaxLink'> </a>";
$next = "<a title='下一页' href='".str_replace('ppp', $current_page + 1, $link_url)."' class='pageNext ajaxLink'> </a>";
if ($current_page > 1) {
$content .= $prev;
}
$min = $total_page <= 6? 1: (($current_page - 2) > 0 ? $current_page - 2 : 1);
$max = $total_page <= 6? $total_page: $min + 4;
if($max > $total_page){
$max = $total_page;
$min = $max - 4;
}
for($i = $min; $i <= $max; $i++){
$content .= ($i == $current_page)
? "<a class='selected' style='padding-left:0;'> ".$i." </a>"
: "<a title='第" . $i . "页' href='" . str_replace('ppp', $i, $link_url) . "' class='ajaxLink'>" . $i . "</a>";
}
if($current_page < $total_page){
$content .= $next;
}
} else if (5 == $type) {
$min = $total_page <= 6 ? 1: (($current_page - 2) > 0 ? $current_page - 2 : 1);
$prev = "<a title='上一页' href='".str_replace('ppp', $current_page - 1, $link_url)."' class='prev'>上一页</a>";
if ($min > 1) {
$prev .= "<a title='第1页' href='".str_replace('ppp', 1, $link_url)."'>1</a>";
}
if ($min > 2) {
$prev .= "<span class='ellipsis'>...</span>";
}
$next = "<a title='下一页' href='".str_replace('ppp', $current_page + 1, $link_url)."' class='next'>下一页<s></s></a>";
if($current_page > 1){
$content .= $prev;
}
$min = $total_page <= 6 ? 1: (($current_page - 2) > 0 ? $current_page - 2 : 1);
$max = $total_page <= 6 ? $total_page: $min + 4;
if($max > $total_page){
$max = $total_page;
$min = $max - 4;
}
for($i = $min; $i <= $max; $i++){
$content .= ($i == $current_page)
? "<span class='curr'> ".$i." </span>"
: "<a $a_class title='第" . $i . "页' href='" . str_replace('ppp', $i, $link_url) . "'>" . $i . "</a>";
}
if ($max < $total_page - 1) {
$content .= "<span class='ellipsis'>...</span>";
}
if ($max < $total_page) {
$content .= "<a $a_class title='第".$total_page."页' href='".str_replace('ppp', $total_page, $link_url)."'>".$total_page."</a>";
}
if($current_page < $total_page){
$content .= $next;
}
}
return $content;
}
总结: 一个数据信息 一个分页信息
public function getMoreEmployeeList()
{
$company_id = I('company_id'); //公司id
$page = $_POST['page'];
$start = ($page - 1) * 20;
$sql = "SELECT * from employee where company_id = '$company_id'
LIMIT $start, 20";
$list = M()->query($sql);
//分页处理
$sql = "SELECT count(*) as count from employee";
$count_info = M()->query($sql);
$count_infos = $count_info[0]['count'];
$total_page = ceil($count_infos / 20);
$page_htmls = pagination($total_page, $page, "javascript:void(0);", 5, "class='nu_page'");
$page_htmls = str_replace("title='第1页'","title='第1页' class='nu_page'",$page_htmls);
array_push($list,explode('@',$page_htmls));//将分页链接加入 数组中,一起json返回给前端
apiReturnMsg(1, '员工列表数据',$list);
}