Lister les images d'un dossier sur plusieurs pages

Ce forum vous servira à trouver de l'aide uniquement en ce qui concerne le développement d'un de vos MODs, ou l'adaptation d'un MOD phpBB2 pour phpBB3.

Modérateur: Equipe

Lister les images d'un dossier sur plusieurs pages

Messagepar Steph » 11 Juin 2009 à 10:44

Salut à tous, je cherche a lister les images contenu dans un dossier !

Pour l'exemple disons qu'il y en a 100 et je souhaiterai des pages avec 10 images

Savez-vous comment je pourrai faire cela ?

Je sais déjà créer une page conservant les sessions et le style mais je ne sais pas comment afficher tous ça dans le template
Avatar de l’utilisateur
Steph
Resp. des modérateurs
Resp. des modérateurs
 
Messages: 6704
Inscription: 29 Déc 2008 à 15:48
Localisation: Sur le net

Re: Lister les images d'un dossier sur plusieurs pages

Messagepar Dr DLP » 12 Juin 2009 à 22:11

Meuh.

Ok, voici la base:
1) Lister toutes les images et leur attribuer des ids (IE pour ce cas un index numérique)
2) Pour chaque page sélectionner les images de la tranche (10*page)+1 à 10*(page+1)
3) Les afficher

Dis moi quelles étapes te posent problèmes.

Pour mettre les fichiers de ton répertoire en tableau:
Code: Tout sélectionner
$images_array = array();
$images_counter = 0;
if ($handle = opendir('/chemin/vers/fichiers'))
{
while (false !== ($file = readdir($handle)))
{
$images_counter++;
$images_array[$images_counter] = $file;
}
}

Idéalement le résultat est stocké plutôt que de répéter le code.
Avatar de l’utilisateur
Dr DLP
Floodeur universel
Floodeur universel
 
Messages: 8411
Inscription: 05 Mar 2003 à 22:49
Localisation: Var ( 83 )

Re: Lister les images d'un dossier sur plusieurs pages

Messagepar Steph » 12 Juin 2009 à 22:24

Stocké les images oui mais il faudrai garder le nom d'origine et les afficher ensuite dans la partie html.

Pour en afficher une je n'ai pas de problème mais j'ai essayer d'en afficher plusieurs avec une boucle mais la cela ne fonctionne plus sauf si je passe par une page que j'ai nommer par exemple test.php sans utiliser les templates mais en lien direct.

La ou je bloque c'est comment faire pour afficher ces images ainsi trouver dans le template en aillant une pagination
Avatar de l’utilisateur
Steph
Resp. des modérateurs
Resp. des modérateurs
 
Messages: 6704
Inscription: 29 Déc 2008 à 15:48
Localisation: Sur le net

Re: Lister les images d'un dossier sur plusieurs pages

Messagepar Dr DLP » 12 Juin 2009 à 22:30

Il te manque le plus simple dans ce cas: documentation-phpbb3/sujet154167.html
Partie III-c Les blocs répétitifs.
Avatar de l’utilisateur
Dr DLP
Floodeur universel
Floodeur universel
 
Messages: 8411
Inscription: 05 Mar 2003 à 22:49
Localisation: Var ( 83 )

Re: Lister les images d'un dossier sur plusieurs pages

Messagepar Steph » 12 Juin 2009 à 22:42

Et ben mince alors j'avais trouver ce lien :shock:

Merci Dr DLP ça va m'aider je pense, je vais faire des essais et au besoin j'edit

J'espère juste que je vais y arriver car je n'utilise pas de base de donnée pour les images
Avatar de l’utilisateur
Steph
Resp. des modérateurs
Resp. des modérateurs
 
Messages: 6704
Inscription: 29 Déc 2008 à 15:48
Localisation: Sur le net

Re: Lister les images d'un dossier sur plusieurs pages

Messagepar Dr DLP » 12 Juin 2009 à 22:57

