rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

[PHP] Tri Extension

thepchou, le jeudi 14 juin 2007 à 10:35:27
J'ai un programme qui liste les fichiers et les dossiers. Mon programme est assez dynamique. Mais j'ai des consignes assez clair :

-> Afficher le nombre d'extension identique dans le dossier
ex: .txt = 5 ; .bmp = 7 ...

-> Je dois prendre les fichiers ayant la même extension et les afficher dans un tableau html à part de celui qui liste les dossiers.

-> Faire un lien d'extension, c'est à dire un lien .txt, lorsque je click dessus, il n'affiche que les fichiers .txt dans un tableau html.

Voici mon code qui liste les dossiers et fichiers

function addScheme($entry,$base,$type)
{
  $tab['name'] = $entry;
  $tab['type'] = filetype($base."/".$entry);
  $tab['date'] = filemtime($base."/".$entry);
  $tab['size'] = filesize($base."/".$entry);
  $tab['perms'] = fileperms($base."/".$entry);
  $tab['access'] = fileatime($base."/".$entry);
  $t = explode(".", $entry);
  $tab['ext'] = $t[count($t)-1];
  return $tab;
}

/* liste des dossiers */
function list_dir($base, $cur, $level=0)
{
  global $PHP_SELF, $BASE, $order, $asc;
  if ($dir = opendir($base)) {
    $tab = array();
    while($entry = readdir($dir))
	{
		if( is_dir($base."/".$entry) && !in_array($entry, array(".","..") ) )
		{
		$tab[] = addScheme($entry, $base, 'dir');
		}
    }
    /* tri */
    usort($tab,"cmp_name");
    foreach($tab as $elem)
	{
		$entry = $elem['name'];
		/* chemin relatif à la racine */
		$file = $base."/".$entry;
		/* marge gauche */
		for($i = 1 ; $i <= (4*$level) ; $i++)
		{
			echo " ";
		}
		/* l'entrée est-elle le dossier courant */
		if($file == $cur)
		{
			echo "<img src=\"dir-open.gif\" /> $entry<br />\n";
		} else
		{
			echo "<img src=\"dir-close.gif\" /> <a href=\"$PHP_SELF?dir=". rawurlencode($file) ."&order=$order&asc=$asc\">$entry</a><br />\n";
		}
		/* l'entrée est-elle dans la branche dont le dossier courant est la feuille */
		if(ereg($file."/",$cur."/"))
		{
			list_dir($file, $cur, $level+1);
		}
	}
    closedir($dir);
  }
}

