Class pagination php5 poo

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 489 fois - Téléchargée 18 fois

Contenu du snippet

Voici une petite class en php qui permet de créer un système de pagination, elle est assez propre je pense, je m'en sert et elle est stable alors j'espère qu'elle vous sera utile.

Source / Exemple :


<?php
//*** CREE PAR MOUNIR R'QUIBA (MOON AIR) (cosmoswarez@msn.com) ********
//          31/08/2009 !! COPYRIGHT !!
//--------A utiliser sans moderation :D -------------------------------

  • Class qui met automatiquement en forme la pagination
  • /
class Page{ static function pagination($nbFields,$pos=1,$nbCount=10,$path){ $cPage = ceil($nbFields/$nbCount); $cBy = 0; $cStart = ($pos < 3 and $pos > 1)? $pos-1 : $pos-2; if($pos == 1){$cStart = 1;} if($pos == $cPage){$cStart = $pos - 4;} if($pos == $cPage-1){$cStart = $pos - 3;} $posPlus = $pos+1; $posMoins = $pos-1; if($cPage > 5){ $link = ($pos < 4)? "" : " <a href=\"".$path."1\" ><<</a> |"; } $linkp = ($pos < 2)? "" : " <a href=\"$path$posMoins\" ><</a> |"; $link .= $linkp; for($i=$cStart;$i<=$cPage;$i++){ $cBy++; if($cBy > 0 and $cBy < 6){ if($pos == $i){ $link .= " <font color=\"red\">$i/$cPage</font> |"; }else{ if($i >= 1){ $link .= " <a href=\"$path$i\" >$i</a> |"; } } } } $link = substr($link,0,-1); $vlink = ($pos > ($cPage-1))? "" : " | <a href=\"$path$posPlus\" >></a>"; if($cPage > 5){ $flink = ($pos > ($cPage-3))? "" : " | <a href=\"$path$cPage\" >>></a>"; } $link .= $vlink; $link .= $flink; return $link; } } /*
  • Affichage du système de pagination
  • /
$nbFields = 1000; $nbCount = 10; $nbPage = $nbFields / $nbCount; $path = "./?pos="; if(isset($_GET['pos'])){ $pos = trim(htmlentities($_GET['pos'], ENT_QUOTES)); if($pos > $nbPage or $pos <= 0 ){ $pos = 1; } }else{ $pos = 1; } $print_page = Page::pagination($nbFields,$pos,$nbCount,$path); echo $print_page; ?>

Conclusion :


Bon je pense que vous allé la trouvé assez simple alors utilisé la ;)

A voir également

Ajouter un commentaire

Commentaires

Messages postés
21
Date d'inscription
mardi 16 mars 2004
Statut
Membre
Dernière intervention
11 juillet 2008

salut
Je ne vois rien dans ce qui est de la POO ! Il y a simplement une méthode déclaré dans un nom qui renvoi un formatage HTML de balise. J'aurais simplement appelé cela méthode static de pagination.

voici un exemple
<?php

/**
* class dataPager
*
* Description for class dataPager
*
* @author: NASHOUILLE
*/
class DataPager {

private $_fieldindex = 1;

private $_pagesize;
private $_totalrowcount;

//Premiere page
public function firstPage(){
//Si derniere page egale 0
if( $this->lastPage() == 0)
return 0;

return 1;
}

//Page precedente
public function previousPage(){
//Si derniere page egale 0
if( $this->lastPage() == 0)
return 0;

if($this->_fieldindex == 1)
return $this->_fieldindex;

$prev = $this->_fieldindex;
return $prev - 1;
}

//Page suivante
public function nextPage(){
if($this->_fieldindex >= ceil($this->_totalrowcount/$this->_pagesize))
return ceil($this->_totalrowcount/$this->_pagesize);

$next = $this->_fieldindex;
return $next + 1;
}

//Derniere page
public function lastPage(){
return ceil($this->_totalrowcount/$this->_pagesize);
}

//Obtient ou définit le nombre d'enregistrements affichés pour chaque page de données.
public function pageSize($value = ""){

if(strlen(trim($value)) == 0)
return (int)$this->_pagesize;

$this->_pagesize = (int)$value;
}

//Obtient la page en cours affiché dans une page de données.
public function pageField(){
if( $this->lastPage() == 0)
return 0;

return $this->_fieldindex;
}

//Obtient ou definit le nombre total des enregistrements extraits par l'objet
//de source de données sous-jacent référencé par le contrôle lié aux données associé.
public function TotalRowCount($value = ""){
if(strlen(trim($value)) == 0)
return (int)$this->_totalrowcount;

if(!is_numeric($value))
throw new exception("Format incorrect.");

$this->_totalrowcount = (int)$value;
}

//Obtient l'index du premier enregistrement affiché dans une page de données.
public function StartRowIndex(){
//On multiplie page en court par nombre de page moins monbre de page
return $this->_fieldindex * $this->_pagesize - $this->_pagesize;
}

function __construct($value){
if($value > 1)
$this->_fieldindex = $value;
}

}

?>

pour l'utilisation c'est simple
instance du pager
$pager = new DataPager($page);

nombre page
$pager->pageSize(10);

object ou requete pour comptage des ligne
$pager->TotalRowCount($contact->dbCount());

instantation de la class de gestion SQL et utilisation des methodes $pager->StartRowIndex(), $pager->pageSize() dans la clause sql LIMIT

Méthode de pagination
[{$_SERVER['PHP_SELF']}?page= firstPage().">Premier]
[{$_SERVER['PHP_SELF']}?page= previousPage().">Precedent]
nextPage().">Suivant
lastPage().">Dernier
Messages postés
117
Date d'inscription
vendredi 5 novembre 2004
Statut
Membre
Dernière intervention
15 janvier 2013

Bonjour, je suis entièrement d'accord avec kohntark.
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
25
Salut,

Je déplore qu'une fois de plus les commentaires d'une source partent "en live". Ca relève du systématique et c'est particulièrement gonflant.
Je crois qu'il serait bon d'instaurer, ou plus exactement d'imposer (allo les admins ??) un climat plus fraternel, basé sur le partage de compétences, sur l'esprit communautaire et sur le respect de chacun, débutants comme initiés.

J'en ai franchement ras le bol, comme beaucoup ici, de voir ces "combats", qui dans de nombreux cas n'apportent qu'une mauvaise ambiance qui se fait de plus en plus présente sur le réseau CS.

Ne sommes nous pas ici pour partager et progresser chacun à notre niveau ?

En ce qui concerne ce thread :
Je ne peux que saluer que tu postes une source mtrix000, c'est en accord avec cet esprit de partage.
Là où je n'y suis plus c'est dans ta réponse à Neigedhiver.
Je pense que Neige a, comme à son habitude, apporté des critiques constructives, en argumentant et en donnant des axes d'améliorations.
Considérant cela ta réponse me semble fort déplacée.
Autant je suis d'accord lorsque tu dis que certains commentaires incitent à ne pas poster de sources, autant je ne le suis pas dans le cas présent, ni pour les nombreux commentaires de Neigedhiver que j'ai pu lire.

"tu l'as pas tester et tu te permet de la critiqué"
=> il ne suffit pas qu'une source "fonctionne" pour qu'elle prétende être une bonne source.

""neigedhiver" tu devrais arrété de faire des commentaire et commencé a partager des sources,
car j'ai plus l'impression que tu n'est la que pour faire fuire les nouveaux, surtout quand on voi la qualité insatisfesante de tes sources, sa me fait assez rire."
=>
perso c'est ton propos qui me fais particulièrement marré, et pas qu'un peu :D
Je pense que Neige fait partie des intervenants les plus constructifs et les plus calés de PHPCS et que contrairement à d'autres il ne prend pas la grosse tête en descendant les gens.

Mention particulière à "quand on voi la qualité insatisfesante de tes sources" et "quand tu n'arrives pas a la comprendre" ... fallait oser !! :D

Bref, du haut de tes ["même pas"] 10 interventions en ces lieux tu aurais sans doute mieux fait de considérer les remarques de Neigedhiver et de lire quelques unes de ses contributions, ça t'aurait évité de dire des âneries.

Je n'ai fait que réagir aux messages et n'ai pas testé, ni trop regardé la source, mais à vu de nez je ne pourrai tenir meilleurs propos que Neige.

Je teste avant lundi, promis :)

Cordialement,

Kohntark-
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
Non, je n'ai pas testé ta source. Ce n'est d'ailleurs pas en la testant que je peux me rendre compte que je n'arrive pas à lire le code.
Il n'est pas nécessaire de tester une source pour exprimer le fait qu'elle est mal codée.
Si je ne t'apprends rien quant au HTML inclus dans ta classe, pourquoi est-ce que tu le fais quand même ?

Quant à mes sources, je t'en prie, va donc y faire des commentaires. Toutes ne sont pas de qualité, je le reconnais. Ce n'est pas ce que je dirais de la dernière que j'ai partagée et que je mets régulièrement à jour : je t'invite à y jeter un oeil de manière approfondie avant de me dire que ce que je produis n'est pas de qualité.

Maintenant, parlons un peu de mes commentaires. Est-ce de ma faute si de nombreuses personnes partagent des sources d'une qualité plus que déplorable ? Là, je ne parle pas de toi, mais d'une manière générale. Est-ce pour autant que je dois fermer ma gueule et laisser des codes de merde pourrir le site ? Des codes qui seront utilisés par des utilisateurs novices, qui ne sont pas capables d'évaluer la qualité d'une source, et du fait qu'ils utilisent des codes de merde, mal codés, pas sécurisés, ne progresseront jamais. Désolé, mais j'estime de mon devoir, pour que TOUT LE MONDE puisse progresser, de dire quand une source n'est pas bonne : autant pour l'auteur que pour les utilisateurs potentiels.

Je t'ai indiqué une source qui fait de la pagination également, en soulignant ses points forts comparés à la tienne. C'est ce que je peux faire de mieux comme propositions d'améliorations. Si tu refuses d'aller y jeter un oeil pour voir en quoi elle est mieux que la tienne, ce n'est pas mon problème. Si tu préfères t'arrêter au fait que je critique négativement ta source, ce n'est pas mon problème non plus.
Et ne viens pas me dire que mon premier commentaire n'était pas constructif : j'ai souligné les points négatifs et je t'ai proposé des améliorations (via une source de qualité supérieur).

Et j'ai été sympa, j'ai pas commenté ta source d'authentification qui souffre de nombreux défauts (mais si tu y tiens, je peux faire l'effort d'y laisser un commentaire).
Messages postés
31
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
1 novembre 2012

Merci pour l'info, mais bon chacun son style,
tu l'as pas tester et tu te permet de la critiqué,
je sais que le html dans une class n'é pas apprécié et encore moin la balise font,
a vrai dire tu ne m'apprend rien et c'est a cause des commentaires comme le tien que beaucoup de dévolppeur ne partage pas leur source,

"neigedhiver" tu devrais arrété de faire des commentaire et commencé a partager des sources,
car j'ai plus l'impression que tu n'est la que pour faire fuire les nouveaux, surtout quand on voi la qualité insatisfesante de tes sources, sa me fait assez rire.

Allé la prochaine fois évite de faire des commentaires quand ta pas tester la source et encore moins quand tu n'arrives pas a la comprendre, sa tévitera de salir les pages de cs!!!
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.