Page 1 sur 1

Lister fichier d'un dossier avec icone

Posté : 15 juin 2014, 12:26
par opusdayin
Bonjour a tous,

je débute avec ce langage de programmation

je sollicite donc votre aide pour la modification de ce script php.

ce script fonctionne mais je souhaiterais pouvoir lui apporter des modifications.

cacher l'extension des fichiers afficher.
ouvrir les fichiers directement avec leur application respective.
ouvrir les fichier qui contienne des accents dans leur titre

d'avance merci pour l'aide que vous pourriez m'apporter

Voici le script

Code : Tout sélectionner

<?php function Geticone($isdir, $fichier) { if($isdir) { $img = 'dossier.png'; } else { $extension= strtolower(substr( strrchr( $fichier, "." ), 1 )); if ($extension) { $img = $extension.'.png'; } else { $img = 'xls.png'; } } return $img; } ?> <?php $dir_nom = 'Commercial'; // dossier listé (pour lister le répertoir courant : $dir_nom = '.' --> ('point') $dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); // on ouvre le contenu du dossier courant $fichier= array(); // on déclare le tableau contenant le nom des fichiers while($element = readdir($dir)) { if($element != '.') { if (!is_dir($dir_nom.'/'.$element)) {$fichier[] = $element;} } } closedir($dir); if(!empty($fichier)){ sort($fichier);// pour le tri croissant, rsort() pour le tri décroissant echo "\t\t<ul>\n"; foreach($fichier as $lien) { echo "\t\t\t<br><img style='vertical-align: text-bottom'src='Images/".Geticone(0,"$dir_nom/$lien")."'/>&nbsp;&nbsp; <a href=\"$dir_nom/$lien \">$lien</a>\n"; } echo "\t\t</ul>"; } ?>

Re: Lister fichier d'un dossier avec icone

Posté : 15 juin 2014, 17:10
par Elie
Voila la fonction qu'il te manque pour :
- Trouver l'extention
- Afficher le fichier sans l'extention

http://fr2.php.net/manual/fr/function.pathinfo.php

Ensuite, quand tu cliques sur un lien c'est l'ordinateur qui prend le relais sur ce qu'il se passe.
Tout ce que tu peux faire c'est forcer le téléchargement ou faire ouvrir le fichier par la personne.
Ensuite normalement les accents ne posent aucun problème.

Re: Lister fichier d'un dossier avec icone

Posté : 15 juin 2014, 18:05
par opusdayin
Merci pour ta réponse Elie

J'ai parcouru le lien que tu a inclut dans ta réponse, mais je doit reconnaitre que je patauge.
La fonction pathinfo doit elle remplacer opendir. #-o

En ce qui concerne les accents, si un de mes fichiers lister contient un accent le navigateur refuse de l'ouvrir.
Par contre ce même fichier, si je lui enlève l'accent, son ouverture est possible.

Peut tu m'orienter un peu plu

Re: Lister fichier d'un dossier avec icone

Posté : 15 juin 2014, 18:26
par Elie
Met plutot une majuscule aux mots après le premier dans tes fonctions : leNomDeMaFonction
Quand on utilise des <ul> on met des <li> a chaque ligne et pas des <br />
J'ai simplifié ta fonction getIcone
Encore une fois pour moi les accents ne changent rien.

Met ca en ligne et donne moi l'url
<?php

	function getIcone($fichier) {
		
		$pathinfo = pathinfo($fichier);
		$extention = $path_parts['extension'];
		
        $img = !empty($extention) ? $extension.'.png' : 'dossier.png';
	
	return 'Images/'.$img;

	}


	$dir_nom = 'Commercial'; // dossier listé (pour lister le répertoir courant : $dir_nom = '.'  --> ('point')
	$dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); // on ouvre le contenu du dossier courant
	$fichier = array(); // on déclare le tableau contenant le nom des fichiers
 
	while($element = readdir($dir)) {
	   if($element != '.') {
		  if (!is_dir($dir_nom.'/'.$element)) $fichier[] = $element;
	   }
	}

	closedir($dir);
	
	if(count($fichier) > 0){
	   sort($fichier);// pour le tri croissant, rsort() pour le tri décroissant
	   echo "\t\t<ul>\n";
		  foreach($fichier as $lien) {
			 echo "\t\t\t<li><img style='vertical-align: text-bottom'src='".getIcone($dir_nom."/".$lien)."'/>  <a href=\"".$dir_nom/$lien."\">".$lien."</a></li>\n";
		  }
	   echo "\t\t</ul>";
	 }
?>

Re: Lister fichier d'un dossier avec icone

Posté : 15 juin 2014, 18:29
par xTG
Ton problème d'accent est certainement lié à un problème d'encodage. :)
faq-tutoriels/encodage-utf-t245062.html

Re: Lister fichier d'un dossier avec icone

