Maison >développement back-end >Problème PHP >Un exemple explique comment implémenter une fonction de pagination et de requête en PHP
Dans une page Web, lorsque nous devons afficher plus de données, telles que des listes d'articles, des listes de produits, etc., nous devons souvent paginer les données afin que les utilisateurs puissent parcourir et visualiser plus facilement. Pour les pages Web qui ont implémenté la fonction de pagination, il est parfois nécessaire d'ajouter des conditions de requête afin que les utilisateurs puissent filtrer plus précisément les données requises. Alors, comment implémenter une fonction de pagination et de requête en PHP ? Ci-dessous, nous présenterons la méthode de mise en œuvre spécifique.
Tout d’abord, passons en revue la mise en œuvre de la pagination.
Lorsque nous souhaitons implémenter une fonction de pagination, nous devons généralement utiliser deux mots-clés dans la base de données : LIMIT et OFFSET. Parmi eux, LIMIT indique le nombre maximum d'enregistrements à récupérer à partir d'une certaine position, et OFFSET indique la position à partir de laquelle récupérer. Normalement, on peut calculer les valeurs de ces deux mots-clés, et la formule est : LIMITE ($page - 1) * $pagesize, $pagesize.
Dans les applications pratiques, vous devez également faire attention aux points suivants :
Le contenu ci-dessus constitue la connaissance de base de la pagination. Si les lecteurs ne sont pas familiers avec la mise en œuvre de la pagination, ils peuvent d'abord lire certaines informations pertinentes.
Voyons maintenant comment implémenter la fonction de pagination et de requête.
Pour la fonction de pagination avec requête, lors de sa mise en œuvre, deux parties doivent être considérées séparément : la pagination et la requête. Ci-dessous, nous présenterons respectivement ces deux parties.
1. Paging
La méthode de mise en œuvre de la pagination est similaire à celle présentée ci-dessus, mais avec quelques ajustements. La méthode de mise en œuvre spécifique est la suivante :
Le nombre total de résultats de requête correspond aux données de base requises pour le calcul ultérieur du nombre total de pages et des numéros de page avant et après. Nous pouvons l'obtenir via l'instruction SELECT count(*) en SQL. Un exemple est le suivant :
SELECT count(*) as total FROM table WHERE condition;
où total est le nombre total de résultats de requête.
Cette partie est plus complexe et doit être considérée en fonction de scénarios commerciaux spécifiques. En prenant le centre commercial en ligne comme exemple, si nous voulons filtrer les types de produits, nous devons ajouter un menu déroulant à la page frontale à partir duquel les utilisateurs peuvent sélectionner le type souhaité. Ensuite, les conditions de requête envoyées depuis la page frontale sont assemblées en instructions SQL, puis la pagination est effectuée via l'algorithme de pagination et enfin les résultats de la pagination sont affichés.
Maintenant, jetons un coup d'œil à l'implémentation spécifique du code.
Le premier est le code pour obtenir le nombre total :
$sql = "SELECT count(*) as total FROM table WHERE condition"; $result = $db->query($sql); $row = $result->fetch_assoc(); $total = $row['total'];
Ensuite, le code pour assembler l'instruction SQL et effectuer la pagination :
$page = $_GET['page'] ? $_GET['page'] : 1; $pagesize = 10; $offset = ($page - 1) * $pagesize; $sql = "SELECT * FROM table WHERE condition"; if (isset($_GET['type']) && !empty($_GET['type'])) { $type = $_GET['type']; $sql .= " AND type = '$type'"; } $sql .= " ORDER BY id DESC LIMIT $offset, $pagesize"; $result = $db->query($sql);
Parmi eux, $page représente le numéro de page actuel, $pagesize représente la quantité de données affichées sur chaque page, et $offset représente la position à partir de laquelle commencez la récupération des données. Selon les conditions de requête envoyées depuis le front-end, nous assemblons l'instruction SQL, ajoutons les mots-clés LIMIT et OFFSET pour la pagination, et enfin appelons la méthode de requête via l'objet $db pour exécuter l'instruction SQL.
2. Requête
Lors de l'implémentation de la fonction de requête, nous devons généralement transmettre les conditions de requête en tant que paramètres et filtrer en fonction des conditions de requête. Par exemple, si nous souhaitons effectuer une recherche par nom de produit, nous devons ajouter une zone de requête à la page frontale afin que les utilisateurs puissent saisir le nom du produit qu'ils souhaitent interroger. Ensuite, les conditions de requête envoyées depuis la page frontale sont assemblées en instructions SQL, et enfin les résultats de la requête sont affichés dans des pages.
Maintenant, jetons un coup d'œil à l'implémentation spécifique du code.
Le premier est le code pour interroger :
$name = $_GET['name']; $sql = "SELECT count(*) as total FROM table WHERE name LIKE '%$name%'"; $result = $db->query($sql); $row = $result->fetch_assoc(); $total = $row['total'];
Ensuite, le code pour assembler les instructions SQL et la pagination :
$page = $_GET['page'] ? $_GET['page'] : 1; $pagesize = 10; $offset = ($page - 1) * $pagesize; $sql = "SELECT * FROM table WHERE name LIKE '%$name%' ORDER BY id DESC LIMIT $offset, $pagesize"; $result = $db->query($sql);
Parmi eux, $name représente le mot-clé de requête, et la correspondance floue est effectuée via le mot-clé LIKE. Selon les conditions de requête envoyées depuis le front-end, nous assemblons l'instruction SQL, ajoutons les mots-clés LIMIT et OFFSET pour la pagination, et enfin appelons la méthode de requête via l'objet $db pour exécuter l'instruction SQL.
Résumé
Ce qui précède est la méthode spécifique d'implémentation de la pagination avec requête en PHP. Dans les applications pratiques, nous devons optimiser et améliorer en fonction de scénarios commerciaux spécifiques pour obtenir une meilleure expérience utilisateur et de meilleures performances. J'espère que le contenu ci-dessus sera utile à tous les développeurs.
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!