设为首页 收藏本站
查看: 605|回复: 0

[经验分享] php+ajax+mysql论坛帖子异步刷新搜索实现记录

[复制链接]

尚未签到

发表于 2016-10-21 09:48:40 | 显示全部楼层 |阅读模式
  

基本布局由属性选择搜索 和 搜索栏输入搜索两部分组成。
  一 属性选择搜索
  每个属性都是单选的,每次选择属性都会拼url然后异步刷新数据。
  获取url的基本函数如下:

//获取完整url
function geturl(){
var level ='&level=';
jQuery(".selectedOp .level a").each(function(){
var tt = $(this).attr("id");
var strs= new Array(); //定义一数组
strs=tt.split("_"); //字符分割
var typeid = strs[1];
typeid = typeid.substring(typeid.length-1,typeid.length);
level+='_'+typeid;
})
var price ='&price=';
jQuery(".selectedOp .price a").each(function(){
var tt = $(this).attr("id");
var strs= new Array(); //定义一数组
strs=tt.split("_"); //字符分割
var typeid = strs[1];
typeid = typeid.substring(typeid.length-1,typeid.length);
price+='_'+typeid;
})
var type ='&type=';
jQuery(".selectedOp .type a").each(function(){
var tt = $(this).attr("id");
var strs= new Array(); //定义一数组
strs=tt.split("_"); //字符分割
var typeid = strs[1];
typeid = typeid.substring(typeid.length-1,typeid.length);
type+='_'+typeid;
})
var url='';
url=level+price+type;
if(url!='&level=&price=&type='){
jQuery(".selectedOp dt").html('你已经选择:');
}
return url;
}

  

异步提交的基本函数为:

function AjaxGetData(url)
{
$.ajax({
url:"**********.php",
type:"get",
data:url,
dataType:"json",
success:function(jsonDate)
{
var jsObject= eval(jsonDate);
var content=jQuery(".con");            
var htmlstr='';
if(jsObject){
htmlstr+='<div class="pages_btns">'+jsObject[0]['multipage']+'</div>';
htmlstr+='<div class="mainbox threadlist"><form><table cellpadding="0" cellspacing="0"><thead class="category"><tr><td width="15"></td><th><dl><dt>排序:</dt><dd class="cur"><a href="#">最新发帖</a></dd><dd> | </dd><dd><a href="#">最后回复</a></dd></dl></th><td class="author">作者</td><td class="nums">回复</td><td class="lastpost">最后发表</td></tr></thead></table><table cellpadding="0" cellspacing="0" class="list">';
for(var i=0;i<jsObject.length;i++){
htmlstr+='<tbody><tr><td class="icon">';
htmlstr+='<a href="'+jsObject['forum_path']+'" target="_blank">['+jsObject['forumname']+']</a>';
htmlstr+='</td><th><span>'+'<a href="'+jsObject['path']+'" target="_blank">'+jsObject['subject']+'</a></span>';
if(jsObject['attachment']==1){
htmlstr+=' DSC0000.gif ';
}
htmlstr+='</th><td class="author"><cite>';
if(jsObject['authorid'] && jsObject['author']){
htmlstr+='<a href="space.php?uid='+jsObject['authorid']+'">'+jsObject['author']+'</a>';
}
htmlstr+='</cite><em>'+jsObject['dateline']+'</em></td>';
htmlstr+='<td class="nums"><strong>'+jsObject['replies']+'</strong> / <em>'+jsObject['views']+'</em></td>';
htmlstr+='<td class="lastpost"><em><a href="redirect.php?tid='+jsObject['tid']+'&goto=lastpost$highlight#lastpost">'+jsObject['lastpost']+'</a></em>';
htmlstr+='<cite>by';
if(jsObject['lastposter']){
htmlstr+=jsObject['lastposter'];
}else{
htmlstr+='匿名'+'</cite></td></tr></tbody>';
}
}            
}
else{
htmlstr+='<tbody><tr><th colspan="6">对不起,没有找到匹配结果。</th></tr></tbody>';
}
htmlstr+='</table></form></div>';
jQuery(".selectedNums p ").html('找到相关主题<strong>'+jsObject[0]['num']+'</strong>篇');   
content.html(htmlstr);
htmlstr='';
}
})
  
  二 解决了异步刷新数据的基本功能后,开始做搜索栏自动补全功能和搜索栏异步刷新的功能。搜索栏自动补全函数为:

//搜索栏补全
function lookup(inputString) {
if(inputString.length == 0) {
// Hide the suggestion box.
$('#suggestions').hide();
} else {
$.post("**********.php?action=getcar", {queryString: ""+inputString+""}, function(data){
if(data.length >0) {
$('#suggestions').show();
$('#autoSuggestionsList').html(data);
}
});
}
} // lookup
function fill(thisValue) {
$('#inputString').val(thisValue);
setTimeout("$('#suggestions').hide();", 200);
}
  

搜索框搜索异步刷新函数为:

//搜索框搜索
function getsearch(){
var searchname=$("#inputString").val();
var ispicture=jQuery("#picture").attr('class');
if(ispicture=='current'){
var url='&action=search&picture=1&searchname='+searchname;   
}else{
var url='&action=search&picture=0&searchname='+searchname;   
}
AjaxGetData(url);
}
  

现在又遇到了分页的问题,怎么实现分页呢?属性搜索分页和搜索栏分页的实现。。。。(而且中间有出现图片贴和非图片贴的新分类)
  一 属性选择分页

    //属性搜索分页
function turnpage(page){
var url =geturl();
var ispicture=jQuery("#picture").attr('class');
if(ispicture=='current'){  //是否是图片贴
url+='&picture=1';   
}else{
url+='&picture=0';   
}
url+='&page='+page;
AjaxGetData(url);
}
  

二 搜索框搜索分页

    //搜索框输入搜索分页
function turnpagesearch(page){
var searchname=$("#inputString").val();
var ispicture=jQuery("#picture").attr('class');
if(ispicture=='current'){  //是否是图片贴
var url='&action=search&picture=1&searchname='+searchname;   
}else{
var url='&action=search&picture=0&searchname='+searchname;   
}
url+='&page='+page;
AjaxGetData(url);
}
//快捷搜索
function fastsearch(name){
$("#inputString").val(name);
if(ispicture=='current'){  //是否是图片贴
var url='&action=search&picture=1&searchname='+searchname;   
}else{
var url='&action=search&picture=0&searchname='+searchname;   
}
var url='&action=search&searchname='+name;
AjaxGetData(url);
}
  

最后补充后台的分页处理函数
  

function multi_search($num, $perpage, $curpage, $mpurl, $maxpages = 0, $page = 6, $autogoto = TRUE, $simple = FALSE) {
global $maxpage,$aname;
$ajaxtarget = !empty($_GET['ajaxtarget']) ? " ajaxtarget=\"".dhtmlspecialchars($_GET['ajaxtarget'])."\" " : '';
$multipage = '';
//$mpurl .= strpos($mpurl, '?') ? '&' : '?';
$realpages = 1;   
if($num > $perpage) {
$offset = 2;
$realpages = @floor($num/$perpage);
if($num % $perpage != 0) $realpages++;
$pages = $maxpages && $maxpages < $realpages ? $maxpages : $realpages;
if($page > $pages) {
$from = 1;
$to = $pages;
} else {
$from = $curpage - $offset;
$to = $from + $page - 1;
if($from < 1) {
$to = $curpage + 1 - $from;
$from = 1;
if($to - $from < $page) {
$to = $page;
}
} elseif($to > $pages) {
$from = $pages - $page + 1;
$to = $pages;
}
}
if ($ajaxtarget) {
$a_name = '';
} else {
$a_name = 'name="AW"';
}      
$multipage = ($curpage > 1 && !$simple ? '<a '.$a_name.' style="color:#5783b1" href="'.$mpurl.($curpage - 1).')'.$aname.'" class="prev"'.$ajaxtarget.'>上一页</a>' : '') . ($curpage - $offset > 1 && $pages > $page ? '<a name="AW" style="color:#5783b1" href="'.$mpurl.'1)'.$aname.'" class="first"'.$ajaxtarget.'>1...</a>' : '');
for($i = $from; $i <= $to; $i++) {
$multipage .= $i == $curpage ? '<strong>'.$i.'</strong>' :
'<a '.$a_name.' style="color:#5783b1" href="'.$mpurl.$i.')'.($ajaxtarget && $i == $pages && $autogoto ? '#' : '').$aname.'"'.$ajaxtarget.'>'.$i.'</a>';
}
$multipage .= ($to < $pages ? '<a '.$a_name.' style="color:#5783b1" href="'.$mpurl.$pages.')'.$aname.'" class="last"'.$ajaxtarget.'>...'. $pages .'</a>' : '');  //末页
$multipage .= ($curpage < $pages && !$simple ? '<a '.$a_name.' style="color:#5783b1" href="'.$mpurl.($curpage + 1).')'.$aname.'" class="next"'.$ajaxtarget.'>下一页</a>' : '');
$multipage = $multipage ? '<div class="pages"><form>'.(!$simple ? '<em>共'. $pages .'页</em>' : '').$multipage.'</form></div>' : '';
}
$maxpage = $realpages;
return $multipage;
}


  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-289249-1-1.html 上篇帖子: mysql中null值的排序问题分析 下篇帖子: mysql根据in中出现的先后顺序排序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表