ThinkPHP高速实现数据分页(前端/后端分离)

数据 分页 可能是web 编程里最经常使用到的功能之中的一个。thinkphp 实现分页功能十分简洁。

仅仅须要定义 几个參数 就能搞定。当然,扩展也是十分方便的。

让我们如今就開始thinkphp的分页实现吧。

1:首先。我们得创建一个用于分页測试的数据库 test。

sql代码 例如以下。

复制PHP 内容到剪贴板PHP代码:

CREATE TABLE `test` (

`id` int(10) unsigned NOT NULL auto_increment,

`name` char(100) NOT NULL,

`content` varchar(300) NOT NULL,

PRIMARY KEY  (`id`)

) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=27 ;

INSERT INTO `test` (`id`, `name`, `content`) VALUES

(19, ‘123‘, ‘123‘),

(20, ‘1231‘, ‘123123123‘),

(21, ‘123123‘, ‘123123123‘),

(26, ‘24‘, ‘123123‘),

(25, ‘321123‘, ‘321123‘),

(24, ‘age‘, ‘age‘),

(23, ‘123123‘, ‘123123‘),

(22, ‘213‘, ‘123‘);

2:接着,我们得新建一个thinkphp项目 。新版tp已经内置了项目自己主动 生成文件夹 功能。

在htdocs(也就是你的站点根文件夹)下新建一个test文件 夹,把THINKPHP核心文件夹放进test根文件夹,并在test根文件夹新建文件index .php。

复制PHP内容到剪贴板PHP代码:

// 定义ThinkPHP框架 路径

define(‘THINK_PATH‘, ‘./Thinkphp‘);

//定义项目名称和路径。这2句是重点。

define(‘APP_NAME‘, ‘test‘);

define(‘APP_PATH‘, ‘./test‘);

// 载入 框架入口文件

require(THINK_PATH."/ThinkPHP.php");

//实例化一个站点应用实例

$App = new App();

//应用程序初始化

$App->run();

?>

执行"http://localhost/test/index.php"。会看到thinkphp欢迎页面 。再打开你的test文件夹看看,发如今根文件夹下多了一个test文件夹,此时。你的项目文件夹已经生成了。

打开/test/test/conf/文件夹。新建“config.php” ,配置好你的数据库连接。

复制PHP内容到剪贴板PHP代码:

<?

php

return array(

‘DB_TYPE‘=>‘mysql‘,

‘DB_HOST‘=>‘localhost‘,

‘DB_NAME‘=>‘test‘,

‘DB_USER‘=>‘root‘,

‘DB_PWD‘=>‘‘,

‘DB_PORT‘=>‘3306‘,

);

?>

假设你想打开调试模式 ,请在数组中增加“debug_mode”=>true.

3:基本页面输入与输出 的实现。

(1)打开/test/test/lib/action/IndexAction .class .php,会发现下面代码

复制PHP内容到剪贴板PHP代码:

<?

php

// 本类由系统 自己主动生成,仅供測试用途

