Table of Contents
2.1 Paging component
2.2 Function to obtain database data: getData():
2.3 The page is loaded and the data of the first page needs to be requested
Home Database Mysql Tutorial How Vue+ElementUI implements paging function to query mysql data

How Vue+ElementUI implements paging function to query mysql data

Jun 01, 2023 pm 04:19 PM
mysql vue elementui

    1. Problem

    When there is a lot of data in the database, only a part of it must be queried at a time to relieve the pressure on the server and the page. Here we use the Pagination component of elementui and the limit statement of mysql to implement paging query of mysql data.

    The following picture is the most basic paging style:

    How Vue+ElementUI implements paging function to query mysql data

    Of course, corresponding events need to be introduced to achieve page changes. Just query the database.

    How Vue+ElementUI implements paging function to query mysql data

    2. Solve

    2.1 Paging component

    <el-pagination
            background
            layout="prev, pager, next"
            :page-size="8"
            :total="total"
            :current-page="pageNum"
            @current-change="handleCurrentChange">
    </el-pagination>
    Copy after login

    data: Initialize the total number of data items (total) is 1, pageNum means that the current page number is the first page.

    How Vue+ElementUI implements paging function to query mysql data

    2.2 Function to obtain database data: getData():

    The parameters are offset, limit, request data from the backend, explained later. The qs serialization parameters are used here. You can refer to my other blog: Vue ElementUI ViewerThe picture cannot be previewed after turning the page. The problem of asynchronous communication between Vue parent and child components explains the function of qs.

    getData(offset,limit){
          this.axios.post(&#39;/php/select.php&#39;, qs.stringify({
            offset: offset,
            limit: limit,
            type: &#39;失物招领&#39;
          }), { headers: { &#39;Content-Type&#39;: &#39;application/x-www-form-urlencoded&#39; } }).then((res) => {
            if(res.data === 0){
              this.total = 0;
              this.list = [];
              return;
            }
            this.total = res.data.total
            this.list = res.data.data
            this.loading = false
          }).catch((err) => {
            this.$message.error(err)
          })
        }
    Copy after login

    2.3 The page is loaded and the data of the first page needs to be requested

    created () {
        this.getData(0,8);
      },
    Copy after login

    Page change triggers the handleCurrentChange() function, that is, click to turn the page, where the val parameter is Current page number, use new parameters,

    Call getData to query data on different pages:

    handleCurrentChange(val){
          this.list = [] //清空上一页数据
          this.getData((val-1)*8,8);
        }
    Copy after login

    The following is the back-end data: php mysql<br/>

    There are now a total of 10 pieces of data in the data table:

    How Vue+ElementUI implements paging function to query mysql data

    Front endgetDatarequest The select.php file

    select.php:

    <?php
    $servername = "localhost";
    $username = "用户名";
    $password = "密码";
    $dbname = "数据库名称";
    
    // 创建连接
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("连接失败: " . $conn->connect_error);
    } 
    
    $type = $_POST[&#39;type&#39;];
    //获取前端的参数 开始和结束number
    if ( !isset( $_POST[&#39;offset&#39;] ) ) {
     echo 0;
     exit();
    };
    $offset = ( int )$_POST[&#39;offset&#39;];
    
    if ( !isset( $_POST[&#39;limit&#39;] ) ) {
     echo 0;
     exit();
    };
    $limit = ( int )$_POST[&#39;limit&#39;];
    //分页查询数据库
    $sql = "SELECT * FROM posts where type=&#39;$type&#39;  order by id desc LIMIT $limit OFFSET $offset";
    $result = $conn->query($sql);
    
    $sqlGetCount = "SELECT COUNT(*) cnt FROM posts where type=&#39;$type&#39;";
    $rescnt = $conn->query($sqlGetCount);
    $rescnt = $rescnt->fetch_assoc();
    $arr = array();
    if ($result->num_rows > 0) {
     while ( $row = $result->fetch_assoc() ) {
        array_push( $arr, $row );
    }
     //echo json_encode( $arr, JSON_UNESCAPED_UNICODE );
     echo json_encode(array_merge(array(&#39;data&#39;=>$arr),array(&#39;total&#39;=>(int)$rescnt[&#39;cnt&#39;])));
     
    } else {
        echo 0;
    }
    mysqli_close( $conn );
    ?>
    Copy after login

    ## of mysql is used here #limit implements querying only a part of the data at a time, and the parameters offset and limit are passed from the front end.

    sql statement:

    "SELECT * FROM posts where type=&#39;$type&#39;  order by id desc LIMIT $limit OFFSET $offset"
    Copy after login

    3. Analysis of


    here

    LIMIT $limit OFFSET $offset means starting from the value of $offest, query $limit pieces of data.

    For example $limit = 8, $offest = 0: means querying the first 8 pieces of data in the database, starting from 0 (excluding 0, the mysql index starts from 0), Query 8 items, that is, 1~8 pieces of data.
    When I click on the second page: Trigger handleCurrentChange() Function:

    How Vue+ElementUI implements paging function to query mysql data

    Parameters at this time

    val=2, then offest = 8, limit = 8. The 9th to 17th data will be queried. If there is no 17th data, all data after the 9th data will be returned. For example, my database currently only has 10 pieces of data, so the 9th and 10th pieces of data will be returned.

    At the same time, the page in select.php returns the total number of data total:

    SELECT COUNT(*) cnt FROM posts where type=&#39;$type&#39;
    Copy after login

    How Vue+ElementUI implements paging function to query mysql data

    The front-end page gets

    total value is assigned to this.total (it is bound to the total attribute of Pagination, which is the total number of data items). PaginationAccording to the:page-size="8"property, the data will be automatically paginated. For example, if the total returned by the backend is 10, it will be divided into two pages.

    How Vue+ElementUI implements paging function to query mysql data

    4. Result


    The page is loaded: Because I was querying in reverse order based on the id, I got the 3rd ~10 pieces of data (8 pieces in total).

    How Vue+ElementUI implements paging function to query mysql data

    Click the second page or page turn button: Get the 1st and 2nd data.

    How Vue+ElementUI implements paging function to query mysql data

    Note: Your limit parameter must be consistent with the page-size of Pagination The attributes are consistent, which means one page of data is queried at a time. And offset is the current page number.

    The above is the detailed content of How Vue+ElementUI implements paging function to query mysql data. For more information, please follow other related articles on the PHP Chinese website!

    Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

    Hot AI Tools

    Undresser.AI Undress

    Undresser.AI Undress

    AI-powered app for creating realistic nude photos

    AI Clothes Remover

    AI Clothes Remover

    Online AI tool for removing clothes from photos.

    Undress AI Tool

    Undress AI Tool

    Undress images for free

    Clothoff.io

    Clothoff.io

    AI clothes remover

    Video Face Swap

    Video Face Swap

    Swap faces in any video effortlessly with our completely free AI face swap tool!

    Hot Tools

    Notepad++7.3.1

    Notepad++7.3.1

    Easy-to-use and free code editor

    SublimeText3 Chinese version

    SublimeText3 Chinese version

    Chinese version, very easy to use

    Zend Studio 13.0.1

    Zend Studio 13.0.1

    Powerful PHP integrated development environment

    Dreamweaver CS6

    Dreamweaver CS6

    Visual web development tools

    SublimeText3 Mac version

    SublimeText3 Mac version

    God-level code editing software (SublimeText3)

    MySQL's Role: Databases in Web Applications MySQL's Role: Databases in Web Applications Apr 17, 2025 am 12:23 AM

    The main role of MySQL in web applications is to store and manage data. 1.MySQL efficiently processes user information, product catalogs, transaction records and other data. 2. Through SQL query, developers can extract information from the database to generate dynamic content. 3.MySQL works based on the client-server model to ensure acceptable query speed.

    How to start mysql by docker How to start mysql by docker Apr 15, 2025 pm 12:09 PM

    The process of starting MySQL in Docker consists of the following steps: Pull the MySQL image to create and start the container, set the root user password, and map the port verification connection Create the database and the user grants all permissions to the database

    Laravel Introduction Example Laravel Introduction Example Apr 18, 2025 pm 12:45 PM

    Laravel is a PHP framework for easy building of web applications. It provides a range of powerful features including: Installation: Install the Laravel CLI globally with Composer and create applications in the project directory. Routing: Define the relationship between the URL and the handler in routes/web.php. View: Create a view in resources/views to render the application's interface. Database Integration: Provides out-of-the-box integration with databases such as MySQL and uses migration to create and modify tables. Model and Controller: The model represents the database entity and the controller processes HTTP requests.

    Netflix's Frontend: Examples and Applications of React (or Vue) Netflix's Frontend: Examples and Applications of React (or Vue) Apr 16, 2025 am 12:08 AM

    Netflix uses React as its front-end framework. 1) React's componentized development model and strong ecosystem are the main reasons why Netflix chose it. 2) Through componentization, Netflix splits complex interfaces into manageable chunks such as video players, recommendation lists and user comments. 3) React's virtual DOM and component life cycle optimizes rendering efficiency and user interaction management.

    Solve database connection problem: a practical case of using minii/db library Solve database connection problem: a practical case of using minii/db library Apr 18, 2025 am 07:09 AM

    I encountered a tricky problem when developing a small application: the need to quickly integrate a lightweight database operation library. After trying multiple libraries, I found that they either have too much functionality or are not very compatible. Eventually, I found minii/db, a simplified version based on Yii2 that solved my problem perfectly.

    Laravel framework installation method Laravel framework installation method Apr 18, 2025 pm 12:54 PM

    Article summary: This article provides detailed step-by-step instructions to guide readers on how to easily install the Laravel framework. Laravel is a powerful PHP framework that speeds up the development process of web applications. This tutorial covers the installation process from system requirements to configuring databases and setting up routing. By following these steps, readers can quickly and efficiently lay a solid foundation for their Laravel project.

    MySQL and phpMyAdmin: Core Features and Functions MySQL and phpMyAdmin: Core Features and Functions Apr 22, 2025 am 12:12 AM

    MySQL and phpMyAdmin are powerful database management tools. 1) MySQL is used to create databases and tables, and to execute DML and SQL queries. 2) phpMyAdmin provides an intuitive interface for database management, table structure management, data operations and user permission management.

    MySQL vs. Other Programming Languages: A Comparison MySQL vs. Other Programming Languages: A Comparison Apr 19, 2025 am 12:22 AM

    Compared with other programming languages, MySQL is mainly used to store and manage data, while other languages ​​such as Python, Java, and C are used for logical processing and application development. MySQL is known for its high performance, scalability and cross-platform support, suitable for data management needs, while other languages ​​have advantages in their respective fields such as data analytics, enterprise applications, and system programming.

    See all articles