sphinx ajax搜索分页,memcache缓存,批量删除

控制器层

<?php
namespace frontend\controllers;

use Yii;
use yii\web\Controller;
//use frontend\models\Zhan;
use yii\data\Pagination;
use SphinxClient;
use yii\db\Query;
use yii\widgets\LinkPager;
use yii\caching\MemCache;
class SphinxController extends Controller
{
        //安装coreseek,进行测试
        public function actionList()
        {
          //获取搜索值
	      $key_word = Yii::$app->request->get(‘key‘);

	      //memcache缓存
	      $mem=new Memcache();
    	  if($key_word)
    	  {
    		//key值
    		$serach=md5($key_word);
    		$num=$mem->get($serach);
    		if($num)
    		{
                if($num<5)
                {
                	$mem->set($serach,$num+1,3600);
                }
                else
                {
                	$data=$mem->get(‘serach‘);
                    //var_dump($data);die;
                	if($data==‘‘)
                	{
                		$data=array();
                	}
                	if(!in_array($key_word,$data))
                	{
                       $data[]=$key_word;
                       $mem->set(‘serach‘,$data,3600);
                	}
                }
    		}
    		else
    		{
    			$mem->set($serach,‘1‘,3600);
    		}
          }
			//分页
			$pager = new Pagination();
			$pager->defaultPageSize = 3;
			$pager->totalCount = 100;
            //使用shinx
			$cl = new SphinxClient();
			$cl -> SetServer(‘127.0.0.1‘,9312);
			$cl -> SetConnectTimeout(3);
			$cl -> SetArrayResult(true);
			$cl -> SetMatchMode(SPH_MATCH_ANY);
			//$cl->SetFilter(‘cat_id‘,[0]);
			$cl->SetLimits($pager->getOffset(), $pager->getLimit());

			$res = $cl->Query($key_word,"*");
			//print_r($res);die;
			$pager->totalCount = $res[‘total‘];

			$rows = array();
			if($res[‘total‘]>0)
			{
				$ids = [];
				foreach ($res[‘matches‘] as $key => $val)
				{
					$ids[] = $val[‘id‘];
				}
				$model = new Query();
				$rows = $model->from(‘zhan‘)->where([‘in‘, ‘id‘, $ids])->andWhere([‘status‘=>0])->all();
			}
			$linkPager=LinkPager::widget([‘pagination‘=>$pager]);
			//从memcache取值
			$info=$mem->get(‘serach‘);

			if(Yii::$app->request->isAjax){
				Yii::$app->response->format=\yii\web\Pesponse::FORMAT_JSON;
				return [‘rows‘=>$rows,‘linkPager‘=>$linkPager,‘info‘=>$info];

			}
			//print_r($res);die;
			return $this->render(‘index‘,[‘linkPager‘=>$linkPager, ‘rows‘=>$rows,‘info‘=>$info]);
	}
	//批量删除
	public function actionDel()
	{
		$str=$_GET[‘ids‘];
		if($str == ‘‘)
		{
			echo ‘请选择对象‘;
		}
		$a=Yii::$app->db;
		$res=$a->createCommand("delete from zhan where id in ($str)")->execute();
		if($res)
		{
			echo ‘1‘;
		}
	    else
	    {
	    	echo ‘-1‘;
	    }
	}
	//隐藏
	public function actionPcang()
	{
		$str=$_GET[‘ids‘];
		if($str == ‘‘)
		{
			echo ‘请选择对象‘;
		}
		$a=Yii::$app->db;
		$res=$a->createCommand("update zhan set status=1 where id in ($str)")->execute();
		if($res)
		{
			echo ‘1‘;
		}
	    else
	    {
	    	echo ‘-1‘;
	    }
	}

}
?>

		视图层

<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use yii\widgets\LinkPager;

$form = ActiveForm::begin([
    ‘method‘ => ‘get‘,
    ‘action‘ => ‘index.php?r=sphinx/list‘
]) ?>

   关键字:<input type="text" name="key">
   <?= Html::submitButton(‘搜索‘, [‘class‘ => ‘btn btn-primary‘]) ?>
   <input type="checkbox" name=‘ids[]‘ class=‘yin‘ onclick="pcang()"  >显示隐藏
   <?php ActiveForm::end() ?>

<a href="javascript:void(0)" onclick="qx()">全选</a>||
<a href="javascript:void(0)" onclick="fx()">反选</a>||
<a href="javascript:void(0)" onclick="qbx()">全不选</a>||
<a href="javascript:void(0)" onclick="del()">删除</a>

<!--遍历数组-->
<div id="rows">
<p>
<?php if($info){
foreach ($info as $key => $v) {?>
<font color="red"><?php echo $v;?></font>

<?php  }}?>
 </p>
<?php foreach ($rows as $key => $v) {?>
   <input type="checkbox" name="ids[]" class="ids" value="<?php echo $v[‘id‘] ?>" >
   <?php echo $v[‘title‘].‘<br/>‘ ?>
<?php }	?>
</div>

<div id="pager">
<?=  $linkPager?>
</div>

