一、条件查询

前端页面

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link href="../../../../../bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title" style="text-align:center;">汽车详情表</h3>
</div>
<div class="panel-body">
<form action="__ACTION__" method="post" class="form-inline" role="form">
<div class="form-group">
<label for="name">请输入关键字:</label>
<input type="text" class="form-control" placeholder="请输入关键字" name="name"value="{$name}">
<input type="submit" class="btn btn-primary btn-sm" value="查询"/>
</div>
<table class="table" style="width:100%;">
<thead>
<tr>
<th>代号</th>
<th>名称</th>
<th>系列</th>
<th>出产时间</th>
<th>油耗</th>
<th>功率</th>
<th>排量</th>
<th>价格</th>
</tr>
</thead>
<foreach name="cars" item="v">
<tbody>
<tr class="danger">
<th>{$v.code}</th>
<td>{$v.name}</td>
<td>{$v.brand}</td>
<td>{$v.time}</td>
<td>{$v.oil}</td>
<td>{$v.powers}</td>
<td>{$v.exhaust}</td>
<td>{$v.price}</td>
</tr>
</tbody>
</foreach>
</table>
</form>
</div>
</div>
</body>
</html>

处理页面

<?php
namespace Home\Controller;
use Think\Controller;
class SelectController extends Controller{ public function select(){
$db = D("car");
$tj = " 1=1 ";
$name = "";//表单中保存查询的关键字
if(!empty($_POST["name"])){
$name = $_POST["name"];
$tj = " name like '%{$name}%' ";
}
$arr = $db
->where($tj)
->select();
$this->assign("cars",$arr);
$this->assign("name",$name);//表单中保存查询的关键字
$this->show();
}
}

二、条件分页查询

	<div>
<div>
<h3 style="text-align:center;">汽车详情表</h3>
</div>
<div>
<form action="__ACTION__" method="get">
<div>
<label >请输入关键字:</label>
<input type="text" placeholder="请输入关键字" name="name" value="{$name}">
<input type="submit" value="查询"/>
</div>
<table style="width:100%; text-align:center;" border="1" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th>代号</th>
<th>名称</th>
<th>系列</th>
<th>出产时间</th>
<th>油耗</th>
<th>功率</th>
<th>排量</th>
<th>价格</th>
</tr>
</thead>
<foreach name="cars" item="v">
<tbody>
<tr class="danger">
<th>{$v.code}</th>
<td>{$v.name}</td>
<td>{$v.brand}</td>
<td>{$v.time}</td>
<td>{$v.oil}</td>
<td>{$v.powers}</td>
<td>{$v.exhaust}</td>
<td>{$v.price}</td>
</tr>
</tbody>
</foreach>
</table>
</form>
</div>
<div>{$pagelist}</div>
</div>
<?php
namespace Home\Controller;
use Think\Controller;
class SelectController extends Controller{ public function select(){
$db = D("car");
$tj = " 1=1 ";
$name = "";//表单中保存查询的关键字
if(!empty($_GET["name"])){
$name = $_GET["name"];
$tj = " name like '%{$name}%' ";
}
$arr = $db
->where($tj)
->page($_GET["p"],6)//分页
->select();
$zts = $db
->where($tj)
->count();//总条数
$page = new\Think\Page($zts,6);//实例化页数和条数
$page->setConfig("prev","上一页");//把<<改为上一页
$page->setConfig("next","下一页");//把>>改为下一页
$pagelist = $page->show();//分页显示
$this->assign("pagelist",$pagelist);//往前端传分页数据
$this->assign("name",$name);//表单中保存查询的关键字
$this->assign("cars",$arr);
$this->show();
}
}