Posté : 15 juin 2014, 19:09
par opusdayin
Dorénavant je ferait attention au majuscule du nom de mes fonction, et a incrémenter toute les bonnes balise.
La modification que tu a apporter au script ne fonctionne pas

J'ai l'erreur suivante
Warning: Division by zero in C:\Documents and Settings\aze\Mes documents\ZMWSPortable\App\ZMWS\_web.zmwsc\index.php on line 32

Seul une page d'accueil est créer elle ne t'aidera pas a voir plu clair sur la problématique.

Amicalement

Re: Lister fichier d'un dossier avec icone

Posté : 15 juin 2014, 19:21
par Elie
Comme dit l'erreur, on ne peut pas diviser par 0
Donc regarde ce qu'il y a a la ligne 32.
Et pourquoi il veut diviser par un chiffre qui apparament il ne trouve pas.
Comme on a que la moitié de ton code, je ne sais pas ce qui j'ai fait qui a modifié cette fonction

Re: Lister fichier d'un dossier avec icone

Posté : 15 juin 2014, 19:22
par opusdayin
Merci xTG pour ton aide

il n'y a pas de problème d'affichage des accents dans ma page web.
Ces lorsque je clique sur le lien que le problème ce pose, le navigateur web me dit qu’il est impossible de trouver l'url.

Pour info j'utilise ZazouMiniWebServer et dans le fichier de configuration _config.zmwsc, j'ai défini comme MimeType pour php et html charset=UTF-8.

Je ne parvient pas a comprendre la problematique :priere:

Re: Lister fichier d'un dossier avec icone

Posté : 15 juin 2014, 19:28
par opusdayin
Comme dit l'erreur, on ne peut pas diviser par 0
Donc regarde ce qu'il y a a la ligne 32.
Et pourquoi il veut diviser par un chiffre qui apparament il ne trouve pas.
Comme on a que la moitié de ton code, je ne sais pas ce qui j'ai fait qui a modifié cette fonction
Tu a le code dans sont intégralité.
Et chez moi il fonctionne correctement.

Je te remet a dispo le script original

Code : Tout sélectionner

<?php function Geticone($isdir, $fichier) { if($isdir) { $img = 'dossier.png'; } else { $extension= strtolower(substr( strrchr( $fichier, "." ), 1 )); if ($extension) { $img = $extension.'.png'; } else { $img = 'xls.png'; } } return $img; } ?> <?php $dir_nom = 'Commercial'; // dossier listé (pour lister le répertoir courant : $dir_nom = '.' --> ('point') $dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); // on ouvre le contenu du dossier courant $fichier= array(); // on déclare le tableau contenant le nom des fichiers while($element = readdir($dir)) { if($element != '.') { if (!is_dir($dir_nom.'/'.$element)) {$fichier[] = $element;} } } closedir($dir); if(!empty($fichier)){ sort($fichier);// pour le tri croissant, rsort() pour le tri décroissant echo "\t\t<ul>\n"; foreach($fichier as $lien) { echo "\t\t\t<br><img style='vertical-align: text-bottom'src='Images/".Geticone(0,"$dir_nom/$lien")."'/>&nbsp;&nbsp; <a href=\"$dir_nom/$lien \">$lien</a>\n"; } echo "\t\t</ul>"; } ?>

Re: Lister fichier d'un dossier avec icone

Posté : 16 juin 2014, 15:00
par xTG
Merci xTG pour ton aide

il n'y a pas de problème d'affichage des accents dans ma page web.
Ces lorsque je clique sur le lien que le problème ce pose, le navigateur web me dit qu’il est impossible de trouver l'url.
Peux-tu nous coller l'un des liens générés qui te pose problème ?

Re: Lister fichier d'un dossier avec icone

Posté : 16 juin 2014, 21:00
par opusdayin
Le lien ci-dessous fonctionne correctement, le navigateur me propose bien d'ouvrir ou de télécharger le fichier.

<ul>
<br><img style='vertical-align: text-bottom'src='Images/xlsx.png'/>&nbsp;&nbsp;
<a href="Commercial/nouveaute.xlsx ">nouveaute.xlsx</a>


Par contre celui qui suit, me génère un problème Page Web introuvable HTTP 404

<br><img style='vertical-align: text-bottom'src='Images/xlsx.png'/>&nbsp;&nbsp;
<a href="Commercial/nouveauté.xlsx ">nouveauté.xlsx</a>
</ul>

Sous Mozilla 17.0.1 l'accent est remplacer par un losange noir avec un point d'interrogation
et sous ie8 l'accent est bien afficher mais il néanmoins impossible d'avoir accès au fichier.

Dans mon fichier config de mon serveur php j'ai defini comme encodage defcharset=UTF-8

Je vais tester certaine option qui sont dans les paramètres de excel mais je n'y croit pas trop.