<!--ajax分页和关键字变红-->
<?php $this->beginBlock(‘test2‘)?>
$(document).on(‘click‘,‘.pagination a‘,function(){
	var href=$(this).attr(‘href‘);
	$.getJson(href,function(data){
       var rows=data.rows;
       var html=‘‘;
       for(var i=0;i<rows.length;i++){
       html+=‘<p>‘+ rows[i].name +‘</p>‘;
       }
       $(‘#rows‘).html(html);
       $(‘#pager‘).html(data.pagination);
	})
	return false;
});
//全选
function qx()
{
   var ids=$(".ids");
   for(var i=0;i<ids.length;i++)
   {
     ids[i].checked=true;
   }
}
//全不选
function qbx()
{
   var ids=$(‘.ids‘);
   for(var i=0;i<ids.length;i++)
   {
     ids[i].checked=false;
   }
}
//反选
function fx()
{
   var ids=$(‘.ids‘);
   for(var i=0;i<ids.length;i++)
   {
      ids[i].checked=!ids[i].checked;
   }
}
//删除
function del()
{
    var ids=$(‘.ids‘);
    var str=‘‘;

    for(var i=0;i<ids.length;i++)
    {
      if(ids[i].checked == true){
          str+=‘,‘+ids[i].value;
      }
    }
    ids=str.substr(1);
    if(ids == ‘‘){
      alert(‘请选择对象‘);
    }
    var url="index.php?r=sphinx/del";
    var data={‘ids‘:ids};
    $.get(url,data,function(msg)
    {
        //alert(msg);
        if(msg==-1)
        {
           alert(‘删除失败‘);
        }
        else
        {
            location.href="index.php?r=sphinx/list";
        }
    });
}
//批量隐藏
function pcang()
{
   var ids=$(‘.ids‘);
    var str=‘‘;
    for(var i=0;i<ids.length;i++)
    {
      if(ids[i].checked==true)
      {
        str+=‘,‘+ids[i].value;
      }

    }
    ids=str.substr(1);
    //alert(ids);
    var data={‘ids‘:ids};
    var url="index.php?r=sphinx/pcang";
    $.get(url,data,function(msg){
      //alert(msg);
      if(msg==-1)
      {
        alert(‘失败‘);
      }
      else
      {
        location.href=‘index.php?r=sphinx/list‘;
      }
    });

}
<?php $this->endBlock();$this->registerJs($this->blocks[‘test2‘], \yii\web\View::POS_END);?>
时间: 2024-10-18 21:13:48

sphinx ajax搜索分页,memcache缓存,批量删除的相关文章

5月21 练习AJAX的查看详细及批量删除

老师讲过之后的复习: 显示数据的代码部分: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta htt

JAVAEE——BOS物流项目04:学习计划、datagrid、分页查询、批量删除、修改功能

1 学习计划 1.datagrid使用方法(重要) n 将静态HTML渲染为datagrid样式 n 发送ajax请求获取json数据创建datagrid n 使用easyUI提供的API创建datagrid(掌握) 2.实现取派员分页查询 n 调整页面基于datagrid发送ajax请求 n 创建PageBean封装分页参数 n 定义通用分页查询方法 n 将分页查询结果转为json返回 3.取派员批量删除 n 页面调整 n 服务端实现 4.取派员修改 n 页面调整 n 服务端实现 2 data

thinkphp5 Ajax搜索分页

function sousuo($page){ var URL=''; if($page){ URL='__URL__/index/usercenter/selectorder?page='+$page; }else { URL='__URL__/index/usercenter/selectorder'; } var ktime=$("#some_class_1").val(); var eyime=$("#some_class_2").val(); var co

ajax搜索分页

<input type="text" name="name" id="word"/> <button class="sou" id="{$arr.p}">搜索</button><input type="hidden" name="p" id="p" value="{$arr.p}">

memcache 缓存的批量删除方案(转)

memcache 默认只支持使用delete(key)和 flush_all,这两种方法都太极端了,不能满足用户的特定需求,如:批量删除‘aaaaaaaa_’开头的所有缓存,这个时候该怎么办? 1 getExtendStats 遍历所有item,删除指定的key(不推荐) 网上有对应的php代码和perl程序,感兴趣的可以看看,在本地测试时可以使用,但是在真是服务器上请不要使用. 2 memcache结合DB 方法:每次set缓存时,将key值存入数据库,在要删除缓存时查询数据库,查询出对应的信

iOS开发:一个高仿美团的团购ipad客户端的设计和实现(功能:根据拼音进行检索并展示数据,离线缓存团购数据,浏览记录与收藏记录的批量删除等)

大致花了一个月时间,利用各种空闲时间,将这个客户端实现了,在这里主要是想记录下,设计的大体思路以及实现过程中遇到的坑...... 这个项目的github地址:https://github.com/wzpziyi1/GroupPurchase 主要实现的功能,用UICollectionViewController展示团购数据,根据拼音进行检索并展示数据,离线缓存团购数据,浏览记录与收藏记录的批量删除,友盟分享的集成,利用UIView+AutoLayout写布局,实现地图定位.自定义大头针等 整个项

ajax批量删除数据

做网页经常要选择批量删除数据,基本都是异步请求批量删除,用到更多的是ajax批量删除.思路是前端ajax请求,传入ids(要删除对象id的字符串数组)到后台. 后台再遍历id,调用删除接口,删除数据.返回json给前台. 代码例子如下: 1 function deleteSaleChance() { 2 var selectedRows = $("#dg").datagrid("getSelections"); 3 if(selectedRows.length==0

作业:汽车查询--弹窗显示详情,批量删除 ajax做法(0521)

作业:显示以下界面: 作业要求: 1.查看详细信息,以弹窗的形式显示,使用ajax2.批量删除 一.主页面 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml

php jquery+ajax写批量删除

  为了美观,我还是引入了bootstrap的模态框,我引入的是自己的数据库 library中的一张表 名为:maninfo表 是一张个人信息表  表的加载我就不写了,比较简单,  大概写一下需要的按钮和html部分就可以了 <button type="button" class="btn btn-primary" id="plscdz" >批量删除</button> 全选:<input type="che