在这里可以修改分页的样式

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
// +----------------------------------------------------------------------
namespace Think; class Page{
public $firstRow; // 起始行数
public $listRows; // 列表每页显示行数
public $parameter; // 分页跳转时要带的参数
public $totalRows; // 总行数
public $totalPages; // 分页总页面数
public $rollPage = 11;// 分页栏每页显示的页数
public $lastSuffix = true; // 最后一页是否显示总页数 private $p = 'p'; //分页参数名
private $url = ''; //当前链接URL
private $nowPage = 1; // 分页显示定制
private $config = array(
'header' => '<span class="rows">共 %TOTAL_ROW% 条记录</span>',//加css样式可以改变样式
'prev' => '<<',
'next' => '>>',
'first' => '1...',
'last' => '...%TOTAL_PAGE%',
'theme' => '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% 当前页:%NOW_PAGE% %HEADER% 共:%TOTAL_PAGE%页',//可以添加分页要显示的东西
); /**
* 架构函数
* @param array $totalRows 总的记录数
* @param array $listRows 每页显示记录数
* @param array $parameter 分页跳转的参数
*/
public function __construct($totalRows, $listRows=20, $parameter = array()) {
C('VAR_PAGE') && $this->p = C('VAR_PAGE'); //设置分页参数名称
/* 基础设置 */
$this->totalRows = $totalRows; //设置总记录数
$this->listRows = $listRows; //设置每页显示行数
$this->parameter = empty($parameter) ? $_GET : $parameter;
$this->nowPage = empty($_GET[$this->p]) ? 1 : intval($_GET[$this->p]);
$this->nowPage = $this->nowPage>0 ? $this->nowPage : 1;
$this->firstRow = $this->listRows * ($this->nowPage - 1);
} /**
* 定制分页链接设置
* @param string $name 设置名称
* @param string $value 设置值
*/
public function setConfig($name,$value) {
if(isset($this->config[$name])) {
$this->config[$name] = $value;
}
} /**
* 生成链接URL
* @param integer $page 页码
* @return string
*/
private function url($page){
return str_replace(urlencode('[PAGE]'), $page, $this->url);
} /**
* 组装分页链接
* @return string
*/
public function show() {
if(0 == $this->totalRows) return ''; /* 生成URL */
$this->parameter[$this->p] = '[PAGE]';
$this->url = U(ACTION_NAME, $this->parameter);
/* 计算分页信息 */
$this->totalPages = ceil($this->totalRows / $this->listRows); //总页数
if(!empty($this->totalPages) && $this->nowPage > $this->totalPages) {
$this->nowPage = $this->totalPages;
} /* 计算分页临时变量 */
$now_cool_page = $this->rollPage/2;
$now_cool_page_ceil = ceil($now_cool_page);
$this->lastSuffix && $this->config['last'] = $this->totalPages; //上一页
$up_row = $this->nowPage - 1;
$up_page = $up_row > 0 ? '<a class="prev" href="' . $this->url($up_row) . '">' . $this->config['prev'] . '</a>' : ''; //下一页
$down_row = $this->nowPage + 1;
$down_page = ($down_row <= $this->totalPages) ? '<a class="next" href="' . $this->url($down_row) . '">' . $this->config['next'] . '</a>' : ''; //第一页
$the_first = '';
if($this->totalPages > $this->rollPage && ($this->nowPage - $now_cool_page) >= 1){
$the_first = '<a class="first" href="' . $this->url(1) . '">' . $this->config['first'] . '</a>';
} //最后一页
$the_end = '';
if($this->totalPages > $this->rollPage && ($this->nowPage + $now_cool_page) < $this->totalPages){
$the_end = '<a class="end" href="' . $this->url($this->totalPages) . '">' . $this->config['last'] . '</a>';
} //数字连接
$link_page = "";
for($i = 1; $i <= $this->rollPage; $i++){
if(($this->nowPage - $now_cool_page) <= 0 ){
$page = $i;
}elseif(($this->nowPage + $now_cool_page - 1) >= $this->totalPages){
$page = $this->totalPages - $this->rollPage + $i;
}else{
$page = $this->nowPage - $now_cool_page_ceil + $i;
}
if($page > 0 && $page != $this->nowPage){ if($page <= $this->totalPages){
$link_page .= '<a class="num" href="' . $this->url($page) . '">' . $page . '</a>';
}else{
break;
}
}else{
if($page > 0 && $this->totalPages != 1){
$link_page .= '<span class="current">' . $page . '</span>';
}
}
} //替换分页内容
$page_str = str_replace(
array('%HEADER%', '%NOW_PAGE%', '%UP_PAGE%', '%DOWN_PAGE%', '%FIRST%', '%LINK_PAGE%', '%END%', '%TOTAL_ROW%', '%TOTAL_PAGE%'),//要显示的东西,可以添加到上面
array($this->config['header'], $this->nowPage, $up_page, $down_page, $the_first, $link_page, $the_end, $this->totalRows, $this->totalPages),
$this->config['theme']);
return "<div>{$page_str}</div>";
}
}

