`
xieye
  • 浏览: 830783 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

php利用Pagerfanta给通用数据库类库Medoo分页

    博客分类:
  • PHP
阅读更多
这是两个非常优秀的php类库

medoo:一个通用的php的数据库客户端。
"pagerfanta/pagerfanta":"1.0.5" 一个通用的php的分页组件。
结合在一起棒棒哒!

首先,composer安装

"pagerfanta/pagerfanta":"1.0.5"
"catfan/medoo":"1.4.5"

建表
CREATE TABLE `test_databases` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `db_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '库名',
  `user_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '测试用户id',
  `created_at` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
  `updated_at` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '修改时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB


请自行插入一百条数据

分页代码
<?php
namespace app\control;
use Medoo\Medoo as me;

use Pagerfanta\Pagerfanta;
use Pagerfanta\View\DefaultView;
use Pagerfanta\Adapter\AdapterInterface;

class MedooPage {
    public function index($req, $res, $args) {
        $database = new me ( [
            // 必须
            'database_type' => 'mysql',
            'database_name' => 'test1',
            'server' => '127.0.0.1',
            'username' => 'root',
            'password' => 'root',
            
            // 可选,但最好加上
            'charset' => 'utf8mb4',
            'port' => 3306,
            
            // [optional] Enable logging (Logging is disabled by default for better performance)
            'logging' => true,
            
            // [optional] driver_option for connection, read more from http://www.php.net/manual/en/pdo.setattribute.php
            'option' => [ 
                \PDO::ATTR_STRINGIFY_FETCHES => false,
                \PDO::ATTR_EMULATE_PREPARES => false 
            ] 
        ]  );
        //构造查询条件       
        $table = 'test_databases';
        $where=["id[<]"=>90];
        $col='*';
        //我把两个类一起放这个文件,工程中最好分开
        // 注,medoo还有带join的select方法,建议再写一个适配器,然后根据查询条件的不同
        // 调用不同的适配器,反正也就两个。
        $adapter = new MedooPageAdapter($database,$table,$col, $where);
        $pagerfanta = new Pagerfanta($adapter);
        $page = intval( $_GET["page"]);
        if (!$page) {
            $page=1;
        }
        //设置当前页,最大页面。
        $pagerfanta->setMaxPerPage(4)->setCurrentPage($page);
        //打印当前页面的结果
        foreach ($pagerfanta->getCurrentPageResults() as $v ) {
            echo $v['db_name'] .' = ' . $v['user_id']."<br>";
        }
        //打印分页链接。
        $routeGenerator = function($page) { // 匿名函数解决链接字符串
            return '/paginator/doctrine?page='.$page;
        };
        $view = new DefaultView();
        $options = array('proximity' => 3); // 这个数字干嘛用?中间的链接个数=这个数字*2+1,这个数字一般取3.
        $html = $view->render($pagerfanta, $routeGenerator, $options);
        echo $this->default_css();
        echo  "<div class='pagerfanta'>" .$html."</div>";
        return $res;
    }
    
    private function default_css()
    {
        $css=<<<css
        <style>
            .pagerfanta {
            }
            
            .pagerfanta a,
            .pagerfanta span {
                display: inline-block;
                border: 1px solid blue;
                color: blue;
                margin-right: .2em;
                padding: .25em .35em;
            }
            
            .pagerfanta a {
                text-decoration: none;
            }
            
            .pagerfanta a:hover {
                background: #ccf;
            }
            
            .pagerfanta .dots {
                border-width: 0;
            }
            
            .pagerfanta .current {
                background: #ccf;
                font-weight: bold;
            }
            
            .pagerfanta .disabled {
                border-color: #ccf;
                color: #ccf;
            }
            
            
            
            .pagerfanta a,
            .pagerfanta span {
                border-color: blue;
                color: blue;
            }
            
            .pagerfanta a:hover {
                background: #ccf;
            }
            
            .pagerfanta .current {
                background: #ccf;
            }
            
            .pagerfanta .disabled {
                border-color: #ccf;
                color: #cf;
            }
                    </style>
css;
        return $css;
    }
}

/**
 * 分页适配器
 * @author xieye
 *
 */
class MedooPageAdapter implements AdapterInterface
{
    
    private $table='';
    private $where=[];
    private $db  ;
    private $col;
    
    public function __construct($db,$table, $col, $where){
        $this->table = $table;
        $this->where = $where;
        $this->col = $col;
        $this->db = $db;
    }
    
    public function getNbResults(){
        $db = $this->db;
        return $db->count($this->table, $this->where);
    }
    
    /**
     * Returns an slice of the results.
     *
     * @param integer $offset The offset.
     * @param integer $length The length.
     *
     * @return array|\Traversable The slice.
     */
    public function getSlice($offset, $length){
        $where = $this->where;
        $where["LIMIT"] = [$offset, $length];
        return $this->db->select($this->table,$this->col, $where);
    }
    
}


浏览器效果


  • 大小: 12.4 KB
0
1
分享到:
评论

相关推荐

    轻量级的PHP数据库框架medoo及使用示例下载

    轻量级的PHP数据库框架medoo及使用示例下载 require_once 'medoo.php'; // 初始化配置 $database = new medoo([ 'database_type' =&gt; 'mysql', 'database_name' =&gt; 'shunji2099', 'server' =&gt; '...

    Medoo 1.6 文档 中文版 PDF 自带书签( Medoo 高效的轻量级PHP数据库框架, 提高开发效率)

    Medoo是一款高效的轻量级PHP数据库框架,专注于提供简洁和快速的数据库操作接口,同时减少了开发者的负担。它支持最新的PHP版本,并与多种数据库系统兼容,极大地提高了数据库操作的效率和可维护性。 ### 关键知识...

    PHP数据库开发框架Medoo.7z

    **PHP数据库开发框架Medoo详解** Medoo是一个轻量级且易于使用的PHP数据库框架,它旨在简化数据库操作,使得开发者可以更加专注于业务逻辑而非复杂的SQL语法。Medoo提供了丰富的功能,支持多种数据库类型,包括...

    PHP数据库开发框架Medoo 0.9.8.zip

    Medoo是一款轻量级PHP数据库开发框架,提供了简单,易学,灵活的API,提升开发Web应用的效率与性能。Medoo 0.9.8 更新日志:2015-02-11去除旧版本的LIKE功能Like语法添加数组支持新增加debug模式去除时间比较的支持...

    Medoo高效的轻量级PHP数据库框架

    Medoo是一款专为PHP设计的高效轻量级数据库框架,其设计目的是简化数据库操作,让开发者可以更专注于数据处理本身,而...通过深入了解和实践,你将能够充分利用Medoo的优势,创建出高效、稳定的数据库驱动应用程序。

    PHP数据库开发框架Medoo v0.9.8.zip

    Medoo是一款轻量级PHP数据库开发框架,提供了简单,易学,灵活的API,提升开发Web应用的效率与性能。   Medoo 0.9.8 更新日志:2015-02-11 去除旧版本的LIKE功能 Like语法添加数组支持 新增加debug模式 去除...

    PHP轻量级数据库框架PHP更简单高效的数据库操作方式

    当我们谈论“PHP轻量级数据库框架”时,通常是指那些设计简洁、性能高效且易于集成到项目中的数据库访问库。这类框架使得PHP开发者能够更方便、更高效地进行数据库操作,减少代码量,提高开发效率。 PHP的数据库...

    PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子

    除了上述基本操作,Medoo还支持更复杂的查询,如分页、排序、分组等,使得在PHP中操作数据库变得更加便捷。对于需要快速开发Web应用或原型项目,Medoo无疑是一个理想的选择,因为它能让你专注于业务逻辑,而无需花费...

    Laravel开发-medoo-laravel

    Medoo则是一个轻量级的PHP数据库框架,它的设计目标是简化数据库操作,使其对开发者更加友好。 首先,让我们了解Laravel中的`Facade`和`ServiceProvider`。`Facade`是Laravel提供的一种静态代理,它为服务容器中的...

    Laravel开发-laravel-medoo

    标题“Laravel开发-laravel-medoo”指出我们正在探讨的是使用Medoo数据库框架在Laravel中的应用。Laravel是目前非常流行的PHP全功能Web开发框架,以其优雅的语法和丰富的功能而受到开发者喜爱。Medoo则是一个轻量级...

    PHP框架Medoo-MVC.zip

    Medoo-MVC是一个基于Medoo的简单的php框架,如果之前使用过Medoo,只需几分钟学习即可开始开发,如果没接触过Medoo,可能会需要十多分钟学习一下。 标签:Medoo Web框架

    Medoo轻量级数据库框架中文版

    Medoo轻量级数据库框架中文版,由锐壳科技整理提供,锐壳提供带CDN的虚拟主机!

    medoo开发文档[收集].pdf

    Medoo是一款轻量级的PHP数据库框架,设计用于简化数据库操作。它的主要优点在于其简单易用的API,使得开发者可以快速地进行数据库查询而无需深入理解复杂的SQL语法。以下是对Medoo框架的一些核心知识点的详细说明: ...

    Medoo:轻量级PHP数据库框架可加速开发

    轻量级PHP数据库框架可加速开发产品特点轻量级-小于100 KB,仅可移植一个文件容易-极易学习和使用,友好的结构强大-支持各种常见和复杂SQL查询,数据映射,并防止SQL注入兼容-支持所有SQL数据库,包括MySQL,MSSQL,...

    JunePHP php框架 v0.1.3

    关于数据库:数据库操作采用Medoo,支持MySQL, SQLite, MariaDB, PostgreSQL等多种数据库。关于模板:模板引擎使用原生PHP,高效灵活,支持替换为smarty或其他模板引擎。关于命名:这个项目因为写在6月份,于是命名...

    JunePHP php框架 v0.1.3.zip

    关于数据库:数据库操作采用Medoo,支持MySQL, SQLite, MariaDB, PostgreSQL等多种数据库。 关于模板:模板引擎使用原生PHP,高效灵活,支持替换为smarty或其他模板引擎。 关于命名:这个项目因为写在6月份,于是...

    一个简单实用的数据库操作框架

    数据库操作框架是软件开发中非常关键的一环,它简化了开发者与数据库之间的交互,提高了代码的可维护性和可复用性。本框架是基于IBM开发网上的相关文章进行改良和扩展的结果,旨在提供一个易用且功能丰富的工具,...

    PHP中MongoDB数据库的连接、添加、修改、查询、删除等操作实例

    在PHP中,MongoDB是一个非常流行的NoSQL数据库系统,它提供了高效、灵活的数据存储解决方案。在本文中,我们将深入探讨如何使用PHP与MongoDB进行交互,包括连接、添加、修改、查询和删除数据。 首先,要使用PHP操作...

    亿渡PHP留言本管理系统 v8.20.0 Beta.rar

    亿渡PHP留言本管理系统,是一套留言反馈... 亿渡PHP留言本系统前端采用Layui 开源框架,数据库采用Medoo 框架,系统的使用请遵循其发布的许可协议。  默认管理员账号:admin默认密码:123456安装完成后登陆后台修改。

Global site tag (gtag.js) - Google Analytics