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 :

système de pagination


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 110
    Par défaut système de pagination
    Bonjour à tous,

    Souhaitant mettre une pagination sur ma page pour scinder mes articles, j'ai suivit le tuto http://antoine-herault.developpez.co...atique-en-php/

    Tout à l'air de bien se passer, je n'ai pas d'erreur, par contre au niveau de la dernière boucle for, je n'arrive pas vraiment à comprendre comment l'adapter à mon site (j'utilise un système de template...)

    Est ce quelqu'un pourrait m'éclairer s'il vous plait?

    Voici mon 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <? $sql->DatabaseConnexion();
    $messagesParPage=5; //Nous allons afficher 5 messages par page.
    $cal_articles = $sql->query("SELECT COUNT(id) AS nb_articles FROM "._TARTICLE_)or die (mysql_error());
    $donnees_total=mysql_fetch_assoc($cal_articles); //On range retour sous la forme d'un tableau.
    $total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.
    //Nous allons maintenant compter le nombre de pages.
    $nombreDePages=ceil($total/$messagesParPage);
    $sql->DatabaseClose();
     
    if(isset($_GET['id'])) // Si la variable $_GET['page'] existe...
    {
         $pageActuelle=intval($_GET['id']);
     
         if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
         {
              $pageActuelle=$nombreDePages;
         }
    }
    else // Sinon
    {
         $pageActuelle=1; // La page actuelle est la n°1    
    }
     
    $premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire				
     
     
    $sql->DatabaseConnexion();
    // La requête sql pour récupérer les messages de la page actuelle.
    $aff_articles = $sql->query("SELECT * FROM "._TARTICLE_." ORDER by date DESC LIMIT ".$premiereEntree.", ".$messagesParPage)or die (mysql_error());
    $sql->DatabaseClose();
     
    while ($results = mysql_fetch_array($aff_articles,MYSQL_ASSOC)) {
     
    					$tpl->assign_block_vars('articles', array(
    					'TITRE' => $results['titre_art'],
    					'DATE' => $results['date_art'],
    					));
    }
    for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
    {
         //On va faire notre condition
         if($i==$pageActuelle) //Si il s'agit de la page actuelle...
         {
    	 $tpl->assign_vars(array(
             'NUMPAGE' =>"[ ".$i." ]",
    		 ));
         }	
         else //Sinon...
         {
    	$tpl->assign_vars(array(
    	 'NUMPAGE' => "<a href='index2.php?page=".$i."'>".$i."</a>",
    	 ));
    	 }
    }
    ?>
    Merci d'avance!

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Sans savoir quelle est ton systeme actuel et ton probleme, on ne peut pas t'aider.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 110
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Sans savoir quelle est ton systeme actuel et ton probleme, on ne peut pas t'aider.
    Euh... à vrai dire, c'est mon prof qui m'avait donné l'architecture.
    Je peux donner le code HTML qui correspond, je ne sais pas si ça peut t'aider...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <!-- BEGIN articles -->
    	{articles.TITRE}<br />{articles.DATE}
        <!-- END articles --><br />
    	Page : {NUMPAGE}

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut
    Quel est ton système? En regardant les variables dans le template, j'ai l'impression que c'est PhpBB2 template...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 110
    Par défaut
    Citation Envoyé par okoweb Voir le message
    Quel est ton système? En regardant les variables dans le template, j'ai l'impression que c'est PhpBB2 template...
    Ça y ressemble beaucoup en effet, mon prof avait dû certainement partir de ça pour créer son système.

    Je confirme, c'est bien ça!
    Si quelqu'un pouvait m'aider... je pense que mon souci vient de la boucle for, je n'ai pas de message d'erreur mais rien ne s'affiche.

    Merci!

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 110
    Par défaut
    Je fais des testes, j'ai quelque peu modifié ma boucle for:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <? for($i=1; $i<=$nombreDePages; $i++) 
    {
         if($i==$pageActuelle){ 
       $tpl->assign_block_vars('pagination', array(
          'NUMPAGE' =>"[ ".$i." ]",
       ));
    }else{
    	 $tpl->assign_block_vars('pagination', array(
    	 'NUMPAGE' => "<a href='index2.php?page=".$i."'>".$i."</a>",
    	 ));
    	 }
    }
    ?>
    Au niveau rendu, je n'ai pas de message d'erreur, par contre à l'affichage, je n'ai qu'un seul article qui s'affiche.
    Au niveau de mon code html, le contenu de:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<!-- BEGIN pagination -->
    	Page
    	{pagination.NUMPAGE}
    	<!-- END pagination -->
    n'est plus visible...

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut
    Lis bien ce tuto

    $nombreDePages te retourne t'il quelque chose?
    si oui essaies ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $pagination = '';   
    for($i=1; $i<=$nombreDePages; $i++) {
     
         if($i==$pageActuelle) $pagination .= '[ '.$i.' ]';
     
         else $pagination .=  '<a href="index2.php?page='.$i.'">'.$i.'</a>';
     
    }
    $tpl->assign_vars(array(
    	 'NUMPAGE' => $pagination
    	 ));
    as tu cette variable dans ton template :

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 110
    Par défaut
    Citation Envoyé par okoweb Voir le message
    Lis bien ce tuto

    $nombreDePages te retourne t'il quelque chose?
    si oui essaies ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $pagination = '';   
    for($i=1; $i<=$nombreDePages; $i++) {
     
         if($i==$pageActuelle) $pagination .= '[ '.$i.' ]';
     
         else $pagination .=  '<a href="index2.php?page='.$i.'">'.$i.'</a>';
     
    }
    $tpl->assign_vars(array(
    	 'NUMPAGE' => $pagination
    	 ));
    as tu cette variable dans ton template :
    Ça fonctionne!!!!!!!!!!!!!
    Super!!!!!

    Merci okoweb! j'avais zappé la partie du code où il y a le COUNT, pensant que la faute ne venait pas de là, et quand j'ai fait un echo, j'ai eu 0... parceque je n'avais pas attribué le même nom à la requête et à la variable ( ).

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 110
    Par défaut
    J'ai parlé trop vite... Mes liens de pages s'affichent, par contre à l'affichage que je demande 5 ou 10 articles par page, j'en ai qu'un qui s'affiche...

    Je vais regarder ça...

  10. #10
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut
    Citation Envoyé par Vinuto Voir le message
    Ça fonctionne!!!!!!!!!!!!!
    Super!!!!!

    Merci okoweb! j'avais zappé la partie du code où il y a le COUNT, pensant que la faute ne venait pas de là, et quand j'ai fait un echo, j'ai eu 0... parceque je n'avais pas attribué le même nom à la requête et à la variable ( ).
    Bien, pour aller loin, quand tu auras beaucoup d'éléments dans ta table, tu risque avoir un nombre de pages trop élévé.
    tu auras un truc de ce genre :
    1, 2, 3.... interminable. Faut voir également ca.

Discussions similaires

  1. [Spip] Système de pagination Spip
    Par clementM dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 03/09/2008, 19h01
  2. [Système] Système de pagination
    Par innova dans le forum Langage
    Réponses: 1
    Dernier message: 25/09/2006, 15h08
  3. [Smarty] Ecriture d'un système de pagination
    Par wkd dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 20/09/2006, 11h01
  4. [MySQL] Système de pagination pour une galerie photo
    Par Badaboumpanpan dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 27/06/2006, 15h31
  5. [phpBB][2] Réalisation d'un système de pagination
    Par AlphonseBrown dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 26/10/2005, 11h26

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