/* liste des fichiers */
function list_file($cur)
{
global $PHP_SELF, $order, $asc, $order0;
  
	if ($dir = opendir($cur))
	{
		/* tableaux */
		$tab_dir = array();
		$tab_file = array();
		/* extraction */
		while($file = readdir($dir))
		{
			if(is_dir($cur."/".$file))
			{
				if( !in_array($file, array(".","..") ) )
				{
				  $tab_dir[] = addScheme($file, $cur, 'dir');
				}
			}else 
			{
				$tab_file[] = addScheme($file, $cur, 'file');
			}
		}
/* Contient encore plus de code, mais c'est inutile pour mon problème */

function assocExt($ext)
{
  $e = array(
    '' => "Unknown",
	'BAT' => "Batch file",
	'SYS' => "System File",
    'doc' => "Microsoft Word",
	'log' => "Log",
    'xls' => "Microsoft Excel",
    'ppt' => "Microsoft Power Point",
    'pdf' => "Adobe Acrobat",
    'zip' => "WinZip Archive",
    'txt' => "Document texte",
	'bmp' => "Bitmap",
    'gif' => "GIF Image",
    'jpg' => "JPEG Image",
    'png' => "PNG Image",
    'php' => "PHP Script",
    'php3' => "PHP Script",
    'htm' => "Web page",
    'html' => "Web page",
    'css' => "Cascading Style Sheet",
    'js' => "JavaScript"
  );
  if( in_array($ext, array_keys($e)) )
  {
    return $e[$ext];
  } else {
    return $e[''];
  }
}


Merci d'avance si vous arrivez à quelque chose !
Configuration: Windows XP
Firefox 2.0.0.4
Répondre à thepchou  Signaler ce message aux modérateurs Aller au dernier message

1


  • 2
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
thepchou, le jeudi 14 juin 2007 à 10:58:07
Entre temps, j'ai essayé de faire une fonction qui ressemble à
function assocExt($ext)
.
Le voici :

function sameExt($ext)
{
	$e = array(
		'BAT',
		'SYS',
		'doc',
		'log',
		'xls',
		'ppt',
		'pdf',
		'zip',
		'txt',
		'bmp',
		'gif',
		'jpg',
		'png',
		'php',
		'php3',
		'htm',
		'html',
		'css',
		'js'
		);
	if( in_array($ext, $e) )
	{
		return $e[$ext];
	}
}


Pour moi il y'a un hic, comment faire pour mettre ça dans la boucle qui liste les fichiers pour afficher le nombre d'extension identique ?
Le code entier m'a été fourni, je suis stagiaire et le php est un langage que je n'ai jamais utilisé auparavant...

Please help ! (=^_^=)
Répondre à thepchou

2


  • 2
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
thepchou, le jeudi 14 juin 2007 à 11:07:55
J'ai testé, et ça ne fait que retourner les extensions (d'ailleurs y'a des erreurs...).
Help ?
Répondre à thepchou

3


  • 3
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
thepchou, le jeudi 14 juin 2007 à 13:27:25
En cherchant sur la toile j'ai trouvé ma réponse.
En modifiant le code trouvé, j'ai réussi à faire quelque chose de super.

Même si personne a pu m'aider, je post ici le bout de code utile qui scan le contenu du dossier et affiche le nombre d'extensions présentent dans ce dernier.

function browse($dir, $pExtension)
{
    if($handle = opendir($dir))
    {
         while(false !== ($file = readdir($handle)))
        {
            $getExt = explode(".", $file);
            $countExt = count($getExt);
            $fExt = $countExt - 1;
            $myExt = $getExt[$fExt];
            
            if (($myExt == $pExtension) && ($file != ".") && ($file != ".."))
                {$files[] = $file;}
        }
    }
return $files;    
closedir($handle);
}

// Séparez les extensions par un espace.
$gExtension = "exe mp3 php zip doc txt BAT SYS log xls ppt pdf bmp gif jpg png php3 htm html css js";

$ExpExt = explode(" ", $gExtension);
sort($ExpExt);

foreach($ExpExt as $findExt)
{
	$getFile = @browse($dir, $findExt); /* N'oubliez pas de spécifier le chemin $dir (= ".") */
	$countFile = count($getFile);

	if($countFile != 0)                
	{ 
		echo "<b>Fichier(s) ".strtoupper($findExt)."</b> (".$countFile.")<br />";
		
		foreach($getFile as $myFile)
		{
			echo "- ".$myFile."<br />";
		}
		
		echo "<br>";
	}
}


Exemple d'output :
Fichier(s) PHP (2) :
- index.php
- page1.php

Fichier(s) MP3 (1) :
- lolo.mp3


Merci quand même !
Répondre à thepchou

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 SRN, le mercredi 28 novembre 2007 à 12:15:14
Salut,

il vraiment super cool ton code, j'ai quand même un question, pour moi, ce que je suis en train de faire, il faut que à chaque fichier xml trouvé, il afficher "salut <br>"

et ça je suis sûr que je peux utiliser ton code mais je ne sais pas comment le transformer pour que je puisse faire ça et comment le transformer aussi pour qu'il puisse faire pas que dasn un seul dossier mais aussi dans les dossier en dessus de celui qui est définit dans $dir ??


si tu m'apporter un peux d'aide sur cela ça serait bien volontiers

@++ SRN
Répondre à SRN
Logiciels pertinents trouvés dans les téléchargements
Télécharger PHP Edit 0.6PHP Edit - PHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de...Catégorie: PHP
Licence: Freeware/gratuit
Télécharger Toutes les extensions (petits modules complémentaires) de Firefox ?Toutes les extensions (petits modules complémentaires) de Firefox - Au lieu d'énumérer toutes les extensions (petits modules complémentaires) de Fire fox , allez dans le menu outils de...Catégorie: Extensions Firefox
Licence: Freeware/gratuit
Télécharger Trillian 3.1.10.0Trillian - Trillian est un des clients de messagerie instantanée les plus aboutis. Il est compatible avec AIM®, MSN®, ICQ®, Yahoo!®, et...Catégorie: Messagerie instantanée
Licence: Open Source
Télécharger Change Extension 1.0Change Extension - Ce petit logiciel, permet de changer l'extension d'un fichier, avec un simple clic droit sur le fichier en question. Plus...Catégorie: Système
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « [PHP] Tri Extension »