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

MkFramework Discussion :

Pagination et les boutons précédent et suivant


Sujet :

MkFramework

  1. #1
    Membre habitué
    Homme Profil pro
    Responsable SAV
    Inscrit en
    Mars 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable SAV

    Informations forums :
    Inscription : Mars 2010
    Messages : 122
    Points : 128
    Points
    128
    Par défaut Pagination et les boutons précédent et suivant
    Bonjour,
    est-il possible d'avoir des boutons précédent et suivant dans la génération d'une pagination ?
    J'ai une page où la pagination s’étend sur deux lignes, or j'aimerai par exemple n'afficher que 6 liens à la fois, et le 7 soit remplacé par le bouton suivant.
    Quand je suis au huitième lien avoir au début des liens, le bouton précédent.

    Cordialement

  2. #2
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Bonsoir,
    Pouvez vous m'indiquer ce que vous utiliser pour la pagination afin de vous proposer la réponse

    Mais en effet, si vous êtes passé par la génération CRUD avec pagination, je pourrais le rajouter
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  3. #3
    Membre habitué
    Homme Profil pro
    Responsable SAV
    Inscrit en
    Mars 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable SAV

    Informations forums :
    Inscription : Mars 2010
    Messages : 122
    Points : 128
    Points
    128
    Par défaut
    Bonsoir,
    En effet, j'utilise le builder pour générer la pagination, vous trouverez une fonction ci-dessous :
    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
     
    public function _list(){
     
    		$tMk_tfis=model_mk_tfis::getInstance()->findAll();
     
    		$oView=new _view('mk_tfis::list');
    		$oView->tMk_tfis=$tMk_tfis;
     
     
     
    		$oModulePagination=new module_pagination;
    		$oModulePagination->setModuleAction('mk_tfis::list');
    		$oModulePagination->setParamPage('page');
    		$oModulePagination->setLimit(20);
    		$oModulePagination->setPage( _root::getParam('page') );
    		$oModulePagination->setTab( $tMk_tfis );
     
    		$oView->tMk_tfis=$oModulePagination->getPageElement();
     
    		$this->oLayout->add('main',$oView);
     
     
    		$oViewPagination=$oModulePagination->build();
     
    		$this->oLayout->add('main',$oViewPagination);
     
    	}
    cordialement

  4. #4
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Et bien c'est très simple, comme vous pouvez le lire, vous instanciez le module pagination
    Vous pouvez donc editer celui-ci en ouvrant les fichiers du répertoire module/pagination
    Fichier de vue view/list.php

    Editez le comme suit
    Passant de :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <div class="pagination">
    <ul>
    <?php for($i=1;$i<=$this->iMax;$i++):?>
    	<?php $tParam=$this->tParam ?>
    	<?php $tParam[$this->sParamPage]=$i?>
    	<li <?php if($i==($this->iPage+1)):?>class="selectionne"<?php endif;?>><a href="<?php echo _root::getLink($this->sModuleAction,$tParam) ?>">page <?php echo $i?></a></li> 
    <?php endfor;?>
    </ul>
    </div>

    à
    Code php : 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
     
    <div class="pagination">
    <ul>
    	<?php if($this->iPage):?>
    		<?php $tParamPrevious=$this->tParam?>
    		<?php $tParamPrevious[$this->sParamPage]=$this->iPage?>
     
    		<li><a href="<?php echo _root::getLink($this->sModuleAction,$tParamPrevious) ?>">&lt;&lt;</a></li>
    	<?php else:?>
    		<li>&lt;&lt;</li>
    	<?php endif;?>
     
    	<?php for($i=1;$i<=$this->iMax;$i++):?>
    		<?php $tParam=$this->tParam ?>
    		<?php $tParam[$this->sParamPage]=$i?>
    		<li <?php if($i==($this->iPage+1)):?>class="selectionne"<?php endif;?>><a href="<?php echo _root::getLink($this->sModuleAction,$tParam) ?>">page <?php echo $i?></a></li> 
    	<?php endfor;?>
     
    	<?php if( ($this->iPage+1) < $this->iMax):?>
    		<?php $tParamNext=$this->tParam?>
    		<?php $tParamNext[$this->sParamPage]=$this->iPage+2?>
     
    		<li><a href="<?php echo _root::getLink($this->sModuleAction,$tParamNext) ?>">&gt;&gt;</a></li>
    	<?php else:?>
    		<li>&gt;&gt;</li>
    	<?php endif;?>
    </ul>
    </div>
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  5. #5
    Membre habitué
    Homme Profil pro
    Responsable SAV
    Inscrit en
    Mars 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable SAV

    Informations forums :
    Inscription : Mars 2010
    Messages : 122
    Points : 128
    Points
    128
    Par défaut
    Bonsoir,

    Merci pour la rapidité de la réponse. Du coup, c'est moi qui ai mis du temps à venir voir la réponse.
    J'aime bien votre réponse qui commence par "dans ce cas là, c'est simple".
    Le code semble plus complexe que le premier qui est généré par le builder.
    En effet, ce code fonctionne très bien, mais il ne répond qu'à la première ligne de mon problème.
    Il ajoute des boutons "avant et précédent" au chaque côté de la suite des liens de pagination, mais j'ai toujours mes deux lignes de liens.
    par exemple au lieu d'avoir
    << page 1 page 2 page 3 page 4 page 5 page 6 page 7 page 8 page 9 page 10 >>
    j'aimerai avoir
    << page 1 page 2 page 3 page 4 page 5 page 6 >>
    et lorsque j'affiche la page 7, je puisse à avoir ceci
    << page 2 page 3 page 4 page 5 page 6 page 7 >>

    Vous avez sans doute fait le plus gros de travail, mais je n'arrive pas à apporter à votre code
    les modifications qui me permettraient d'avoir ce que je veux.
    Je vous remercie par avance du temps que vous nous offrez.

    Cordialement

  6. #6
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Bonsoir,
    Je dis c'est simple car vous avez les fichiers sous la main, il faut les connaitre, les regarder pour les customiser selon vos besoin

    Donc pour reprendre, toujours le meme fichier

    On a:
    Code php : 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
     
    <div class="pagination">
    <ul>
    	<?php if($this->iPage):?>
    		<?php $tParamPrevious=$this->tParam?>
    		<?php $tParamPrevious[$this->sParamPage]=$this->iPage?>
     
    		<li><a href="<?php echo _root::getLink($this->sModuleAction,$tParamPrevious) ?>">&lt;&lt;</a></li>
    	<?php else:?>
    		<li>&lt;&lt;</li>
    	<?php endif;?>
     
    	<?php for($i=1;$i<=$this->iMax;$i++):?>
    		<?php $tParam=$this->tParam ?>
    		<?php $tParam[$this->sParamPage]=$i?>
    		<li <?php if($i==($this->iPage+1)):?>class="selectionne"<?php endif;?>><a href="<?php echo _root::getLink($this->sModuleAction,$tParam) ?>">page <?php echo $i?></a></li> 
    	<?php endfor;?>
     
    	<?php if( ($this->iPage+1) < $this->iMax):?>
    		<?php $tParamNext=$this->tParam?>
    		<?php $tParamNext[$this->sParamPage]=$this->iPage+2?>
     
    		<li><a href="<?php echo _root::getLink($this->sModuleAction,$tParamNext) ?>">&gt;&gt;</a></li>
    	<?php else:?>
    		<li>&gt;&gt;</li>
    	<?php endif;?>
    </ul>
    </div>

    Il faudrait modifier la partie boucle for qui liste l'ensemble des pages
    Cette partie là
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php for($i=1;$i<=$this->iMax;$i++):?>
    		<?php $tParam=$this->tParam ?>
    		<?php $tParam[$this->sParamPage]=$i?>
    		<li <?php if($i==($this->iPage+1)):?>class="selectionne"<?php endif;?>><a href="<?php echo _root::getLink($this->sModuleAction,$tParam) ?>">page <?php echo $i?></a></li> 
    	<?php endfor;?>

    Ce que j'ai déja vu sur d'autre site, c'est q'en fonction d'un nombre de pages, on affiche les N premieres, ... N dernieres

    Par exemple 1 2 3 .... 14 15 16

    Qu'en pensez-vous ?
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  7. #7
    Membre habitué
    Homme Profil pro
    Responsable SAV
    Inscrit en
    Mars 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable SAV

    Informations forums :
    Inscription : Mars 2010
    Messages : 122
    Points : 128
    Points
    128
    Par défaut
    Bonjour,
    Merci pour la proposition, je vais prendre le temps de comprendre les différentes parties du code
    et je vais tenter de l'adapter à ma situation.
    Je reviendrai par la suite faire un compte rendu.
    C'est en forgeant qu'on s'améliore.
    Encore mille mercis

    Cordialement

  8. #8
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Bonne mentalité

    Bon courage, dispo si besoin
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  9. #9
    Membre habitué
    Homme Profil pro
    Responsable SAV
    Inscrit en
    Mars 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable SAV

    Informations forums :
    Inscription : Mars 2010
    Messages : 122
    Points : 128
    Points
    128
    Par défaut
    Bonne nuit,
    Après quelques heures, j'ai réussi à adapter votre code à mon idée. Mes rajouts sont moins élégants mais ils ont le mérite de répondre à mon problème.
    Alors si quelqu'un peut soigner sa présentation, je serai tout aussi heureux.
    Comme vous m'avez dit, je me suis concentré sur la boucle for. Sachez que sans votre code et vos explications, je serai encore entrain d'errer.
    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
     
    <?php/**********************************************************************/?>
     <?php 
      // je veux afficher 6 liens seulements
      $j = 0;
      $r = ($this->iPage+1) -3 ; // 3 premiers liens, avec le lien en cours inclus 
      $s = ($this->iPage+1) +3 ; // 3 liens après le lien en cours
      $iTrois_points_sup = 0 ;
      $iTrois_points_inf = 0 ;
     if($r > 0 ) // détermine la position du lien en cours
     $j = $r ;
     
     ?>
     
    	<?php for($i=1;$i<=$this->iMax;$i++):?>
    		<?php $tParam=$this->tParam ?>
    		<?php $tParam[$this->sParamPage]=$i?>
    		<?php if( $i > $j AND ($this->iPage+1)> $j OR $i >= ($this->iPage+1) AND $i <= $s ) :?>
    		<?php $j++; ?>
    		<li <?php if($i==($this->iPage+1)):?>class="selectionne"<?php endif;?>><a href="<?php echo _root::getLink($this->sModuleAction,$tParam) ?>">page <?php echo $i?></a></li> 
    		<?php else:?>
     
        <?php if( $i > $s AND $iTrois_points_sup < 1) :?>
    		<?php $iTrois_points_sup++; ?>
    		...
    		<?php endif;?>
     
    		<?php if( $r > 0 AND $iTrois_points_inf < 1) :?>
    		<?php $iTrois_points_inf++; ?>
    		...
    		<?php endif;?>
     
    		<?php endif;?>
     
    	<?php endfor;?>
     
     <?php/**********************************************************************/?>
    Avec un total de 10 liens de pagination par exemple.
    si je suis à la page 3, j'ai cet affichage.

    << page 1 page 2 page 3 page 4 page 5 page 6 ... >>


    Et si je suis à la page 4.
    << ... page 2 page 3 page 4 page 5 page 6 page 7 ... >>

    Enfin à la page 10.


    << ... page 8 page 9 page 10 >>

    Merci encore pour l'aide apportée
    Cordialement

  10. #10
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Merci à vous de partager vos questions et solutions qui peuvent aider d'autres utilisateurs
    Vous pouvez passer le sujet en résolu
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

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

Discussions similaires

  1. Focus sur un composant avec les boutons précédent et suivant de Safari
    Par roi_danton dans le forum Développement iOS
    Réponses: 0
    Dernier message: 30/08/2013, 16h30
  2. Réponses: 7
    Dernier message: 07/04/2011, 09h35
  3. Boutons Précédent et Suivant pour un CD ?
    Par vez2006 dans le forum Flash
    Réponses: 13
    Dernier message: 12/10/2006, 20h01
  4. Réponses: 3
    Dernier message: 23/07/2006, 17h15
  5. Réponses: 13
    Dernier message: 06/07/2006, 17h06

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