Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Annonce
ATTENTION
- Prenez le temps de rechercher si quelqu'un n'a pas déjà proposé une solution à votre problème. Sur le forum français et sur le wiki
- Pensez à mettre à jour votre version de Cms Made Simple. Nous ne faisons de support que sur LA dernière version de CmsMadeSimple.
- Renseignez impérativement le formulaire de nouveau message de manière la plus complète que possible. Ces informations demandées nous permettent de mieux vous aider
- Ajoutez [Résolu] au début du titre de votre 1er message lorsqu'une solution a été trouvée.
Pages : 1
Discussion fermée
#1 30/04/2012 10:32:56
- Celtic MAn
- Membre

- Lieu : Le Mans
- Inscription : 30/04/2012
- Messages : 72
[Résolu] Balise utilisateur pour lister les éléments d'un répertoire
#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: #1.10.3
#~ Url du site :
#~ Hébergeur / Soft : OVH/MAMP
#~ Informations Système :
#~ OS : Mac Lion
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~
Bonjour,
je souhaite afficher le contenu d'un répertoire, pour le moment ça fonctionne mais j'aimerai "pousser" un peu plus loin, en effet pour le moment je l'utilise de la manière suivante : {fichiers}.
[== PHP ==]
/* repertoire du dossier */
$rep = "uploads/telechargements/test/";
$dir = opendir($rep);
while ($f = readdir($dir))
{
if(is_file($rep.$f))
{
$tab_dir[] = $f;
}
}
/* on trie le tableau obtenu */
natcasesort($tab_dir);
echo '<div align="center" style="background-image: url(./uploads/telechargements/icones/download.png); background-position: 15px -10px; background-repeat: no-repeat; font-size: smaller; width:270px ; margin-left: 0px; padding:2px ; border-left:1px solid #FFFFFF ; border-right:1px solid #FFFFFF ; border-bottom:1px solid #FFFFFF ; border-top:1px solid #FFFFFF; height:72px; margin-top:-78px;">';
echo '<ul style="line-height:0px;">';
/* on affiche chaque element */
foreach($tab_dir as $elem)
{
if (preg_match("#.pdf$#", $elem)) {
$icon="Pdf.png";
} elseif (preg_match("#.xlsx$#", $elem)) {
$icon="Excel.png";
} elseif (preg_match("#.xls$#", $elem)) {
$icon="Excel.png";
} elseif (preg_match("#.docx$#", $elem)) {
$icon="Word.png";
} elseif (preg_match("#.doc$#", $elem)) {
$icon="Word.png";
} elseif (preg_match("#.pptx$#", $elem)) {
$icon="PowerPoint.png";
} elseif (preg_match("#.ppt$#", $elem)) {
$icon="PowerPoint.png";
} elseif (preg_match("#.ppsx$#", $elem)) {
$icon="PowerPoint.png";
} elseif (preg_match("#.pps$#", $elem)) {
$icon="PowerPoint.png";
} elseif (preg_match("#.zip$#", $elem)) {
$icon="Zip.png";
}else {
$icon="inconnu.png";
}
echo '<div align="center" style="text-align:left; margin-left:50px;">
<li style="list-style-type:none;">
<a href="uploads/telechargements/test//'.$elem.'"><img src="./uploads/telechargements/icones/'.$icon.'" title="'.pathinfo($elem,PATHINFO_FILENAME).'"></a>
<a href="uploads/telechargements/test//'.$elem.'" title="'.pathinfo($elem,PATHINFO_FILENAME).'">'.pathinfo($elem,PATHINFO_FILENAME).'</a>
</li><br/></div>';
}
echo'</div>';Je voudrais améliorer le code pour lister les éléments d'un dossier passé en paramètre de la façon suivante : {fichiers name='test'}
Mais je n'y arrive il ne m'affiche rien pour le moment.
[== PHP ==]
$rep = "uploads/telechargements/";
$dir = getenv("DOCUMENT_ROOT").$rep.$params['name'];
$dh = opendir($dir);
$i=0;
while ( $file = readdir($dh) )
{
echo 'while 1';
// enleve les fichiers . et ..
if ($file != '.' && $file != '..')
{
echo 'data';
// on passe les datas dans un tableau
$ListFiles[$i]=$file;
$i++;
}
}
closedir($dh);
// tri par ordre decroissant
if(count($ListFiles)!=0)
{
if($list_tri == 'DESC')
{
rsort($ListFiles);
}
else
{
sort($ListFiles);
}
}Même cette portion de code ne m'affiche rien.
Merci d'avance
Dernière modification par Celtic MAn (30/04/2012 14:23:31)
![]()
Hors ligne
#2 30/04/2012 11:44:56
Re : [Résolu] Balise utilisateur pour lister les éléments d'un répertoire
ça m'a l'air pas trop mal pourtant
$dir = getenv("DOCUMENT_ROOT").$rep.$params['name'];je préfère le code suivant
$config = cmsms()->getConfig();
$dir = $config['root_path']."/uploads/telechargements/".$params['name'];
echo $dir;
return;twitter - Chez moi - Astuces & Tuto cmsms - Wiki CmsMadeSimple
Mes modules :
» Comptabilisez les clics sur vos liens
» Petites annonces immobilières
» Moteur de chat/discussion/shoutbox full Ajax
» Générez automatiquement les miniatures de site web
» Laissez vos visiteurs uploader des images ou fichiers sur votre site
Hors ligne
#3 30/04/2012 12:16:10
- Celtic MAn
- Membre

- Lieu : Le Mans
- Inscription : 30/04/2012
- Messages : 72
Re : [Résolu] Balise utilisateur pour lister les éléments d'un répertoire
Merci pour ta réponse, effectivement avec ton code ça passe mieux.
Pour mon deuxième exemple ça fonctionne, il liste bien les fichiers du répertoire que je passe en paramètre. Par contre quand je veux "l'adapter" à mon premier code...
[== PHP ==]
$config = cmsms()->getConfig();
$dir = $config['root_path']."/uploads/telechargements/".$params['name'];
$dh = opendir($dir);
/* pas de moyen de trier directement les fichiers avec readdir(), il faut provisoirement stocker le résultat de readdir() dans un tableau */
while ($f = readdir($dh))
{
if(is_file($dh.$f))
{
$tab_dir[] = $f;
}
}
/* on trie le tableau obtenu */
natcasesort($tab_dir);
/* Pour affichier un cadre */
echo '<div align="center" style="background-image: url(./fichiers/icone/download.png); background-position: 15px -10px; background-repeat: no-repeat; font-size: smaller; width:270px ; margin-left: 0px; padding:2px ; border-left:1px solid #FFFFFF ; border-right:1px solid #FFFFFF ; border-bottom:1px solid #FFFFFF ; border-top:1px solid #FFFFFF; height:72px; margin-top:-78px;">';
echo '<ul style="line-height:0px;">';
/* on affiche chaque element */
foreach($tab_dir as $elem)
{
if (preg_match("#.pdf$#", $elem)) {
$icon="Pdf.png";
} elseif (preg_match("#.xlsx$#", $elem)) {
$icon="Excel.png";
} elseif (preg_match("#.xls$#", $elem)) {
$icon="Excel.png";
} elseif (preg_match("#.docx$#", $elem)) {
$icon="Word.png";
} elseif (preg_match("#.doc$#", $elem)) {
$icon="Word.png";
} elseif (preg_match("#.pptx$#", $elem)) {
$icon="PowerPoint.png";
} elseif (preg_match("#.ppt$#", $elem)) {
$icon="PowerPoint.png";
} elseif (preg_match("#.ppsx$#", $elem)) {
$icon="PowerPoint.png";
} elseif (preg_match("#.pps$#", $elem)) {
$icon="PowerPoint.png";
} elseif (preg_match("#.zip$#", $elem)) {
$icon="Zip.png";
}else {
$icon="inconnu.png";
}
echo '<div align="center" style="text-align:left; margin-left:50px;"><li style="list-style-type:none;"><a href="uploads/telechargements/LAPPUI72//'.$elem.'"><img src="fichiers/icone/'.$icon.'" title="'.pathinfo($elem,PATHINFO_FILENAME).'"></a><a href="uploads/telechargements/LAPPUI72//'.$elem.'" title="'.pathinfo($elem,PATHINFO_FILENAME).'">'.pathinfo($elem,PATHINFO_FILENAME).'</a></li><br/></div>';
}
echo'</div>';J'ai donc deux soucis, à mon avis le premier ce situe ici :
[== PHP ==]
while ($f = readdir($dh))
{
if(is_file($dh.$f))
{
$tab_dir[] = $f;
}
}Je pense qu'il n'arrive pas à remplir le tableau.
Et ma deuxième question :
[== PHP ==]
echo '<div align="center" style="text-align:left; margin-left:50px;"><li style="list-style-type:none;"><a href="uploads/telechargements/LAPPUI72//'.$elem.'"><img src="fichiers/icone/'.$icon.'" title="'.pathinfo($elem,PATHINFO_FILENAME).'"></a><a href="uploads/telechargements/LAPPUI72//'.$elem.'" title="'.pathinfo($elem,PATHINFO_FILENAME).'">'.pathinfo($elem,PATHINFO_FILENAME).'</a></li><br/></div>';Comment j'indique le lien du fichier ?
![]()
Hors ligne
#4 30/04/2012 12:34:52
- Celtic MAn
- Membre

- Lieu : Le Mans
- Inscription : 30/04/2012
- Messages : 72
Re : [Résolu] Balise utilisateur pour lister les éléments d'un répertoire
J'ai réglé le premier problème :
j'ai fait un mixte des deux codes :
[== PHP ==]
$config = cmsms()->getConfig();
$dir = $config['root_path']."/uploads/telechargements/".$params['name'];
$dh = opendir($dir);
echo '<div align="center" style="background-image: url(./fichiers/icone/download.png); background-position: 15px -10px; background-repeat: no-repeat; font-size: smaller; width:270px ; margin-left: 0px; padding:2px ; border-left:1px solid #FFFFFF ; border-right:1px solid #FFFFFF ; border-bottom:1px solid #FFFFFF ; border-top:1px solid #FFFFFF; height:72px; margin-top:-78px;">';
echo '<ul style="line-height:0px;">';
$i=0;
while ( $file = readdir($dh) )
{
// enleve les fichiers . et ..
if ($file != '.' && $file != '..')
{
// on passe les datas dans un tableau
$ListFiles[$i]=$file;
$i++;
}
}
closedir($dh);
// tri par ordre decroissant
if(count($ListFiles)!=0)
{
if($list_tri == 'DESC')
{
rsort($ListFiles);
}
else
{
sort($ListFiles);
}
}
// affiche les fichiers par ordre alphabetique decroissant
$i=0;
while ( $i < count($ListFiles))
{
foreach($ListFiles as $elem)
{
if (preg_match("#.pdf$#", $elem)) {
$icon="Pdf.png";
} elseif (preg_match("#.xlsx$#", $elem)) {
$icon="Excel.png";
} elseif (preg_match("#.xls$#", $elem)) {
$icon="Excel.png";
} elseif (preg_match("#.docx$#", $elem)) {
$icon="Word.png";
} elseif (preg_match("#.doc$#", $elem)) {
$icon="Word.png";
} elseif (preg_match("#.pptx$#", $elem)) {
$icon="PowerPoint.png";
} elseif (preg_match("#.ppt$#", $elem)) {
$icon="PowerPoint.png";
} elseif (preg_match("#.ppsx$#", $elem)) {
$icon="PowerPoint.png";
} elseif (preg_match("#.pps$#", $elem)) {
$icon="PowerPoint.png";
} elseif (preg_match("#.zip$#", $elem)) {
$icon="Zip.png";
}else {
$icon="inconnu.png";
}
echo '<div align="center" style="text-align:left; margin-left:50px;"><li style="list-style-type:none;"><a href="uploads/telechargements/LAPPUI72//'.$elem.'"><img src="fichiers/icone/'.$icon.'" title="'.pathinfo($elem,PATHINFO_FILENAME).'"></a><a href="uploads/telechargements/LAPPUI72//'.$elem.'" title="'.pathinfo($elem,PATHINFO_FILENAME).'">'.pathinfo($elem,PATHINFO_FILENAME).'</a></li><br/></div>';
$i++;
}
}
echo'</div>';Il me manque plus qu'a trouvé comment lui indiqué le lien du fichier : <a href="...//'.$elem.'">
![]()
Hors ligne
#5 30/04/2012 12:57:26
Re : [Résolu] Balise utilisateur pour lister les éléments d'un répertoire
utilise
$config = cmsms()->getConfig();
$config['root_url'].'uploads/telechargements/'.$elem
twitter - Chez moi - Astuces & Tuto cmsms - Wiki CmsMadeSimple
Mes modules :
» Comptabilisez les clics sur vos liens
» Petites annonces immobilières
» Moteur de chat/discussion/shoutbox full Ajax
» Générez automatiquement les miniatures de site web
» Laissez vos visiteurs uploader des images ou fichiers sur votre site
Hors ligne
#6 30/04/2012 13:10:25
- Jean le Chauve
- Sa Seigneurie le Chauve, Comte du domaine .be

- Lieu : Bruxelles
- Inscription : 13/12/2007
- Messages : 3 401
- Site Web
Re : [Résolu] Balise utilisateur pour lister les éléments d'un répertoire
Pourquoi te fatiguer à insérer une icône avec img, alors que c'est faisable automatiquement en css
a[href$='.zip'], a[href$='.gzip'], a[href$='.rar'], a[href$='.7z'] {
background: url([[root_url]]/uploads/images/design/icones/zip.png) no-repeat left center;
padding-left: 20px;
line-height: 16px;
}Tu peux ainsi chercher n'importe qu'elle icône en rapport à son extension sans passer par une regex ![]()
Compatible IE7+ et tous les autres navigateurs.
Dernière modification par Jean le Chauve (30/04/2012 13:25:22)
Soutien les projets des jeunes talents et jeunes entrepreneurs
Exposition itinérante et ventes aux enchères pour les jeunes artistes plasticiens et stylistes
Structure de soutien pour, avec et par les jeunes de 15 à 30 ans
Structure de soutien pour jeunes jusque 18 ans
Campagne de sensibilisation des transports en commun
Booking artistes francophones
Plugins : ponctuation insécable | obfuscation automatique d'email
Hors ligne
#7 30/04/2012 13:59:17
- Celtic MAn
- Membre

- Lieu : Le Mans
- Inscription : 30/04/2012
- Messages : 72
Re : [Résolu] Balise utilisateur pour lister les éléments d'un répertoire
@Jean le Chauve : merci pour l'astuce je n'y avais pas pensé
@bess : merci pour ton aide, mais je n'arrive pas encore à trouvé la bonne "syntaxe" :
<a href=""$config['root_url'].'uploads/telechargements/'.$elem"">
<a href=<a href="$config['root_url'].'uploads/telechargements/'.$elem">
...
Entre la variable, les "" et les '' je vous avoue que je m'y perd un peu ![]()
Edit : syntaxe ok : <a href="/uploads/telechargements//'.$params['name'].'//'.$elem.'">
Merci pour votre aide.
Dernière modification par Celtic MAn (30/04/2012 14:22:51)
![]()
Hors ligne
#8 30/04/2012 14:47:29
- Jean le Chauve
- Sa Seigneurie le Chauve, Comte du domaine .be

- Lieu : Bruxelles
- Inscription : 13/12/2007
- Messages : 3 401
- Site Web
Re : [Résolu] Balise utilisateur pour lister les éléments d'un répertoire
Quand les quotes t'embêtent, tu as aussi cette astuce : la syntaxe heredoc : http://www.manuelphp.com/php/language.t … eredoc.php
Soutien les projets des jeunes talents et jeunes entrepreneurs
Exposition itinérante et ventes aux enchères pour les jeunes artistes plasticiens et stylistes
Structure de soutien pour, avec et par les jeunes de 15 à 30 ans
Structure de soutien pour jeunes jusque 18 ans
Campagne de sensibilisation des transports en commun
Booking artistes francophones
Plugins : ponctuation insécable | obfuscation automatique d'email
Hors ligne
Pages : 1
Discussion fermée