IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Pagination en PHP


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2021
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2021
    Messages : 81
    Par défaut Pagination en PHP
    Bonjour,
    Je souhaite faire une pagination pour mes annonces. Tout marche bien: l'url, l'affichage etc. Cependant, j'ai dû mal à insérer les variables $debut et $nbre_de_pages en LIMIT dans ma fonction getAnnonces() sans que cela crée des erreurs. Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    ...
    include 'cmdaffichage.php';
     
     
    //On récupère le nombre d'enregistrements
    $count= "SELECT COUNT(id) AS cpt FROM annonces";
    $stmt= $bdd->prepare($count);
    $stmt->execute();
    $tstmt=$stmt->fetchAll();
     
     
    //Pagination
    @$page=$_GET["page"];
    if(empty($page)) $page=1;
    $nbr_elements_par_page=3;
    $nbre_de_pages=ceil($tstmt[0]["cpt"]/$nbr_elements_par_page);
    $debut=($page-1)*$nbr_elements_par_page;
     
     
     
     
    //On récupére les annonces
     $anouncement= afficherAnnonce();
     $villesm= getVilles();
    Page cmdaffichage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    function getAnnnonces(){
      global $bdd;
      $sql = ' SELECT  A.*
                      ,C.nom_'.$sql_lang.' AS CATEGORIE
                      ,V.ville_'.$sql_lang.' AS VILLE
               FROM annonces A
               LEFT JOIN categories C ON C.id = A.id_categorie
               LEFT JOIN villes V ON V.id = A.id_ville
               ORDER BY A.created_date DESC';
      try {
        $req = $bdd->prepare($sql);
        $req->execute();
        $res = $req->fetchAll(PDO::FETCH_ASSOC);
      } catch (Exception $e) {
        echo "Erreur dans la requête " . $sql;
      }
      // le temps des tests pour voir le résultat
      return $res;
    }
    //...suite
     
    function afficherAnnonce(){
     
      $annonces = getAnnnonces();
      $images = getImagesAnnonces();
    //...suite
    Auriez-vous une idée?

  2. #2
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    Bonjour,

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    getAnnnonces( $page )

    Il serait temps que tu apprennes à utiliser les fonctions PHP, non ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2021
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2021
    Messages : 81
    Par défaut
    Bonjour jreaux, merci pour ton aide En te suivant, j'ai réussi à le faire en définissant l'équation qui dépend de $page, ie. $début, mais aussi la variable $nbr_elements_par_page = 3. Il fallait les ajouter dans les fonctions getAnnnonces($page) et afficherAnnonce().
    La solution:
    Page cmdaffichage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    function getAnnnonces($page){
      global $bdd;
      @$page=$_GET["page"];
      if(empty($page)) $page=1;
      $nbr_elements_par_page=3;
      $debut=($page-1)*$nbr_elements_par_page;
     
      $sql = ' SELECT  A.*
                      ,C.nom_'.$sql_lang.' AS CATEGORIE
                      ,V.ville_'.$sql_lang.' AS VILLE
               FROM annonces A
               LEFT JOIN categories C ON C.id = A.id_categorie
               LEFT JOIN villes V ON V.id = A.id_ville
               ORDER BY A.created_date DESC
               LIMIT '.$debut.','.$nbr_elements_par_page.' ';
      try {
        $req = $bdd->prepare($sql);
        $req->execute();
        $res = $req->fetchAll(PDO::FETCH_ASSOC);
      } catch (Exception $e) {
        echo "Erreur dans la requête " . $sql;
      }
      // le temps des tests pour voir le résultat
      return $res;
    }
     
    //....suite
     
    function afficherAnnonce(){
      @$page=$_GET["page"];
      if(empty($page)) $page=1;
      $nbr_elements_par_page=3;
      $debut=($page-1)*$nbr_elements_par_page;
     
      $annonces = getAnnnonces($page);
      $images = getImagesAnnonces();
     
     
    //...suite
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    include 'cmdaffichage.php'; 
     
    //On récupère le nombre d'enregistrements
    $count= "SELECT COUNT(id) AS cpt FROM annonces";
    $stmt= $bdd->prepare($count);
    $stmt->execute();
    $tstmt=$stmt->fetchAll();
     
     
    //Pagination
    @$page=$_GET["page"];
    if(empty($page)) $page=1;
    $nbr_elements_par_page=3;
    $nbre_de_pages=ceil($tstmt[0]["cpt"]/$nbr_elements_par_page);
    $debut=($page-1)*$nbr_elements_par_page;
     
     
    //On récupére les annonces
     $anouncement= afficherAnnonce();
     $villesm= getVilles();
    Page d'accueil.php:
    <<Il serait temps que tu apprennes à utiliser les fonctions PHP, non ? >>
    ==>J'avais du mal à fusionner les fonctions contenant des requêtes et les simples requêtes, mais grâce à toi, ça commence à venir , Tu y participes

  4. #4
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    C'est bien ce que je disais :
    Tu n'as pas compris l'utilisation des paramètres d'une fonction...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function getAnnnonces($page){ // c'est l'un...
       global $bdd; 
       @$page=$_GET["page"]; // ...ou l'autre, mais pas les 2.
    ...

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2021
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2021
    Messages : 81
    Par défaut
    J'ai choisi celle là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function getAnnnonces(){ //
       global $bdd; 
    @$page=$_GET["page"]; //
    .
    Elle marche aussi. Merci

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Pas de chance, c'était le mauvais choix

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2021
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2021
    Messages : 81
    Par défaut
    Bonjour Séb, pourquoi? En suivant les instructions de jreaux ça a marché:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    function getAnnnonces(){
      global $bdd;
      @$page=$_GET["page"];
      if(empty($page)) $page=1;
      $nbr_elements_par_page=3;
      $debut=($page-1)*$nbr_elements_par_page;
     
      $sql = ' SELECT  A.*
                      ,C.nom_'.$sql_lang.' AS CATEGORIE
                      ,V.ville_'.$sql_lang.' AS VILLE
               FROM annonces A
               LEFT JOIN categories C ON C.id = A.id_categorie
               LEFT JOIN villes V ON V.id = A.id_ville
               ORDER BY A.created_date DESC
               LIMIT '.$debut.','.$nbr_elements_par_page.' ';
      try {
        $req = $bdd->prepare($sql);
        $req->execute();
        $res = $req->fetchAll(PDO::FETCH_ASSOC);
      } catch (Exception $e) {
        echo "Erreur dans la requête " . $sql;
      }
      // le temps des tests pour voir le résultat
      return $res;
    }
    // suite...

  8. #8
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Parce que tu créées une forte dépendance entre le contexte local de ta fonction et le contexte global, alors que normalement ces 2 contextes sont isolés.

    C'est considéré comme une mauvaise pratique, comme l'utilisation de @ d'ailleurs, et du goto dont heureusement peu de personnes connaissent l'implémentation PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. pagination en php
    Par rochdi123 dans le forum Langage
    Réponses: 1
    Dernier message: 24/08/2009, 10h07
  2. pagination en php
    Par hadjiphp dans le forum Langage
    Réponses: 9
    Dernier message: 12/06/2009, 10h25
  3. pagination en php
    Par biloute73 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 23/03/2009, 13h41
  4. Recherche en pagination en PHP
    Par ismonetooo dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 10/10/2008, 16h04
  5. Pagination avec PHP et Mysql
    Par __fabrice dans le forum Flash
    Réponses: 2
    Dernier message: 27/09/2006, 14h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo