Astuce #4: Système de pagination en PHP

แชร์
ฝัง
  • เผยแพร่เมื่อ 11 ก.ย. 2024
  • Nous allons voir comment créer un système de pagination en PHP et MySQL. Un système de pagination permet de diviser le contenu à lister sur un ensemble de pages indexés par des numéros. Ce système permet de rendre la présentation des données plus claire et, aussi, réduire le volume des éléments chargés. Dans cette astuce nous allons découvrir le code PHP qui permet de procéder à la pagination des enregistrements récupérés depuis une base de données.

ความคิดเห็น • 55

  • @MohamedChiny
    @MohamedChiny  4 ปีที่แล้ว +4

    Pour plus de cours, rendez-vous sur chiny.me

  • @jewelgeorgio5636
    @jewelgeorgio5636 4 ปีที่แล้ว +4

    Merci beaucoup prof Mohamed ...très bien expliqué comme d'habitude. Concis et clair. Les élèves qui ont un prof comme toi ont vraiment de la chance . C'est pas le cas pour certains centres de formation où les pseudo-formateurs sont vraiment des imposteurs !!! Merci pour tout ce que tu as fait . Bravo

    • @MohamedChiny
      @MohamedChiny  4 ปีที่แล้ว

      Merci beaucoup Jewel pour votre commentaire. ça me fait plaisir comme d'habitude :)

  • @Doumams83
    @Doumams83 2 ปีที่แล้ว +2

    Merci beaucoup, ta méthode m'a permise de solutionner mon affichage d'éléments en MVC! Donc merci beaucoup ce projet me tenait à coeur, me voilà débloqué.

    • @MohamedChiny
      @MohamedChiny  2 ปีที่แล้ว

      De rien. Je suis content que ce tuto vous ait été utile. Merci pour votre commentaire :)

  • @gentilleantonio4086
    @gentilleantonio4086 ปีที่แล้ว +1

    Votre explication est vraiment simple efficace et facile à comprendre. Merci.

    • @MohamedChiny
      @MohamedChiny  ปีที่แล้ว

      De rien. Merci pour votre commentaire :)

  • @MrChaosbc
    @MrChaosbc ปีที่แล้ว +1

    Thanks this is superclear and really helpful! it saved my day

    • @MohamedChiny
      @MohamedChiny  ปีที่แล้ว

      You're welcome. I'm glad you enjoyed the video. Thanks for your comment :)

  • @tsering4
    @tsering4 2 ปีที่แล้ว +1

    Bonjour Mohamed, Merci beaucoup! j'ai 3 différents types de données à afficher sur une page col-4 (x3) ce qui était un peu compliqué mais je viens de terminer la pagination avec succès. Milles mercis :)

    • @MohamedChiny
      @MohamedChiny  2 ปีที่แล้ว +1

      De rien. Je suis ravi que la vidéo puisse vous être utile. Merci pour votre commentaire et bonne continuation :)

    • @tsering4
      @tsering4 2 ปีที่แล้ว +1

      @@MohamedChiny 🙏🙏🙏🙏

  • @mohamedcherradi5274
    @mohamedcherradi5274 4 ปีที่แล้ว +2

    merci bcp pour vos efforts. Merci de nous faire des videos sur les failles de securites en php et comment on peut securiser ces derniers et grand merci d'avance votre contenu tres riche tres claire merciii

    • @MohamedChiny
      @MohamedChiny  4 ปีที่แล้ว +2

      De rien Ssi Mohamed. Oui une série de sécurite est prévue aussi. Peut être que je la commencerai plus tôt que prévu. Merci pour votre commentaire :)

    • @mohamedcherradi5274
      @mohamedcherradi5274 4 ปีที่แล้ว +1

      @@MohamedChiny Merci a toi cher Mohamed. Que Dieu te protége

    • @MohamedChiny
      @MohamedChiny  4 ปีที่แล้ว

      @@mohamedcherradi5274 Merci :)

  • @princeTaTa1
    @princeTaTa1 3 ปีที่แล้ว +2

    nikel tres bien expliquer

    • @MohamedChiny
      @MohamedChiny  3 ปีที่แล้ว

      Merci à vous. C'est encourageant :)

  • @amineunknow7653
    @amineunknow7653 2 ปีที่แล้ว +1

    Merci

    • @MohamedChiny
      @MohamedChiny  2 ปีที่แล้ว +1

      De rien. Merci pour votre commentaire :)

  • @TheChaos3DS
    @TheChaos3DS 3 ปีที่แล้ว +1

    Merci pour la vidéo !

    • @MohamedChiny
      @MohamedChiny  3 ปีที่แล้ว +1

      De rien. Merci pour votre commentaire :)

  • @alphago-59
    @alphago-59 3 ปีที่แล้ว +1

    Excellent 👍

    • @MohamedChiny
      @MohamedChiny  3 ปีที่แล้ว

      Merci pour votre commentaire :)

  • @bechirteyeb
    @bechirteyeb ปีที่แล้ว +1

    merci bien

    • @MohamedChiny
      @MohamedChiny  11 หลายเดือนก่อน

      De rien. Merci pour votre commentaire :)

  • @medyou2815
    @medyou2815 4 ปีที่แล้ว +2

    Bonjour et Aide mobarak said à vous Mr Chiny et à vos invités, merci pour vos efforts, une petite question : que va-t-il se passer si l'utilisateur entre, manuellement via l'URL, une valeur autre que numérique dans la variable page : page=a ?

    • @MohamedChiny
      @MohamedChiny  4 ปีที่แล้ว +1

      Bonjour et Aid Moubarak à vous aussi.
      En fait c'est une très bonne question, et j'ai oublié d'expliqué ce cas de figure dans la vidéo. Ce qui va se passer est le suivant:
      - Si l'utilisateur entre une chaine de caractères qui ne contient aucun chiffre alors la valeur sera castée en entier et elle prendra automatiquement la valeur 0. Quand le calcul sera fait pour la variable $debut, ça donnera une valeur négative, dans ce cas la requête SQL ne vas rien envoyer et le navigateur sera redirigé à la page courante dont la valeur par défaut vaut page 1.
      - Si l'utilisateur entre une chaine de caractère qui contient des chiffres (par exemple 4abc), alors même comportement que le cas précédent, mais cette fois la valeur castée sera 4, et la page 4 sera chargée.
      En résumé, quelque soit la valeur entrée par l'utilisateur, il tombera toujours sur l'une des pages prévues.
      Merci à vous :)

    • @medyou2815
      @medyou2815 4 ปีที่แล้ว +2

      une autre proposition est de tester la variable :
      si elle est numérique et si elle est dans intervalle correcte alors afficher la page voulue.
      sinon afficher la première page (par défaut).
      merci pour vos efforts

    • @MohamedChiny
      @MohamedChiny  4 ปีที่แล้ว +1

      @@medyou2815 Oui bien sûr. Le code est vraiment basique pour simplifier l'explication sinon il y a aussi le fait de prévoir la pagination dynamique, c'est à dire: si le nombre d'articles est 1000 et on affiche 5 articles par page, on aura besoin de 200 pages, donc 200 liens à afficher ce n'est pas du tout pratique, mais on peut afficher 10 liens qui entourent la page courante, un lien de la page de début et un lien de la page de fin... Pour ce qui est de vérifier si l'utilisateur a bien saisie la valeur juste, il s'agit en fait d'un classique de la sécurité: il faut toujours filtrer les entrées, mais comme je l'ai dit, ça reste un code basique pour faciliter l'apprentissage. Merci :)

    • @medyou2815
      @medyou2815 4 ปีที่แล้ว +3

      merci beaucoup pour les éclaircissements, la pagination est un outil très puissant et indispensable.

    • @MohamedChiny
      @MohamedChiny  4 ปีที่แล้ว

      @@medyou2815 Merci à vous :)

  • @williamkenfack9361
    @williamkenfack9361 ปีที่แล้ว +1

    Merci bien
    Mais comment on fait quand on rendre la navigation plus légère. Parce que dans le cas où on retrouve avec 100 pages je crois pas que ce serait idéal d'afficher tous les liens des 100 dans la pagination ?

    • @MohamedChiny
      @MohamedChiny  ปีที่แล้ว

      De rien. Pour cette vidéo, j'ai pas voulu trop compliquer la tâche. L'idéal serait d'afficher un nombre limité de liens, par exemple, les liens des 6 premières pages et le lien de la dernière page (1, 2, 3, 4, 5, 6, 100) si on considère qu'on a 100 pages.
      Ensuite, on décale les numéros de pages selon la page sur laquelle on est. Mais c'est un traitement supplémentaire et un peu plus complexe, et j'ai voulu juste survoler le principe.
      Merci pour votre commentaire :)

  • @youneschihab5812
    @youneschihab5812 4 ปีที่แล้ว +1

    👏👏

  • @redcraft9150
    @redcraft9150 3 ปีที่แล้ว +1

    Bonjour , pouvons nous avoir accès à votre fichier style.css ?

    • @MohamedChiny
      @MohamedChiny  3 ปีที่แล้ว +1

      @font-face{
      font-family:titillium;
      src:url("../fonts/Titillium.ttf");
      }
      body{
      margin:0;
      padding:0;
      color:#CCC;
      }
      *{
      font:12pt titillium;
      }
      header{
      text-align:left;
      padding:20px;
      background-color:#EEE;
      color:#000;
      }
      #pagination{
      padding:10px;
      }
      #pagination>a{
      display:inline-block;
      width:26px;
      padding:6px;
      border:solid 1px #F80;
      background-color:#F80;
      text-align:center;
      text-decoration:none;
      color:#FFF;
      }
      #pagination>a[href]{
      background-color:#FFF;
      border:solid 1px #F80;
      color:#F80;
      }
      #pagination>a[href]:hover{
      background-color:#F8F8F8;
      }
      #cont{
      padding:10px;
      }
      #cont>div{
      padding:10px;
      margin:6px 0;
      border:solid 1px #AAA;
      border-left:solid 6px #AAA;
      color:#000;
      }
      .fl{
      display:flex;
      align-items:center;
      justify-content:space-between;
      }
      .fl img{
      width:30px;
      opacity:0.3;
      transition:all 0.3s ease;
      }
      .fl img:hover{
      opacity:1;
      transition:all 0.3s ease;
      }

  • @schaddd8996
    @schaddd8996 2 ปีที่แล้ว +1

    Bonjour, qu’est-ce que la clé « cpt » dans le $tcount svp ?

    • @MohamedChiny
      @MohamedChiny  2 ปีที่แล้ว +1

      Bonjour. C'est le nombre d'enregistrements trouvés dans la table. Il s'agit du résultat de count(id). Si vous avez bien vu la requête, "select count(id) as cpt from articles", dans ce cas le count(id) sera versé dans cpt. Cette dernière sera considérée comme une nouvelle colonne de la table "articles". J'espère que c'est plus claire :)

    • @schaddd8996
      @schaddd8996 2 ปีที่แล้ว +1

      Merci pour votre réponse, elle était très claire !
      J’ai toutefois un nouveau problème : lorsque j’appuie sur la page 1 et sur la page 2 l’URL change bien de page. Cependant j’ai un problème avec mon “LIMIT”. J’ai 13 articles et j’ai choisi 10 limites maximum mais tous les articles sont présent sur la page 1, comme si limit ne fonctionnait pas …

    • @MohamedChiny
      @MohamedChiny  2 ปีที่แล้ว

      @@schaddd8996 Dans ce cas, c'est probablement votre code SQL qui présente problème. Envoyez moi votre requête pour vérifier.

    • @schaddd8996
      @schaddd8996 2 ปีที่แล้ว +1

      Bonjour, merci encore !
      Comment puis-je vous joindre ? Avez-vous une adresse mail ?

    • @MohamedChiny
      @MohamedChiny  2 ปีที่แล้ว +1

      @@schaddd8996 Sur Facebook c'est mieux facebook.com/mohamedchiny

  • @fulviopersechini8214
    @fulviopersechini8214 3 ปีที่แล้ว +1

    Merci pour le tut :) .
    Comment puis-je ajouter page pécédente et suivante?

    • @MohamedChiny
      @MohamedChiny  3 ปีที่แล้ว +2

      De rien. Le principe est le même. Il faut juste prendre la variable $page (qui représente la page courante) et ajouter un bouton à gauche avec le paramètre $page-1 et un bouton à droite avec $page+1. Bien sûr, plus la peine de prévoir la boucle pour afficher toutes les pages dans ce cas. Bonne chance :)

  • @princeTaTa1
    @princeTaTa1 3 ปีที่แล้ว +1

    vous avez des des cours debutant?
    je remerci a l avance

    • @MohamedChiny
      @MohamedChiny  3 ปีที่แล้ว

      Oui. Les autres playlist traitent chaque technologie depuis le début. Y'en a sur HTML, CSS, Javascript, PHP, POO, AJAX... Bon apprentissage :)

  • @msalhi18
    @msalhi18 4 ปีที่แล้ว +1

    un like pour vous svp un tuto sue les langue comment switch entre le fr et en

    • @MohamedChiny
      @MohamedChiny  4 ปีที่แล้ว

      Oui je vais essayer d'en faire un le plus tôt possible. Merci :)

  • @Jawadsen
    @Jawadsen 2 ปีที่แล้ว

    Code source plz

    • @MohamedChiny
      @MohamedChiny  2 ปีที่แล้ว +1

      Je fais exprès de ne pas publier le code source afin de pousser les gens à écrire le code par eux même. C'est comme ça qu'on apprendra mieux (sauf pour les exemples où il y a beaucoup de code). Courage :)

    • @Jawadsen
      @Jawadsen 2 ปีที่แล้ว

      @@MohamedChiny
      شكرا لك جزيلا أخي ❤️

  • @rayanebouwdene9188
    @rayanebouwdene9188 ปีที่แล้ว +1

    Bonjour, j'ai essayé de faire comme dans la vidéo sauf que dès le début j'ai un problème, j'ai une structure MVC avec mon model et ma view dans mon model j'ai:

    • @MohamedChiny
      @MohamedChiny  ปีที่แล้ว

      Bonsoir, le code tel que je l'ai expliqué dans la vidéo ne respecte pas le pattern MVC. Mais vous pourrez l'adapter à vos besoins. Bon courage :)