Le tableau donné plus haut remplace la bdd.
Le faire sous cette forme donne un code plus lent mais qui fonctionne seul, à choisir.
Plus le nombres d'images dans ton répertoire augmente, plus l'interêt de la bdd augmente. Note que la différence est surement minime.

Pour faire l'équivalent du php au centre de docs, ça donnerait ça:
Code: Tout sélectionner
$range_min = ($page 10) + 1;
$range_max = (($page 1) * 10) + 1;
for(
$i $range_min$i $range_max$i++)
{
   
$template->assign_block_vars('row', array(
      
'IMAGE'    => $images_array[$i]

Où $page est le numéro de ta page.
Le calcul est fait pour que comme tu indiques, 10 images soient affichée par page.

Avec dans ton template:
Code: Tout sélectionner
<!-- BEGIN row -->
<img src="chemin vers le dossier des images/{row.IMAGE}"><br />
<!-- END row -->

Il y a de la mise en page à faire bien évidemment.

En toute logique, tu vas récupérer cette variable $page par:
Code: Tout sélectionner
$page = (isset($_GET['page'])) ? intval($_GET['page']) : 0;

Puisque ta pagination va ressembler à:
Code: Tout sélectionner
<a href="monfichier.php?page=0">Page1</a>
<a href="monfichier.php?page=1">Page2</a>
-----
<a href="monfichier.php?page=99">Page100</a>


Mais générer une pagination est un souci plus complexe, qu'on verra quand le reste quand sera fait :)
Dernière édition par Dr DLP le 13 Juin 2009 à 15:38, édité 1 fois.
Avatar de l’utilisateur
Dr DLP
Floodeur universel
Floodeur universel
 
Messages: 8411
Inscription: 05 Mar 2003 à 22:49
Localisation: Var ( 83 )

Re: Lister les images d'un dossier sur plusieurs pages

Messagepar Steph » 12 Juin 2009 à 23:02

Ok je vais déjà adapter ça et faire des essais

Merci
Avatar de l’utilisateur
Steph
Resp. des modérateurs
Resp. des modérateurs
 
Messages: 6704
Inscription: 29 Déc 2008 à 15:48
Localisation: Sur le net

Re: Lister les images d'un dossier sur plusieurs pages

Messagepar ErnadoO » 13 Juin 2009 à 15:33

Plop le doc :D

Dr DLP a écrit:
Code: Tout sélectionner
$images_array = array();
$images_counter = 0;
if ($handle = opendir('/chemin/vers/fichiers'))
{
while (false !== ($file = readdir($handle)))
{
$images_counter++;
$images_array[$images_counter] = $file;
}
}

Pour avoir réaliser ce que souhaite faire Steph (ici) je compléterais ton code cette façon:
Code: Tout sélectionner
    $images_array = array();
    $images_counter = 0;
    if ($handle = opendir('/chemin/vers/fichiers'))
    {
        while (false !== ($file = readdir($handle)))
        {
            if ($file != '.' && $file != '..'  && !preg_match('/^.*?\.db$/', $file))
            {
                $images_counter++;
                $images_array[$images_counter] = $file;
            }
        }
    } 
Ou mieux, si il est sous php5, utiliser carrément scandir() qui te retourne directement un tableau :D
ErnadoO
 

Re: Lister les images d'un dossier sur plusieurs pages

Messagepar Dr DLP » 13 Juin 2009 à 15:41

Salut ErnadoO :) Juste pour être contrariant et avoir le dernier mot, je préfère
Code: Tout sélectionner
if(eregi("^[a-z0-9]*(\.(gif|jpe?g|png|bmp))$",$file))  

qui ne se contentera pas de supprimer le thumbs et les retours dossiers :mrgreen:
Dernière édition par Dr DLP le 13 Juin 2009 à 15:45, édité 1 fois.
Avatar de l’utilisateur
Dr DLP
Floodeur universel
Floodeur universel
 
Messages: 8411
Inscription: 05 Mar 2003 à 22:49
Localisation: Var ( 83 )

Re: Lister les images d'un dossier sur plusieurs pages

Messagepar Steph » 13 Juin 2009 à 15:44

Merci ErnadoO, c'est un peu a la manière de ton site que je souhaite afficher mes images mais disposer différemment je vais m'inspirer de tous ça !

Restera ensuite la pagination!

Merci

PS je suis en PHP Version 4.4.9
Avatar de l’utilisateur
Steph
Resp. des modérateurs
Resp. des modérateurs
 
Messages: 6704
Inscription: 29 Déc 2008 à 15:48
Localisation: Sur le net

Re: Lister les images d'un dossier sur plusieurs pages

Messagepar ErnadoO » 13 Juin 2009 à 16:14

Dr DLP a écrit:Salut ErnadoO :) Juste pour être contrariant et avoir le dernier mot, je préfère
Code: Tout sélectionner
if(eregi("^[a-z0-9]*(\.(gif|jpe?g|png|bmp))$",$file))  

qui ne se contentera pas de supprimer le thumbs et les retours dossiers :mrgreen:

nia nia nia :mrgreen:
ErnadoO
 

Re: Lister les images d'un dossier sur plusieurs pages

Messagepar Steph » 01 Juil 2009 à 21:07

Salut, voila ce que j'ai fait avec le peu de temps que j'ai pu y consacrer et en m'inspirant de vos précédents posts

Code: Tout sélectionner
// Nombre d'images par page souhaité
$nbimages 10;

// Dossier ou sont présent les images
$dossier "images";

$page = (isset($_GET['page'])) ? intval($_GET['page']) : 0;
        
    
$images_array = array();
    
$images_counter 0;
    if (
$handle opendir("$dossier"))
    {
        while (
false !== ($file readdir($handle)))
        {
            if (
$file != '.' && $file != '..'  && !preg_match('/^.*?\.db$/'$file))
            {
                
$images_counter++;
                
$images_array[$images_counter] = $file;
            }
        }
    }

$range_min = ($page $nbimages) + 1;
$range_max = (($page 1) * $nbimages) + 1;
for(
$i $range_min$i $range_max$i++)
{
   
$template->assign_block_vars('row', array(
      
'IMAGE'    => $images_array[$i]));


les images s'affichent mais je n'y comprend rien pour la pagination !
Dernière édition par Steph le 25 Oct 2009 à 01:22, édité 1 fois.
Avatar de l’utilisateur
Steph
Resp. des modérateurs
Resp. des modérateurs
 
Messages: 6704
Inscription: 29 Déc 2008 à 15:48
Localisation: Sur le net

Re: Lister les images d'un dossier sur plusieurs pages

Messagepar Steph » 25 Oct 2009 à 01:21

Salut, je vient de retrouver mon sujet pour lister des images sur plusieurs pages mais je n'ai toujours pas de solution pour la pagination !

J'avais bien trouver sur le net plusieurs code mais pour l'intégrer à phpbb c'est une autre histoire à cause de l'affichage dans les templates :?

Je suis sous PHP Version 5 !

Le code donner dans mon précédent post fonctionne coupler avec le code suivant dans le template mais le souci est que j'ai plus de 300 images actuellement, donc ça fait une interminable et longue page

Code: Tout sélectionner
<!-- BEGIN row -->
<
img src="chemin vers le dossier des images/{row.IMAGE}"><br />
<!-- 
END row --> 


Si une personne à une solution je l'en remercie par avance :wink:

@+ :wink:
Avatar de l’utilisateur
Steph
Resp. des modérateurs
Resp. des modérateurs
 
Messages: 6704
Inscription: 29 Déc 2008 à 15:48
Localisation: Sur le net


Retourner vers Aide au développement

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités

Partenaires : phpBBHacks.com • phpBB-Seo.com • EzCom-fr.com • phpBB3 Styles • phpBB podpora • phpBB Portugal    Liens : Net Avenir • PromoBenef • Ticket Gagnant