[TOC]
## 检索出除自己外呢称含有关键字的用户
```
$where = array(
'username' => array('LIKE', '%' . $keyword . '%'),
'uid' => array('NEQ', session('uid'))
);
```
## 互相关注组合条件
```
$db = M('follow');
$sql = '(SELECT `follow` FROM `hd_follow` WHERE `follow` = ' . $v['uid'] . ' AND `fans` = ' . session('uid') . ') UNION (SELECT `follow` FROM `hd_follow` WHERE `follow` = ' . session('uid') . ' AND `fans` = ' . $v['uid'] . ')';
$mutual = $db->query($sql);
```
>完整代码:
```
/**
* 重组结果集得到是否互相关注与是否已关注
* @param [Array] $result [需要处理的结果集]
* @return [Array] [处理完成后的结果集]
*/
Private function _getMutual ($result) {
if (!$result) return false;
$db = M('follow');
foreach ($result as $k => $v) {
//是否互相关注
$sql = '(SELECT `follow` FROM `hd_follow` WHERE `follow` = ' . $v['uid'] . ' AND `fans` = ' . session('uid') . ') UNION (SELECT `follow` FROM `hd_follow` WHERE `follow` = ' . session('uid') . ' AND `fans` = ' . $v['uid'] . ')';
$mutual = $db->query($sql);
if (count($mutual) == 2) {
$result[$k]['mutual'] = 1;
$result[$k]['followed'] = 1;
} else {
$result[$k]['mutual'] = 0;
//未互相关注是检索是否已关注
$where = array(
'follow' => $v['uid'],
'fans' => session('uid')
);
$result[$k]['followed'] = $db->where($where)->count();
}
}
return $result;
}
```
## 格式化搜索关键字(加红搜索关键字)
```
{$v.username|str_replace=$keyword, '<font style="color:red">' . $keyword . '</font>', ###}
<a href="">{$v.username|str_replace=$keyword, '<font style="color:red">' . $keyword . '</font>', ###}</a>
```
## 搜索找人后台处理
```
/**
* 搜索找人
*/
Public function sechUser () {
$keyword = $this->_getKeyword();
if ($keyword) {
//检索出除自己外呢称含有关键字的用户
$where = array(
'username' => array('LIKE', '%' . $keyword . '%'),
'uid' => array('NEQ', session('uid'))
);
$field = array('username', 'sex', 'location', 'intro', 'face80', 'follow', 'fans', 'weibo', 'uid');
$db = M('userinfo');
//导入分页类
import('ORG.Util.Page');
$count = $db->where($where)->count('id');
$page = new Page($count, 20);
$limit = $page->firstRow . ',' . $page->listRows;
$result = $db->where($where)->field($field)->limit($limit)->select();
//重新组合结果集,得到是否已关注与是否互相关注
$result = $this->_getMutual($result);
//分置搜索结果到视图
$this->result = $result ? $result : false;
//页码
$this->page = $page->show();
}
$this->keyword = $keyword;
$this->display();
}
```
### 返回搜索关键字
```
Private function _getKeyword () {
return $_GET['keyword'] == '搜索微博、找人' ? NULL : $this->_get('keyword');
}
```
### 检查是否互相关注
```
/**
* 重组结果集得到是否互相关注与是否已关注
* @param [Array] $result [需要处理的结果集]
* @return [Array] [处理完成后的结果集]
*/
Private function _getMutual ($result) {
if (!$result) return false;
$db = M('follow');
foreach ($result as $k => $v) {
//是否互相关注
$sql = '(SELECT `follow` FROM `hd_follow` WHERE `follow` = ' . $v['uid'] . ' AND `fans` = ' . session('uid') . ') UNION (SELECT `follow` FROM `hd_follow` WHERE `follow` = ' . session('uid') . ' AND `fans` = ' . $v['uid'] . ')';
$mutual = $db->query($sql);
if (count($mutual) == 2) {
$result[$k]['mutual'] = 1;
$result[$k]['followed'] = 1;
} else {
$result[$k]['mutual'] = 0;
//未互相关注是检索是否已关注
$where = array(
'follow' => $v['uid'],
'fans' => session('uid')
);
$result[$k]['followed'] = $db->where($where)->count();
}
}
return $result;
}
```
## 模板显示搜索数据
```
<if condition="isset($result)">
<div id='content'>
<if condition='$result'>
<div class='view_line'>
<strong>用户</strong>
</div>
<ul>
<foreach name='result' item='v'>
<li>
<dl class='list-left'>
<dt>
<img src="
<if condition='$v["face80"]'>
__ROOT__/Uploads/Face/{$v.face80}
<else/>
__PUBLIC__/Images/noface.gif
</if>" width='80' height='80'/>
</dt>
<dd>
<a href="">{$v.username|str_replace=$keyword, '<font style="color:red">' . $keyword . '</font>', ###}</a>
</dd>
<dd>
<i class='icon icon-boy'></i>
<span>
<if condition='$v["location"]'>
{$v.location}
<else/>
该用户未填写所在地
</if>
</span>
</dd>
<dd>
<span>关注 <a href="">{$v.follow}</a></span>
<span class='bd-l'>粉丝 <a href="">{$v.fans}</a></span>
<span class='bd-l'>微博 <a href="">{$v.weibo}</a></span>
</dd>
</dl>
<dl class='list-right'>
<if condition='$v["mutual"]'>
<dt>互相关注</dt>
<dd class='del-follow' uid='{$v.uid}' type='1'>移除</dd>
<elseif condition='$v["followed"]' />
<dt>√ 已关注</dt>
<dd class='del-follow' uid='{$v.uid}' type='1'>移除</dd>
<else/>
<dt class='add-fl' uid='{$v.uid}'>+ 关注</dt>
</if>
</dl>
</li>
</foreach>
</ul>
<div style="text-align:center;padding:20px;">{$page}</div>
<else/>
<p style='text-indent:7em;'>未找到与<strong style='color:red'>{$keyword}</strong>相关的用户</p>
</if>
</div>
</if>
```
- Layer无刷新不跳转弹框提示信息
- 整合ThinkPHP+实用代码
- TP整合Layer插件实现无刷新
- 自定义助手函数
- 添加信息失败后不跳转
- 三种无限级分类
- TP常用代码
- 自定义公共函数
- TP模型管理专题
- TP模型管理之添加模型
- sfox_newmodel.sql
- TP模型管理之删除模型
- TP模型管理之编辑模型
- TP模型管理之字段添加
- sfox_newmodel.sql_edit
- layer_hplus.js_edit
- TP模型管理之字段删除
- TP模型管理之字段编辑
- TP模型管理之预览模型
- TP模型管理之公共函数
- layer_hplus.js_修订一
- TP模型管理之预览模型静态页
- 后台内容管理系统
- 分类树显示
- 内容列表显示
- 信息发布
- 编辑信息
- layer_hplus.js
- myJs第一版
- myJs第二版
- myJs第三版
- myJs第四版
- TP5插件用法
- Datatables
- WebUploader
- bootstrap-fileinput
- UEditor
- 简单调用
- 路径问题
- 跨域多图上传
- 跨域单图上传
- UEditor图片跨域上传解决方案
- 定制工具栏图标
- ajaxFileUpload
- LayUI
- 图片上传
- layui分页
- 搜索页
- 搜索优化及删除
- Uploadify
- TP5前端应用
- 静态首页
- 前台首页功能实现
- 自定义标签库
- 前台模板继承应用
- 首页自定义标签改进
- 文章内容页
- 自定义标签改进
- 自定义标签修正
- 图片等比例自动缩放
- 后台权限管理
- 角色管理
- 规则管理
- 权限设置
- 会员管理
- 权限管理
- 前台登录注册功能
- 注册登录
- 阿里大于手机注册
- 阿里大于升级阿里云短信服务
- 自动登录完成
- PHP异位或加密实现自动登陆
- 微信开发
- 分享接口
- 静态页面实现微信分享
- 动态页微信分享
- 页面静态化
- 1-全站静态化前期配置
- 2-链接地址静态化
- TP5常用片段代码
- 加载静态资源路径与常量
- thinkphp5预定义常量
- 删除某文件夹的内容
- 解压插件包
- 异步提交插件
- 其他功能
- 背景音乐
- 手机访问PC网站自动跳转到手机网站代码
- 手机微信音乐MP3播放器
- 后盾之网页背景音乐
- 播放器宽度自适应
- 前台首页数据调用
- 视频列表
- 搜索分页
- H5解决苹果(IOS)不能自动播放音乐
- 清空缓存
- 文件处理常识
- 删除路径下的所有文件夹和文件
- 一键清空缓存
- 评论留言
- 格式化时间
- 替换微博内容的URL地址@用户与表情
- PHP正则理解
- jQuery评论插件
- TP空操作
- TP路由
- 跨域访问
- 设置请其头允许跨域请求
- 模板前台判断手机访问跳转手机网址代码
- PHP遍历一个文件夹下所有文件和子文件夹
- PHP获取视频的第一帧与时长
- TP5数据库
- 链式操作原理
- update替换字段部分内容
- 后台开发
- 后台登录页居中显示
- TP5自带验证码
- JS & JQuery专题
- 二级城市联动菜单
- 模板引擎
- 混合模板编译
- 黄永成TP微博开发
- 消息推送
- memcache安装
- 插件开发
- 插件介绍
- 插件钩子
- 浅谈初步理解钩子
- 插件钩子(hooks)分析
- 插件钩子简单理解
- 控制器调用插件
- 钩子通用处理函数
- 插件基类代码
- 插件测试代码
- 浅谈钩子与插件
- 技术综合
- 常用代码
- PHP
- 56个PHP开发常用代码片段(上)
- 56个PHP 开发常用代码片段(中)
- 56个PHP 开发常用代码片段(下)
- sublime text安装自动补全注释的插件
- 影音视频开发
- 视频
- H5视频直播扫盲
- 音乐
- 语音
- PHP实现语音播报功能
- MUI
- 窗体操作