Maison  >  Article  >  développement back-end  >  Comment utiliser PHP pour obtenir des données aléatoires non dupliquées lors de la pagination

Comment utiliser PHP pour obtenir des données aléatoires non dupliquées lors de la pagination

PHPz
PHPzoriginal
2023-04-21 09:06:33768parcourir

PHP est un langage de script largement utilisé dans le développement Web. Il est puissant, facile à utiliser et efficace, et est largement utilisé pour créer diverses applications Web. Lors du développement de ces applications, il est souvent nécessaire d'afficher les données dans des pages, et de s'assurer que les données sont aléatoires et non répétées, ce qui nécessite une attention particulière. Cet article explique comment utiliser PHP pour obtenir une pagination aléatoire de données non dupliquées.

1. Implémentation de la pagination

La pagination est une manière courante d'afficher des données. Habituellement, nous divisons un grand ensemble de données en plusieurs petits blocs de données, et chaque petit bloc de données est appelé une page. Cela peut non seulement faciliter l’affichage, mais également améliorer la vitesse de chargement des pages. En PHP, nous pouvons utiliser le mot-clé LIMIT pour implémenter la pagination.

Ce qui suit est un exemple simple de code de pagination :

<?php
$page_size = 10;
$page_num = isset($_GET[&#39;page_num&#39;]) ? $_GET[&#39;page_num&#39;] : 1;
$start = ($page_num - 1) * $page_size;
$sql = "SELECT * FROM my_table LIMIT $start, $page_size";
//执行sql语句并获取数据
?>

Dans le code ci-dessus, $page_size représente la quantité de données sur chaque page, $page_num représente le numéro de la page actuelle et $start représente la position de départ des données de la page actuelle. . La pagination peut être facilement implémentée à l'aide du mot-clé LIMIT.

2. Obtention de données aléatoires non dupliquées

Lorsque nous devons obtenir aléatoirement plusieurs éléments de données à partir d'un grand ensemble de données, nous pouvons utiliser la fonction RAND() dans MySQL. Par exemple :

SELECT * FROM my_table ORDER BY RAND() LIMIT 10;

Le code ci-dessus indique que 10 éléments de données sont obtenus aléatoirement à partir de la table my_table. Puisque la fonction RAND() est utilisée, chaque exécution est aléatoire et les données ne sont pas répétées. Cependant, cela est plus difficile lorsque cette méthode nécessite une pagination, car les résultats de chaque exécution sont différents et doivent être traités par le programme pour réaliser la pagination.

Ce qui suit fournit une idée de mise en œuvre :

1. Obtenez d'abord le nombre total de lignes dans l'ensemble de données et enregistrez-le dans une variable. Vous pouvez utiliser le code suivant :

$sql_count = "SELECT COUNT(*) AS count FROM my_table";
//执行sql语句并获取总行数
$count = $result['count'];

2. Calculez le nombre de lignes de données à obtenir :

$random_count = $page_size * 3;//获取3页数据的总行数

3 Exécutez le code suivant en boucle jusqu'à obtenir suffisamment de lignes :

$start = rand(0, $count - 1);//生成随机起始点
$sql = "SELECT * FROM my_table LIMIT $start, $random_count";
//执行sql语句并获取数据

4. données Tri aléatoire :

$data = array_unique($data);//去重
shuffle($data);//随机排序

5. Retirez simplement le nombre de lignes requis des données obtenues.

Enfin, affichez les données sur la page et implémentez la pagination. Le code complet est le suivant :

<?php
$page_size = 10;//每页数据量
$page_num = isset($_GET[&#39;page_num&#39;]) ? $_GET[&#39;page_num&#39;] : 1;//当前页数
$random_count = $page_size * 3;//获取3页的数据量
$start = ($page_num - 1) * $page_size;//分页起始行数
$sql_count = "SELECT COUNT(*) AS count FROM my_table";//获取总行数的sql语句
$sql = "SELECT * FROM my_table LIMIT $start, $random_count";//获取随机数据的sql语句
//执行sql语句并获取数据
//计算总行数
$count = $result_count[&#39;count&#39;];
$data = array();
while (count($data) < $random_count) {
    $start = rand(0, $count - 1);//生成随机起始点
    $sql = "SELECT * FROM my_table LIMIT $start, $random_count";
    //执行sql语句并获取数据
    $data = array_merge($data, $result_data);
}
$data = array_unique($data);//去重
shuffle($data);//随机排序
$data_page = array_slice($data, ($page_num - 1) * $page_size, $page_size);//分页
//展示数据
?>

De cette manière, une acquisition de données par pagination, aléatoire et sans duplication peut être réalisée. Bien entendu, cette méthode présente certains problèmes de performances, car l'instruction de requête doit être exécutée plusieurs fois. Ainsi, lorsque la quantité de données est importante, cela peut affecter les performances du programme.

3. Résumé

La pagination, l'acquisition de données aléatoires et non dupliquées sont des exigences très courantes dans le processus de développement d'applications Web. Ceci peut être facilement réalisé grâce à la méthode décrite dans cet article. Bien entendu, dans le processus de développement proprement dit, diverses technologies de mise en cache, d'optimisation de base de données et d'autres méthodes peuvent également être combinées pour améliorer encore les performances du programme.

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