使用VUE+原生PHP完成搜索后分页的效果
html代码:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="../day18/js/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<link rel="stylesheet" href="../day13/bootstrap4.min.css">
</head>
<body>
<div id="app">
<input type="search" placeholder="请输入关键字" v-model="list.word" @keyup.enter="search()">
<table class="table">
<tr>
<th>主键ID</th>
<th>姓名</th>
<th>性别</th>
<th>年龄</th>
<th>班级</th>
<th>操作</th>
</tr> <tr v-for="(v,k) in list.data">
<th>{{v.uid}}</th>
<th>{{v.name}}</th>
<th>{{v.sex==1?'男':'女'}}</th>
<th>{{v.age}}</th>
<th>{{v.cname}}</th>
<th>
<a href="#" @click="del(k)">删除</a>
</th>
</tr> </table> <a href="#" @click="page(1)">首页</a>
<a href="#" @click="page(2)">上一页</a>
<a href="#" @click="page(3)">下一页</a>
<a href="#" @click="page(4)">尾页</a>
</div>
</body>
</html>
<script>
new Vue({
el:'#app',
data:{
list:[]
},
methods:{
//搜索
search(){
var obj = this;
var word = obj.list.word;//关键字
axios.get('list.php?word='+word)
.then(function (e) {
obj.list = e.data;//cpage、data、last_page、next、prev
console.log(e.data);
})
},
//自定义方法/自定义函数
page(text){
var obj = this;//提前声明this函数
var word = obj.list.word;
//判断页码p
if(text==1){//首页
var p = 1;
}else if(text==2){//上一页
var p = obj.list.prev;
}else if(text==3){//下一页
var p = obj.list.next;
}else if(text==4){//尾页
var p = obj.list.last_page;
}else{
var p = 1;//其他情况
} axios.get('list.php?page='+p+'&word='+word)
.then(function (e) {
obj.list = e.data;//cpage、data、last_page、next、prev
console.log(e.data);
}) }, //ajax删除
del(k){
if(confirm('确定要删除吗?')){
var obj = this;
var uid = obj.list['data'][k]['uid'];
//ajax
axios.get('del.php?uid='+uid)
.then(function (e) {
if(e.data!=3){
alert('删除失败');
return false;
}
// obj.list['data'].splice(k,1); axios.get('list.php?page='+obj.list.cpage)
.then(function (e) {
obj.list = e.data;//cpage、data、last_page、next、prev
console.log(e.data);
}) })
}
} },
created(){
var obj = this;
//页面加载后自定执行
axios.get('list.php')
.then(function (e) {
obj.list = e.data;//cpage、data、last_page、next、prev
console.log(e.data);
})
}
})
</script>
php原生代码:
<?php
$link = mysqli_connect('127.0.0.1','root','root','1906');
mysqli_set_charset($link,'utf8'); //逻辑操作
//接收关键字
$word = $_GET['word'];
//1、接收当前页
$page = isset($_GET['page']) ? $_GET['page'] : 1;
//2、设置每页显示的条数
$length = 3;
//3、求出总条数
if(empty($word)){
$sql = "select a.*,b.cname from student as a join class as b on a.class_id=b.cid";
}else{
$sql = "select a.*,b.cname from student as a join class as b on a.class_id=b.cid where a.name like '%$word%'";
} $res = mysqli_query($link,$sql);//结果集
$count = mysqli_num_rows($res);//总条数
//4、总页数
$last_page = ceil($count/$length);
//5、偏移量=(当前页-1)*每页显示的条数
$limit = ($page-1)*$length;
//6、查询
if(empty($word)){
$sql = "select a.*,b.cname from student as a join class as b on a.class_id=b.cid limit $limit,$length";
}else{
$sql = "select a.*,b.cname from student as a join class as b on a.class_id=b.cid where a.name like '%$word%' limit $limit,$length";
} $res = mysqli_query($link,$sql);//结果集
$data = mysqli_fetch_all($res,1);//将结果集转化成二维关联数组 //释放结果集
mysqli_free_result($res);
//关闭数据库
mysqli_close($link); //返回结果
$arr['last_page'] = $last_page;//最后一页
$arr['prev'] = $page-1<=1 ? 1 : $page-1;//上一页
$arr['next'] = $page+1>=$last_page ? $last_page : $page+1;//下一页
$arr['cpage'] = $page;//当前页
$arr['data'] = $data;//页面展示的数据
$arr['word'] = $word;//搜索的关键字 echo json_encode($arr);
使用VUE+原生PHP完成搜索后分页的效果的更多相关文章
- 关于TP5.0搜索后分页
使用$Model->where($where)->paginate($page,$count);的时候如果点击下一页会出现条件重置问题,经过测试可以使用Db::name('data') - ...
- 微信小程序 和 laravel8 实现搜索后分页 加载
Page({ /** * 页面的初始数据 */ data: { activity:{}, page:1, last_page : 0, keyword:'' }, //加载 scroll(e){ le ...
- jQuery页面替换+php代码实现搜索后分页
HTML代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <ti ...
- lavarel 框架 搜索后分页
................框架控制器 public function list(Request $request){ $word=$request->input('word'); $arr ...
- django分页及搜索后如何翻页
django自带了Pagnator 导入 from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage 分页 def ...
- 第三百七十节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索结果分页
第三百七十节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索结果分页 逻辑处理函数 计算搜索耗时 在开始搜索前:start_time ...
- 测试开发【提测平台】分享9-DBUntils优化数据连接&实现应用搜索和分页功能
微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 从本期开始知识点讲以思维导图的形式给出,内容点会按照讲解-应用-展示的形式体现,这样会更清晰些. DBUntils连接池 在项目中链接数据 ...
- MVC5 + EF6 + Bootstrap3 (11) 排序、搜索、分页
系列教程:MVC5 + EF6 + Bootstrap3 上一节:MVC5 + EF6 + Bootstrap3 (10) 数据查询页面 源码下载:点我下载 我工作的源码:http://www.jin ...
- 夺命雷公狗---DEDECMS----33dedecms自定义搜索以及分页功能完成
我们现在要开始实现模版里面的搜索功能了,我们先找要做出一个检索提交表单,如下所示: 只要我们点击生成之后我们的表单就获取到了,可以直接拿生成好的html表单拿来用来测试下.. 将他嵌入首页的模版文件, ...
随机推荐
- Spring详解------概述
1.什么是 Spring ? Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2E ...
- 安装Ubuntu服务器版 + 远程连接ssh +更换阿里云源
安装Ubuntu服务器版 1.点击 "开启此虚拟机",开始安装. 2.默认选择English,英文版安装,直接按Enter键即可. 3.默认选择"Install Ubun ...
- cookie实现访问时间查看
package day01.cookies; import java.io.IOException; import java.net.URLDecoder; import java.net.URLEn ...
- Android:绘制字符
根据FontMetrics的特点,将字符在矩形框中居中显示:
- SpringBoot博客开发之异常处理
异常处理: 背景: 最近在搭建属于自己的个人博客(码农小白的执念),自己搭建后端的时候首先考虑的是异常处理.个人也是一边学习一边做,难免有疏漏的地方,希望朋友们在不对的地方提醒下. 技术栈: spri ...
- reids rdb与aof
rdb:时合高并发场景,容易备份恢复,会丢失部分数据 1.默认开启的方式,可以进过压缩,可以根据时间点生成快照 2.数据量大的情况下恢复快 3.bgsave一边开启fork保存文件,一边继续响应客户端 ...
- 移动端touch事件——单指拖拽
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- 测试Kaggle kernel commit 是否会删除以前的output
在kaggle上创建kernel,加入如下代码. 连续运行两次,可以看到保存的文件名字不一样,且无论运行错少次,都只有一个输出文件. 这说明,kaggle上的kernel每次commit运行,都会清空 ...
- linux-解决/usr/bin/which: no ssh-copy-id in 和ssh: Could not resolve hostname问题
使用yum install openssh-clients 安装命令 有的系统没有此命令 有的系统缺省 就包含这一条命令! 但是我的测试机没有发现此命令 只能这样安装! 这时有报错了 1 2 [ro ...
- SpringBoot笔记(4)
一.请求处理 1.1 常用参数注解使用 注解 使用 @PathVariable 获取URI模板指定请求,并赋值到变量中,不指定可以将所有请求放到map中,但是健值都为String @RequestHe ...