TP条件查询和分页查询的更多相关文章

  1. MySQL——优化嵌套查询和分页查询

    优化嵌套查询 嵌套查询(子查询)可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中.嵌套查询写起来简单,也容易理解.但是,有时候可以被更有效率的连接(JOIN ...

  2. SQL语句or查询,union all查询,分页查询,分组,AND查询

    一.OR查询 1.在AND多个筛选条件和一个or条件时,如果没有括号包裹,or会就近原则包裹之后的所有and条件,也就是同级的多个and条件只能对,or条件的一边起作用 2.如果or条件两边的筛选条件 ...

  3. SQL Server -- 回忆笔记(四):case函数,索引,子查询,分页查询,视图,存储过程

    SQL Server知识点回忆篇(四):case函数,索引,子查询,分页查询,视图,存储过程 1. CASE函数(相当于C#中的Switch) then '未成年人' else '成年人' end f ...

  4. Linq高级查询,分页查询及查询分页结合

    一.高级查询与分页查询 1.以...开头    StartsWith Repeater1.DataSource=con.Users.Where(r=>r.Nickname.StartsWith( ...

  5. Oracle子查询相关内容(包含TOP-N查询和分页查询)

    本节介绍Oracle子查询的相关内容: 实例用到的数据为oracle中scott用户下的emp员工表,dept部门表,数据如下: 一.子查询 1.概念:嵌入在一个查询中的另一个查询语句,也就是说一个查 ...

  6. mysql-in关键字,分组查询,分页查询

    1. in关键字,组查询 # 使用or来查询的化,不方便而且参数一多比较傻 select * from users where id=1 or id=2 or id=4; select * from ...

  7. Mysql--子查询、分页查询、联合查询

    一. 子查询的定义 出现在其他语句中的select语句,称为子查询或者内查询,外部的查询语句称为主查询或者外查询,子查询可以包含普通select可以包含的任何语句. 外部查询:select.inser ...

  8. 数据库SQL Server2012笔记(四)——多表查询、子查询、分页查询、用查询结果创建新表和外连接

    1.多表查询 1)笛卡尔集: select  *  from  表名1,表名2 select  *  from  表名1.表名2  where   表名1.字段名=表名2.字段名 注: 若有两张表有同 ...

  9. DQL---连接查询(内连接、外连接)、子查询、分页查询

    一.连接查询 1.连接查询建立在有相互关系的两个表间,进行两个及两个以上的表或视图的查询. 2.对n张表进行查询,至少需要n-1个连接表的条件. 二.笛卡尔积(容易造成数据库宕机) 1.指表中每行元素 ...

随机推荐

  1. ionic cordova screenshot 使用和操作

    如何调用cordova 中的screenshot插件进行截图 首先添加 ionic cordova plugin add com.darktalker.cordova.screenshot npm i ...

  2. FlinkCEP - Complex event processing for Flink

    https://ci.apache.org/projects/flink/flink-docs-release-1.3/dev/libs/cep.html 首先目的是匹配pattern sequenc ...

  3. Copycat - Overview

    Copycat’s primary role is as a framework for building highly consistent, fault-tolerant replicated s ...

  4. 目标检测(3)-SPPNet

    Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 文章地址:https://arxiv.org ...

  5. 如何解决selenium打开chrome提示chromedriver.exe已停止工作

    场景:启动Chrome,打开URL,提示“disconnected: unable to connect to renderer” 解决方法:chromedriver与chrome的对应关系表, 需要 ...

  6. nodemcu使用心得1

    1.简介 最近迷上了性价比超高的模块nodemcu,它是基于esp8266-12E的非常易用的模块.他可以用lua语言编程,带有丰富的库. 2.硬件 1)esp8266-12E单元模块原理图 经本人实 ...

  7. nodejs 学习五 单元测试一

    一. chai chai 自身是依赖nodejs的 assert,让检测更加语义化. chai 采用两种模式,TDD和BDD, TDD是类似自然语言方式 BDD是结构主义 chai文旦地址 二.moc ...

  8. 什么是Docker?(一)

    Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 ...

  9. 【数据库】SQL语句解析

    学习网站: http://www.runoob.com/sql/sql-having.html 1. 1.现在我们想要查找总访问量大于 200 的网站. 回取出多条重复的网址的SQL语句: selec ...

  10. rem : web app适配的秘密武器

    css html { font-size: calc(100vw / 3.75) } jsdocument.documentElement.style.fontSize = $(document.do ...