关于thinkphp查询以及分页的问题

WBOY
發布: 2016-06-23 13:31:49
原創
1021 人瀏覽過

控制器里面的search方法:

	public function search(){		import("@.ORG.Page");		$list = D('Blog');		$keyword = trim($this->_post('keyword','htmlspecialchars'));		$sql = "SELECT b.*, a.`content`, u.`username`			FROM blog b			LEFT JOIN blog_attribute a ON a.`blog_id`=b.`id`			LEFT JOIN user u ON u.`id`=b.`user_id`			";		if(!empty($keyword)){			$sql .= " WHERE b.`title` LIKE '%{$keyword}%' OR a.`content` LIKE '%{$keyword}%'";		}		$count = count($list->query($sql));		$Page = new Page($count,2);		$firstRow = $Page->firstRow;		$listRows = $Page->listRows;		$this->data = $list->searchBlog($sql,$firstRow,$listRows);		$xxx['data'] = $this->data;		$page = $Page->show();		$xxx['page'] = $page;		//$this->data['page'] = $page;		//$this->assign("page",$page);		//var_dump(urldecode(json_encode($this->data)));		$this->show(urldecode(json_encode($xxx)));	}
登入後複製

列表页的代码:
<import type="css" file="Css.rightContent" /><import type="js" file="js.jquery_min" /><script type="text/javascript">$(document).ready(function(){	$("button").click(function(){		var keyword = $(this).parent("div").children("input").val();		$.ajax({			url: "{:U('Blog/search')}",			type: "POST",			data: {"keyword":keyword},			error:function(e){				alert("查询出错!");			},			success:function(data){				$("#cell_tb_list").empty();				if(data != ""){					data = eval('('+data+')');					//alert(data.data.length);					var layer = "<table class=\"has_checkbox\">";					layer    += 	"<colgroup>";					layer    +=			"<col class=\"col1\">";					layer    +=			"<col class=\"col2\">";					layer    +=			"<col class=\"col3\">";					layer    +=			"<col class=\"col4\">";					layer    +=			"<col class=\"col5\">";					layer    += 	"</colgroup>";					layer    += 	"<tbody>";					layer    += 	"<tr class=\"hoverout\">";					layer    += 		"<th class=\"td2\">发布人</th>";					layer    += 		"<th class=\"td2\">博客标题</th>";					layer    += 		"<th class=\"td2\">发布时间</th>";					layer    += 		"<th class=\"td2\">更新时间</th>";					layer    += 		"<th class=\"td2\">操作</th>";					layer    += 	"</tr>";					for(var i=0;i<data.data.length;i++){						layer += "<tr id=\"testhere\">";						layer += "<td>"+data.data[i].username+"</td>";						layer += "<td>"+data.data[i].title+"</td>";						layer += "<td>"+data.data[i].create_time+"</td>";						layer += "<td>"+data.data[i].update_time+"</td>";						layer += "<td>修改|删除</td>";						layer += "</tr>";					}					layer    +=			"<tr class=\"hoverout\" ><td colspan=\"6\" id=\"td_click\" style=\"text-align:right;\">"+data.page+"</td></tr>";					layer    += 	"</tbody>";					layer    += "</table>";		//					var layer = "<h1>"+data[0].create_time+"</h1>";					$("#cell_tb_list").append(layer);				}else{					alert("no");				}			}		});	});});</script><div id="stage" class="content">    <div id="main">        <div class="title">            <div class="m_bg">博客列表页</div>        </div>        <div class="mainContent">            <div class="main_content">                <div class="location">                    <div class="location_main item">						<div class="search_main">							<!--<form action="__URL__/search" id="search_form" method="post">-->							<input type="text" id="query_input" class="search input_txt" name="query_keyword">							<button class="btn" title="Submit Search" type="submit"></button>							<!--</form>-->						</div>                    </div>                </div>                <div class="cell_tb_list" id="cell_tb_list"></div>			            </div>        </div>    </div></div>
登入後複製

个人的想法是点了列表页之后出来的就是一个搜索框,填写搜索信息之后在当前页面显示搜索到的信息,然后加上分页。分页的各个页面都是在当前页面下显示。
这样的话,列表第一页是现实正常的 ,但是点击了后面的分页之后就出现了
我是新手,这方面不是很懂,希望大家帮忙看看怎么修改才能是分页能够正常。分页类就是使用的thinkphp原来的,稍微有点样式的小改动。


回复讨论(解决方案)

没人看的吗

是用ajax获取服务器端的数据。你点后面的分页看看返回的json数据。或者可以在后台直接调试,给几个参数,在服务器端看看数据是不是正常。

是用ajax获取服务器端的数据。你点后面的分页看看返回的json数据。或者可以在后台直接调试,给几个参数,在服务器端看看数据是不是正常。


我的最后一张图就是点击第二页出来的结果,返回的数据就是第二页的数据

你要修改page类才可以点下一页的,否则就输出了春json格式

第二页返回的数据不正常吗,最好是在后端调试一下。

会不会跟你的那个分隔符有关系?试试把{}换成<{}>

http://dadaboke.com直接使用thinkphp框架中分也类就好了,都用好多次,蛮好用的,自己也可以改样式。

这个好像没办法,因为你是ajax提交返回的,除了改page类,还有一个补救办法,

$(function(){     $('.page a').click(function(){         $.get($(this).attr('href'),function(data){             $('#index_content').html(data);         })         return false;     }) }) 
登入後複製

得到data后你再按你的格式处理下,你可以试一下,是可以的

这个应该很好实现吧?做两个模板就可以解决了,不用那么复杂!
你看看这篇文章 http://www.23kaiyuan.com/516.html

请问楼主怎么解决的?

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!