class IndexAction extends Action{

public function index(){

header("Content-Type:text/html ;
charset=utf-8");

echo "<div style=‘font-weight:normal;color:blue;float:left;width:345px;text-align:center;border:1px solid silver;background:#E8EFFF;padding:8px;font-size:14px;font-family:Tahoma‘>^_^
Hello,欢迎使用<span style=‘font-weight:bold;color:red‘>ThinkPHP</span></div>";

}

}

?>

由系统自己主动生成的indexaction类中的index()函数 是默认的首页调用函数。你能够使用http://localhost/test/index.php或者http://localhost/test/index.php/index来訪问他

(2)我们临时无论他。首先我们须要一个表单 提交的页面。

打开"/test/test/tpl/default/index/",新建一个文件add.html.

复制PHP内容到剪贴板PHP代码:

<form method="post" action="__URL __/insert">

<p>姓名:<input name="name" type="text" ></p>

<p>内容:<input name="content" type="text"></p>

<p>提交:<input type="submit" value="submit"></p>

</form>

保存后,输入 http://localhost/test/index.php/index/add。你就能看到你新增的页面了。当中,__URL__(url要大写)被转换为对应地址/test/index.php/Index/。

这里简单说一下模板 和action之间的关系。每个action,相应的模板是与之名字同样的html文件。比如index类下的index()。相应default/index/index.html,而add.html,则显然相应的是index类下的add()。

我们甚至能够在仅仅有add.html而没有对应的add()动作情况下,用訪问add()的形式(http://localhost/test /index.php/index/add)来訪问add.html模板。add.html模板下的占位符会被替换成对应的数据。效果例如以下。

(3)从form的"action=__URL__/insert"中能够看出,进行表单处理的动作是/test/index.php/index/insert,所以我们得新增insert动作来处理表单提交数据。在此之前,我们另一件重要的事情要做,那就是新增model 文件。通过model文件的建立,我们将能在insert动作中使用便捷的方法来操作数据库了

打开/test/test/lib/model/目录,新建文件TestModel.class.php。

打开他,输入并保存下面代码

复制PHP内容到剪贴板PHP代码:

<?php

class TestModel extends Model {

}

?>

简单的说,这是ActiveRecord实现的基本文件。

命名规则是你数据库中的表后面加Model.比如我们将要使用到的表是test,我的文件命名必须是TestModel.class.php。而文件下的类命名必须是TestModel.

接着,我们回到indexaction.class.php文件,删除原来的代码,增加例如以下代码。

复制PHP内容到剪贴板PHP代码:

class IndexAction extends Action{

//表单数据加入到数据库

public function insert() {

//实例化我们刚才新建的testmodel.

$test = D(‘Test‘);

if ($test->create()) {

//保存表单数据就这一步。thinkphp已经所有做完了。

$test->add();

$this->redirect();

}else{

exit($test->getError().‘[ <A HREF="javascript:history.back()">返 回</A> ]‘);

}

}

}

(4)接下来,我们须要在IndexAction类中添加一个首页默认显示动作index()来调用表单数据。

复制PHP内容到剪贴板PHP代码:

public function index() {

//依然是实例化我们新建的相应相应表名的model.这是我们进行快捷表操作的重要关键。

$test = D(‘Test‘);

//熟悉这段代码么?计算全部的行数

$count = $test->count(‘‘,‘id‘);

//每页显示的行数

$listRows = ‘3‘;

//须要查询 哪些字段

$fields = ‘id,name,content‘;

//导入分页类 /ThinkPHP/lib/ORG/Util/Page.class.php

import ("ORG.Util.Page");

//通过类的构造函数来改变page的參数。

$count为总数。$listrows为每一页的显示条目。

$p = new Page($count,$listRows);

//设置 查询參数。详细见“ThinkPHP/Lib/Think/Core/Model.class.php"1731行。

$list = $test->findall(‘‘,$fields,‘id desc‘,$p->firstRow.‘,‘.$p->listRows);

//分页类做好了。

$page = $p->show();

//模板输出

$this->assign(‘list‘,$list);

$this->assign(‘page‘,$page);

$this->display();

}

我们该设置一个模板了。

在/test/test/tpl/default/index/下新建index.html(由于默认相应了index().所以程序中能够直接assign.而不用去指定模板文件。

当然。这是能够配置的。

复制PHP内容到剪贴板PHP代码:

<hr><a href="__URL__/add">填写</a>

//分页显示,这一行

<hr>{$page}<hr>

//数据显示。

以下的參数非常快会再进行具体解释。它非常好理解。

<volist name="list"
id="vo">

<p>姓名:{$vo.name}</p>

<p>内容:{$vo.content}</p>

<hr>

</volist>

保存他。接着输入 http://localhost/test/

时间: 2024-10-06 17:41:33

ThinkPHP高速实现数据分页(前端/后端分离)的相关文章

ThinkPHP快速实现数据分页(前端/后端分离)

数据 分页 可能是web 编程里最常用到的功能之一.thinkphp 实现分页功能十分简洁.只需要定义 几个参数 就能搞定.当然,扩展也是十分方便的. 让我们现在就开始thinkphp的分页实现吧. 1:首先,我们得创建一个用于分页测试的数据库 test.sql代码 如下. 复制PHP 内容到剪贴板PHP代码: CREATE TABLE `test` ( `id` int(10) unsigned NOT NULL auto_increment, `name` char(100) NOT NUL

使用RAP2模拟假数据实现前后端分离

一.为什么使用RAP2 在一个项目的开发中,在页面需要使用大量数据进行渲染生成前,后端开发人员的接口可能还没有写完, 当前端没有后端数据支持的情况下,我们使用mock.js(mock.js用于生成随机数据,拦截ajax请求)模拟假数据,实现前后端分离.开发中我们也可以使用RAP2(这里面生成的数据基于mock.js)在线模拟假数据. 原文:https://www.jianshu.com/p/f11948877151 原文地址:https://www.cnblogs.com/cuiqq/p/113

axios + mock.js模拟数据实现前后端分离开发的实例代码

首先就是必须安装axios和mock.js npm install axios npm install mockjs 1. 然后在文档src中新建一个mock.js文件,如图 2. 在main.js中全局引入axios插件和mock.js文件如图 3. 在组件中用axios获取mock.js文件 4. 在mock.js mockjs的用法可以到官网了解:http://mockjs.com(小生初学mock.js有不当之处请指出) 原文地址:https://www.cnblogs.com/mei1

ThinkPHP数据分页Page.class.php

获取分页类 ThinkPHP提供了数据分页的扩展类库Page,可以在http://www.thinkphp.cn/extend/241.html下载,或者下载官方的完整扩展包(http://www.thinkphp.cn/down/253.html)里面也已经包含分页扩展类了.把解压后的Page.class.php放入ThinkPHP/Extend/Library/ORG/Util/(如果没有请手动创建)目录下面. 当然,扩展类库的位置其实比较随意,你也可以放入项目的类库目录下面,区别只是在于你

分享一个前后端分离方案源码-前端angularjs+requirejs+dhtmlx 后端asp.net webapi

一.前言 半年前左右折腾了一个前后端分离的架子,这几天才想起来翻出来分享给大家.关于前后端分离这个话题大家也谈了很久了,希望我这个实践能对大家有点点帮助,演示和源码都贴在后面. 二.技术架构 这两年angularjs和reactjs算是比较火的项目了,而我选择angularjs并不是因为它火,而是因它的模块化.双向数据绑定.注入.指令等都是非常适合架构较复杂的前端应用,而且文档是相当的全,碰到问题基本上可以在网上都找到答案.所以前端基本思路就以angularjs为主.代码模块化,通过requir

vue+mockjs 模拟数据,实现前后端分离开发

在项目中尝试了mockjs,mock数据,实现前后端分离开发. 关于mockjs,官网描述的是 1.前后端分离 2.不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据. 3.数据类型丰富 4.通过随机数据,模拟各种场景. 等等优点. 总结起来就是在后端接口没有开发完成之前,前端可以用已有的接口文档,在真实的请求上拦截ajax,并根据mockjs的mock数据的规则,模拟真实接口返回的数据,并将随机的模拟数据返回参与相应的数据交互处理,这样真正实现了前后台的分离开发. 与以往的自己

架构设计:前后端分离之Web前端架构设计

在前面的文章里我谈到了前后端分离的一些看法,这个看法是从宏观的角度来思考的,没有具体的落地实现,今天我将延续上篇文章的主题,从纯前端的架构设计角度谈谈前后端分离的一种具体实现方案,该方案和我原来设想有了很大的变化,但是核心思想没变,就是控制层是属于Web前端的. 在以前文章里我说道前后端分离的核心在于把mvc的控制层归为前端的一部分,原方案的构想在实际的生产开发里很难做到,我觉得核心还是控制层和视图层的技术异构性,这样后果使得系统改造牵涉面太大,导致在项目团队里,沟通.协调以及管理成本相对较高,

移动端开发者眼中的前端开发流程变迁与前后端分离

写在最开始 移动端与前端的区别 前端开发的混沌时代 后端 MVC MVC 方案实现 MVC 的缺点与改进 前端只写 Demo HTML 模板 后端 MVC 架构总结 AJAX 与前端 MVC 前后端分离的缺点 双端 MVC 不统一 SEO 性能不够 集中 Or 分离 Nodejs 前后端分离的哲学 Nodejs 分层 实战应用 风险控制 总结 参考资料 写在最开始 这是一篇面向移动端开发者的科普性文章,从前端开发的最初流程开始,结合示范代码,讨论开发流程的演变过程,希望能覆盖一部分前端开发技术栈

前后端分离--构建前端Mock Server

mock:模拟的,虚假的 mock server:模拟服务,模拟请求,模拟虚假数据 为了前后端更好的分工,接口文档是必须的,前后端都根据接口文档写代码,然后对接接口就行了. 但是,后端跟不上前端节奏,接口跟不上来怎么办?即便接口跟上来了,大后端数据跟不上又怎么办? 第一种想到的方法就是模拟返回数据,根据接口文档定义好的返回数据格式,新建一个json文件夹,里面放一堆*.json文件,像这样: 然后请求json数据,像这样: 所以为了前端有数据,就会有很多很多的请求json文件.当后端接口上来后,