Accueil > > > LISTAGE DES IMAGES D'UN RÉPERTOIRE AVEC PAGINATION
LISTAGE DES IMAGES D'UN RÉPERTOIRE AVEC PAGINATION
Information sur la source
Description
Permet d'afficher les images d'un répertoire avec pagination. J'ai commencé par télécharger la source : http://www.phpcs.com/codes/LISTER-IMAGES-REPERTOIR E_13459.aspx et j'ai modifié à ma sauce. Vous avez donc la possibilité de parametrer : - Le nombre max d'images par page - Les couleurs des liens (utilisation de style CSS - non intégré ici car ce n'est pas le sujet) - Les extensions des images à prendre en compte
Source
- <?php
- /*!
- *
- * @author Magaly Clément
- *
- *
- **/
-
- class listage {
-
- private $strRep; // Repertoire à explorer
- private $tabExt; // Extensions images à afficher
- private $strFic; // Tableau des fichiers
-
-
- /*!
- * constructeur de la classe
- */
- function __construct($strRep, $tabExt) {
-
- $this->strRep = $strRep;
- $this->tabExt = $tabExt;
-
- $this->tabFic = $this->_creeTableauFichiers();
-
-
- }
-
-
-
- /*!
- * récupère l'extension d'un nom de fichier
- *
- * \param str $strFichier Nom du fichier
- *
- * \return str extension du fichier
- *
- *
- */
- public function getExtension($strFichier) {
-
- $intPos = strrpos($strFichier,".");
-
- if (!$intPos) {
- $strExt = "";
- } else {
- $strExt = substr($strFichier,$intPos+1,strlen($strFichier)-$intPos);
- }
-
- return $strExt;
- }
-
-
-
-
-
-
- /*!
- * Listage d'un répertoire d'images avec pagination
- *
- * \param $nbMax Nombre d'images maximun à afficher par page
- * \param $intDebut Numéro de l'image ou l'on débute
- *
- */
- public function afficheImagesPage($intDebut, $intMax){
-
-
- $i = $intDebut;
-
-
- while (isset($this->strFic[$i]) && $i < ($intMax + $intDebut)) {
- if ( $this->strFic[$i] != ".." && $this->strFic[$i] != "." && $this->strFic[$i] != "" ) {
- ?>
- <img src="<?php echo $this->strRep . $this->strFic[$i];?>" width="100" height="100" alt="<?php echo $this->strFic[$i];?>" />
- <?php
- }
- $i++;
- }
-
-
-
- }
-
-
- /*!
- * Affichage des numéros des pages
- *
- * \param $intPage Numéro de la page en cours
- * \param $nbMax Nombre d'images maximun à afficher par page
- *
- */
- public function afficheNumerosPages($intPage, $lien, $nbMax, $couleurLien, $couleurNonLien, $couleurTexte){
-
- $nbTotal = count($this->strFic);
-
- $nb_pages = ceil($nbTotal / $nbMax);
-
- $i = 1;
-
- $debut = 0;
-
- // Si il y a plusieurs pages
- if ($nbTotal > $nbMax) {
-
-
- // On affiche 5 lien autour du lien de la page actuelle
- $min = $intPage - 5;
- $max = $intPage + 5;
-
- if ($min < 1) {
-
- $min = 1;
-
- }
- if ($max >= floor($nb_pages)) {
-
- $max = floor($nb_pages) - 1;
-
- }
-
- $debut = ($min - 1) * $nbMax;
-
- if ($min > 1) {
- // On affiche "premiere page"
- $this->_afficheLienPage($lien, $intPage, 1, 0, $couleurLien, $couleurNonLien, $couleurTexte, "debut");
- }
-
- // Page précédente
- if ($intPage > 1) {
-
- $intPagePrec = $intPage;
- $numLienPrec = $intPagePrec - 1;
- $debutPagePrec = $intPage * $nbMax;
-
- $this->_afficheLienPage($lien, $intPagePrec, $numLienPrec, $debutPagePrec, $couleurLien, $couleurNonLien, $couleurTexte, "Page précédente");
-
- }
-
- ?>
- <span class="<?php echo $couleurTexte?>"> - </span>
- <?php
- for ($num_lien=$min;$num_lien<=$max+1;$num_lien++) {
-
- $this->_afficheLienPage($lien, $intPage, $num_lien, $debut, $couleurLien, $couleurNonLien, $couleurTexte);
-
- // debut
- $debut = $debut + $nbMax;
-
- } // fin for
-
- $dernier = floor($nb_pages) - 1;
-
- if ($intPage <= $dernier) {
- // Page suivante
- $intPageSuiv = $intPage;
- $numLienSuiv = $intPageSuiv + 1;
- $debutPageSuiv = $intPage * $nbMax;
-
- $this->_afficheLienPage($lien, $intPageSuiv, $numLienSuiv, $debutPageSuiv, $couleurLien, $couleurNonLien, $couleurTexte, "Page suivante");
- }
-
- if ($max < $dernier) {
- // On affiche "derniere page"
- $numLienFin = floor($nb_pages);
- $debutPourLienFin = ($numLienFin - 1) * $nbMax;
-
- $this->_afficheLienPage($lien, $intPage, $numLienFin, $debutPourLienFin, $couleurLien, $couleurNonLien, $couleurTexte, "fin");
- }
-
-
- }
-
- }
-
-
-
- // ************************
- // * Interface privée *
- // ************************
-
- /*!
- * Création d'un tableau trié contenant tous les fichiers du répertoire
- *
- * \param $tabExt Tableau des extensions autorisées
- *
- */
- private function _creeTableauFichiers(){
-
- $dossier = opendir($this->strRep);
-
- $this->strFic = array();
-
- while ($fichier = readdir($dossier)) {
-
- if (in_array($this->getExtension($fichier), $this->tabExt)){
- array_push($this->strFic, $fichier);
- }
- }
-
- sort($this->strFic);
-
- }
-
-
-
- /*!
- * Affichage d'un lien de page
- *
- * \param $intPage Numéro de la page en cours (1 par défaut)
- * \param $num_lien Numéro du lien
- * \param $debut Début de la numérotation
- * \param $couleurLien Style des liens
- * \param $couleutNonLien Style du texte du numero de la page en cours
- * \param $couleurTexte Couleur du texte (en dehors des numeros)
- * \param $texte Texte du lien
- */
- private function _afficheLienPage($lien, $intPage, $num_lien, $debut, $couleurLien, $couleurNonLien, $couleurTexte, $texte=""){
-
- if (strstr($lien, "?")){
- $sep = "&";
- } else {
- $sep = "?";
- }
-
- if ($texte != "") {
- // Lien de debut ou lien de fin
-
- if ($texte == "debut") {
-
- $title = "Allez au début";
- $texte = "<< ";
-
- } else if ($texte == "fin") {
-
- $title = "Allez à la fin";
- $texte = " >>";
-
- } else if ($texte == "Page suivante") {
-
- $title = "Allez à la page suivante";
- $texte = " >";
-
- } else if ($texte == "Page précédente") {
-
- $title = "Allez à la page précédente";
- $texte = "< ";
- }
-
- ?>
- <a class="<?php echo $couleurLien?>" href="<?php echo $lien . $sep;?>deb=<?php echo $debut?>" title="<?php echo $title?>"><?php echo $texte?></a>
- <?php
-
- } else {
-
- $title = "Allez à la page " . $num_lien;
-
- if ($intPage != $num_lien) {
- ?>
- <a class="<?php echo $couleurLien?>" href="<?php echo $lien . $sep;?>deb=<?php echo $debut?>" title="<?php echo $title?>"><?php echo $num_lien;?></a>
- <span class="<?php echo $couleurTexte?>"> - </span>
- <?php
- } else {
- ?>
- <span class="<?php echo $couleurNonLien?>"><?php echo $num_lien; ?></span>
- <span class="<?php echo $couleurTexte; ?>"> - </span>
- <?php
- }
-
- }
- }
-
- }
- ?>
<?php
/*!
*
* @author Magaly Clément
*
*
**/
class listage {
private $strRep; // Repertoire à explorer
private $tabExt; // Extensions images à afficher
private $strFic; // Tableau des fichiers
/*!
* constructeur de la classe
*/
function __construct($strRep, $tabExt) {
$this->strRep = $strRep;
$this->tabExt = $tabExt;
$this->tabFic = $this->_creeTableauFichiers();
}
/*!
* récupère l'extension d'un nom de fichier
*
* \param str $strFichier Nom du fichier
*
* \return str extension du fichier
*
*
*/
public function getExtension($strFichier) {
$intPos = strrpos($strFichier,".");
if (!$intPos) {
$strExt = "";
} else {
$strExt = substr($strFichier,$intPos+1,strlen($strFichier)-$intPos);
}
return $strExt;
}
/*!
* Listage d'un répertoire d'images avec pagination
*
* \param $nbMax Nombre d'images maximun à afficher par page
* \param $intDebut Numéro de l'image ou l'on débute
*
*/
public function afficheImagesPage($intDebut, $intMax){
$i = $intDebut;
while (isset($this->strFic[$i]) && $i < ($intMax + $intDebut)) {
if ( $this->strFic[$i] != ".." && $this->strFic[$i] != "." && $this->strFic[$i] != "" ) {
?>
<img src="<?php echo $this->strRep . $this->strFic[$i];?>" width="100" height="100" alt="<?php echo $this->strFic[$i];?>" />
<?php
}
$i++;
}
}
/*!
* Affichage des numéros des pages
*
* \param $intPage Numéro de la page en cours
* \param $nbMax Nombre d'images maximun à afficher par page
*
*/
public function afficheNumerosPages($intPage, $lien, $nbMax, $couleurLien, $couleurNonLien, $couleurTexte){
$nbTotal = count($this->strFic);
$nb_pages = ceil($nbTotal / $nbMax);
$i = 1;
$debut = 0;
// Si il y a plusieurs pages
if ($nbTotal > $nbMax) {
// On affiche 5 lien autour du lien de la page actuelle
$min = $intPage - 5;
$max = $intPage + 5;
if ($min < 1) {
$min = 1;
}
if ($max >= floor($nb_pages)) {
$max = floor($nb_pages) - 1;
}
$debut = ($min - 1) * $nbMax;
if ($min > 1) {
// On affiche "premiere page"
$this->_afficheLienPage($lien, $intPage, 1, 0, $couleurLien, $couleurNonLien, $couleurTexte, "debut");
}
// Page précédente
if ($intPage > 1) {
$intPagePrec = $intPage;
$numLienPrec = $intPagePrec - 1;
$debutPagePrec = $intPage * $nbMax;
$this->_afficheLienPage($lien, $intPagePrec, $numLienPrec, $debutPagePrec, $couleurLien, $couleurNonLien, $couleurTexte, "Page précédente");
}
?>
<span class="<?php echo $couleurTexte?>"> - </span>
<?php
for ($num_lien=$min;$num_lien<=$max+1;$num_lien++) {
$this->_afficheLienPage($lien, $intPage, $num_lien, $debut, $couleurLien, $couleurNonLien, $couleurTexte);
// debut
$debut = $debut + $nbMax;
} // fin for
$dernier = floor($nb_pages) - 1;
if ($intPage <= $dernier) {
// Page suivante
$intPageSuiv = $intPage;
$numLienSuiv = $intPageSuiv + 1;
$debutPageSuiv = $intPage * $nbMax;
$this->_afficheLienPage($lien, $intPageSuiv, $numLienSuiv, $debutPageSuiv, $couleurLien, $couleurNonLien, $couleurTexte, "Page suivante");
}
if ($max < $dernier) {
// On affiche "derniere page"
$numLienFin = floor($nb_pages);
$debutPourLienFin = ($numLienFin - 1) * $nbMax;
$this->_afficheLienPage($lien, $intPage, $numLienFin, $debutPourLienFin, $couleurLien, $couleurNonLien, $couleurTexte, "fin");
}
}
}
// ************************
// * Interface privée *
// ************************
/*!
* Création d'un tableau trié contenant tous les fichiers du répertoire
*
* \param $tabExt Tableau des extensions autorisées
*
*/
private function _creeTableauFichiers(){
$dossier = opendir($this->strRep);
$this->strFic = array();
while ($fichier = readdir($dossier)) {
if (in_array($this->getExtension($fichier), $this->tabExt)){
array_push($this->strFic, $fichier);
}
}
sort($this->strFic);
}
/*!
* Affichage d'un lien de page
*
* \param $intPage Numéro de la page en cours (1 par défaut)
* \param $num_lien Numéro du lien
* \param $debut Début de la numérotation
* \param $couleurLien Style des liens
* \param $couleutNonLien Style du texte du numero de la page en cours
* \param $couleurTexte Couleur du texte (en dehors des numeros)
* \param $texte Texte du lien
*/
private function _afficheLienPage($lien, $intPage, $num_lien, $debut, $couleurLien, $couleurNonLien, $couleurTexte, $texte=""){
if (strstr($lien, "?")){
$sep = "&";
} else {
$sep = "?";
}
if ($texte != "") {
// Lien de debut ou lien de fin
if ($texte == "debut") {
$title = "Allez au début";
$texte = "<< ";
} else if ($texte == "fin") {
$title = "Allez à la fin";
$texte = " >>";
} else if ($texte == "Page suivante") {
$title = "Allez à la page suivante";
$texte = " >";
} else if ($texte == "Page précédente") {
$title = "Allez à la page précédente";
$texte = "< ";
}
?>
<a class="<?php echo $couleurLien?>" href="<?php echo $lien . $sep;?>deb=<?php echo $debut?>" title="<?php echo $title?>"><?php echo $texte?></a>
<?php
} else {
$title = "Allez à la page " . $num_lien;
if ($intPage != $num_lien) {
?>
<a class="<?php echo $couleurLien?>" href="<?php echo $lien . $sep;?>deb=<?php echo $debut?>" title="<?php echo $title?>"><?php echo $num_lien;?></a>
<span class="<?php echo $couleurTexte?>"> - </span>
<?php
} else {
?>
<span class="<?php echo $couleurNonLien?>"><?php echo $num_lien; ?></span>
<span class="<?php echo $couleurTexte; ?>"> - </span>
<?php
}
}
}
}
?>
Conclusion
Vous pouvez bien sûr modifier le nombre de liens à afficher au maximum (ici c'est 10 i.e 5+5) et la taille de vos images (ici 100 par 100).
Attention, le fichier index.php ne contient pas d'entête HTML, ce sera à vous de l'ajouter (je ne l'ai pas mise pour que ça soit plus facilement intégrable dans une page existante : il n'y aura qu'à faire un include ;-))
Historique
- 01 août 2006 16:26:54 :
- Suppression de 2 lignes de commentaires superflus...
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
image aleatoire ... sans base de donnée [ par sana72 ]
Bonjour,voile, je dois recharger des images tous les x tempsmes images sont stocké dans un repertoire qui porte le nom du thême et dans ce repertoire,
Listage repertoire page [ par Eliays ]
Bonjour voici mon code : <?$path = ".";$dh = opendir($path);$i=1;while (($file = readdir($dh)) !== false) { if($file != "." && $file !=
besoin d'aide stocker afficher image d'un repertoire [ par MalikArts ]
bonjour à tous,je suis débutante en php, je travail sur un exercice qui consite à mettre à jour une actualite via un formulaireje n'arrive pas a récup
Upload image [ par houssam88 ]
salut a tousbon voila e rencontre un petit problème dans l'upload des images, pas tou a fait concernant l'upload (celui ci marche bien) mai j'aimerai
upload image et redimention (changer nom du fichier enregistré) [ par mies07 ]
Bonjour,Je n'y connais pas grand chose en PHP et j'ai récupéré un script pour uploader des images et les redimensionner. Ce script est très bien mais
Envoyer une image du presse papier au php... [ par 666merlin ]
Bonjour à tous,Voici ce que je cherche à faire : M'occupant d'un service technique, j'ai souvent besoin de demander à des utilisateurs de m'envoyer tr
modif script d'upload [ par foxprox ]
bonjour j'utilise un script d'upload d'image qui intègre un système de recadragescript trouvé à cette adresse voir <a href="http://www.webmotionuk.co
Vérifier si une photo est reliée à une annonce ou non [ par ines57 ]
Bonjour,Toujours pour un portail immobilier, je dois faire une vérification pour savoir si lorsqu'une annonce a été ajoutée, une photo a été ajoutée a
un probleme [ par cheikh626 ]
j'ai une base avec mysql j' utilise PhP j'une table "telephone" qui a commes des qttributs les champs suivants: mqraue,prix,image. imqge indique le c
Upload d'image et copie dans champ d'un formulaire [ par golant ]
Bonsoir,Novice en PHP, je me retrouve actuellement face à un problème liés à l'Upload d'image sur mon serveur et sauvegarde de l'URL dans une bdd. Je
|
Derniers Blogs
TECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURSTECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURS par ROMELARD Fabrice
Animé par: Laurent Cotton Le développement dans SharePoint 2010 passe par plusieurs axes qui seront évoqués dans cette session, mais plus particulièrement les développements simples lié au besoin Business Business Connectivity Services Ce BCS es...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion
Forum
RE : IMPORT CSVRE : IMPORT CSV par ykhider
Cliquez pour lire la suite par ykhider
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|