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
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|