CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [HELP] système de pagination serveur PHP

News culture
La Planète des Singes : Le Nouveau Royaume - la révolution simienne est en marche !
DébutPage précedente
1
Page suivantePage suivante
Pseudo supprimé
Niveau 6
12 décembre 2018 à 16:53:12

Salut
J'ai un projet à faire et j'aurais besoin d'un petit coup de main.
Je dois développer une application client-serveur en PHP/Javascript et il me reste une fonctionnalité :
Pour faire court, disons qu'il y a un formulaire à remplir sur le client pour chercher des produits qui sont stockés sur le serveur: J'écris le nom du produit, je valide, le serveur cherche les produits qui correspondent à ce nom et renvoie une liste de produits qui sera affichée sur le client.
Sauf que le serveur peut renvoyer une très très longue liste de produis et ça pourrait causer des problèmes de performances de tout renvoyer d'un coup.
DONC, ce que je veux faire : le serveur ne doit renvoyer les résultats que par " partie " , par exemple: si y a 1000 résultats, il va en renvoyer 100 puis 100 puis 100 etc... du coté client, y aura plusieurs pages, à chaque fois que l'utilisateur change de page, le serveur envoie les 100 suivants.
J'espère que j'ai été assez clair.
Vous pourriez m'indiquer une piste à suivre pour réaliser ça ? N'importe quoi, juste pour mettre sur le bon chemin.
Je suis sûr que ça doit être un truc bête mais je suis novice et j'arrive pas à trouver ce qu'il faut :( .

merci d'avance.

blackapplex blackapplex
MP
Niveau 10
12 décembre 2018 à 17:35:02

En SQL : https://sql.sh/cours/limit
En PHP : Si t'as les données, tu peux les mettre en cache pour ce client un certain temps, et tu ne lis que les lignes que le client demande sur le cache qui contient tout. (le client fait une requête sur les 1 à 10e lignes, tu génères tout le fichier de 100k lignes, tu le mets en cache, tu fetch les 1 à 10e ligne)
En JS : Tu masques les données et tu les affiches en fonction de la page sélectionnée

Message édité le 12 décembre 2018 à 17:35:51 par blackapplex
Pseudo supprimé
Niveau 6
13 décembre 2018 à 00:03:47

Sur le lien SQL :
" Certains développeur pensent à tort que l’utilisation de LIMIT permet de réduire le temps d’exécution d’une requête. Or, le temps d’exécution est sensiblement le même car la requête va permettre de récupérer toutes les lignes (donc temps d’exécution identique) PUIS seulement les résultats définit par LIMIT et OFFSET seront retournés. Au mieux, utiliser LIMIT permet de réduire le temps d’affichage car il y a moins de lignes à afficher. "

Bah du coup, ça sert à rien au fait ?

blackapplex blackapplex
MP
Niveau 10
13 décembre 2018 à 10:49:00

Le 13 décembre 2018 à 00:03:47 coorobizar a écrit :
Sur le lien SQL :
" Certains développeur pensent à tort que l’utilisation de LIMIT permet de réduire le temps d’exécution d’une requête. Or, le temps d’exécution est sensiblement le même car la requête va permettre de récupérer toutes les lignes (donc temps d’exécution identique) PUIS seulement les résultats définit par LIMIT et OFFSET seront retournés. Au mieux, utiliser LIMIT permet de réduire le temps d’affichage car il y a moins de lignes à afficher. "

Bah du coup, ça sert à rien au fait ?

Pas sûr que ça soit réellement à prendre en compte...
Mais je connais pas l'implémentation exacte. SQL a été fait pour pas qu'on ait à se soucier de ce genre de chose. De toute façon pour arriver à la 10e ligne faut que tu ais passé les 9 qui précèdent, t'auras une complexité en O(n) ou O(log(n)) si t'indexes les n° de ligne dans un arbre (mais dès que tu supprimes une entrée faut mettre à jour l'index).
Bref, tout ça c'est des considérations que j'évite quand on me laisse une fonction qui fait tout sauf si je remarque un problème dans la pratique. Sinon autant faire la version PHP

SatanasBee SatanasBee
MP
Niveau 8
15 décembre 2018 à 18:37:30

Le 13 décembre 2018 à 00:03:47 coorobizar a écrit :
Sur le lien SQL :
" Certains développeur pensent à tort que l’utilisation de LIMIT permet de réduire le temps d’exécution d’une requête. Or, le temps d’exécution est sensiblement le même car la requête va permettre de récupérer toutes les lignes (donc temps d’exécution identique) PUIS seulement les résultats définit par LIMIT et OFFSET seront retournés. Au mieux, utiliser LIMIT permet de réduire le temps d’affichage car il y a moins de lignes à afficher. "

Bah du coup, ça sert à rien au fait ?

Ca dépend des requêtes, parfois un LIMIT 1; est instantannée alors que la requête seule mettrais des minutes.

Après, sur 1000 produits ça me semble exploitable encore de jouer avec le LIMIT et l'OFFSET...

Si jamais tu veux la version "optimisé" réellement, je te conseil de suivre ce lien: http://mysql.rjweb.org/doc.php/pagination

Après voilà, je dirais que c'est selon le contexte, la requête et la taille du catalogue, car il y a la dualité entre optimisé ou faire simple... (appliquer les recommandation du lien que j'ai passé peut paraitre "overkill" dans certaines situations), car MySQL semble souffrir du "LIMIT/OFFSET" uniquement si il y a BEAUCOUP de page et que l'offset devient énorme...

Message édité le 15 décembre 2018 à 18:39:18 par SatanasBee
DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment