Maison  >  Article  >  développement back-end  >  Comment implémenter le chargement progressif et l'affichage par pagination des données avec PHP et UniApp

Comment implémenter le chargement progressif et l'affichage par pagination des données avec PHP et UniApp

王林
王林original
2023-07-05 10:45:101091parcourir

PHP et UniApp sont deux outils de développement couramment utilisés. PHP est un langage de script côté serveur utilisé pour gérer la logique métier côté serveur ; tandis qu'UniApp est un cadre de développement multiplateforme basé sur Vue.js qui peut être utilisé pour le développement d'applications. pour plusieurs plates-formes simultanément. Dans le processus de développement actuel, nous rencontrons souvent des situations dans lesquelles nous devons charger une grande quantité de données et les afficher dans des pages. Cet article expliquera comment utiliser PHP et UniApp pour réaliser le chargement et l'affichage progressifs des données, et fournira des exemples de code correspondants.

1. Implémentation côté PHP

Côté PHP, il faut d'abord obtenir les données à afficher depuis la base de données. Afin d'obtenir l'effet de pagination, nous devons connaître le nombre total de données et calculer en combien de pages elles peuvent être divisées. Supposons que nous ayons une table nommée articles qui stocke toutes les informations sur les articles. Nous pouvons utiliser le code suivant pour obtenir le nombre total de données et le nombre total de pages : articles的表,存储了所有的文章信息,我们可以使用以下代码获取总数据数和总页数:

// 连接数据库
$servername = "localhost";
$username = "your-username";
$password = "your-password";
$dbname = "your-database";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// 获取总数据数
$sql = "SELECT COUNT(*) as total FROM articles";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$total = $row['total'];

// 计算总页数
$pageSize = 10; // 每页显示的数据数
$totalPage = ceil($total / $pageSize);

// 关闭数据库连接
$conn->close();

接着,我们需要根据当前页数和每页显示的数据数,从数据库中获取相应的数据。假设我们需要获取第$currentPage页的数据,可以使用以下代码:

// 连接数据库(同上)

// 获取当前页数
$currentPage = $_GET['currentPage'];

// 计算数据的起始索引
$startIndex = ($currentPage - 1) * $pageSize;

// 获取当前页的数据
$sql = "SELECT * FROM articles LIMIT $startIndex, $pageSize";
$result = $conn->query($sql);

$data = array();
while ($row = $result->fetch_assoc()) {
    $data[] = $row;
}

// 关闭数据库连接(同上)

// 返回数据
echo json_encode($data);

二、UniApp端的实现

在UniApp端,我们需要使用网络请求来获取PHP端返回的数据,并通过数据绑定将数据渲染到页面上。首先,我们可以在页面的data中定义一个articles数组来存储获取到的数据:

data: {
    articles: []
}

然后,在页面的onLoad生命周期函数中,我们可以发送网络请求获取数据,并将获取到的数据赋值给articles数组:

onLoad() {
    uni.request({
        url: 'http://your-domain.com/getdata.php?currentPage=1',
        success: (res) => {
            this.articles = res.data;
        }
    });
}

接下来,我们需要实现上拉加载更多的功能。当页面滚动到底部时,可以通过监听scrolltolower事件来触发加载更多的操作。在相应的事件处理函数中,我们需要发送网络请求获取下一页的数据,并将获取到的数据追加到articles

onReachBottom() {
    let currentPage = this.articles.length / this.pageSize + 1;

    uni.request({
        url: 'http://your-domain.com/getdata.php?currentPage=' + currentPage,
        success: (res) => {
            this.articles = this.articles.concat(res.data);
        }
    });
}

Ensuite, nous devons calculer le numéro de page actuel. et Le nombre de données affichées sur chaque page, et les données correspondantes sont obtenues à partir de la base de données. Supposons que nous ayons besoin d'obtenir les données sur la page $currentPage, nous pouvons utiliser le code suivant :

rrreee

2. Implémentation du côté UniApp 🎜🎜Du côté UniApp, nous devons utiliser les requêtes réseau pour obtenir les données renvoyées par le côté PHP, et restituent les données sur la page via la liaison de données. Tout d'abord, nous pouvons définir un tableau articles dans le data de la page pour stocker les données obtenues : 🎜rrreee🎜Ensuite, dans le onLoad de la page. fonction de cycle de vie, nous pouvons envoyer une requête réseau pour obtenir des données et attribuer les données obtenues au tableau articles : 🎜rrreee🎜Ensuite, nous devons implémenter davantage de fonctions de chargement pull-up. Lorsque la page défile vers le bas, vous pouvez déclencher le chargement de plus d'opérations en écoutant l'événement scrolltolower. Dans la fonction de traitement d'événements correspondante, nous devons envoyer une requête réseau pour obtenir les données de la page suivante, et ajouter les données obtenues au tableau articles : 🎜rrreee🎜Jusqu'à présent, nous avons implémenté la données Méthodes de chargement progressif et d'affichage de pagination. Grâce à l'exemple de code ci-dessus, nous pouvons obtenir des données de la base de données côté PHP et renvoyer les données correspondantes en fonction du numéro de page actuel et du nombre de données affichées sur chaque page et du côté UniApp, nous pouvons obtenir les données renvoyées ; par le côté PHP via une requête réseau et restituer les données sur la page. Dans le même temps, nous avons également implémenté la fonction de chargement pull-up et réalisé l'effet d'affichage de pagination. Avec cette approche, nous pouvons gérer efficacement de grandes quantités de données et offrir une meilleure expérience utilisateur lorsqu’elles sont affichées dans les paginations. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn