Page 1 sur 1

Afficher chaine de caractere contenu dans 1 fichier txt

Posté : 02 mai 2005, 22:30
par Matahi
Bonjour,

je débute tout juste.
J'aurai aimé avoir un petit coup de pouce

Voilà, je souhaiterai afficher sur une page web la liste des fichiers texte contenu dans un dossier ainsi que pour chaque fichier une chaîne de
caractère spécifique de la forme suivante "OBJ/............. se terminant par REF/ ou TXT" contenu dans le fichier.

Mjavascript:emoticon(':roll:')
Rolling Eyeserci d'avançe pour votre aide.

Posté : 02 mai 2005, 22:41
par Cyrano
Pour quelle partie de ton application as-tu besoin d'aide ?
-1- Lister les fichier du répertoire?
-2- Indentifier chacun des fichiers?
-3- Établir le lien avec le fichier sur la page?

Grosso-modo, de quoi disposes-tu et de quoi as-tu besoin ?

Réponse à Cyrano

Posté : 02 mai 2005, 23:09
par Matahi
J'ai besoin d'aide pour effectuer les 3 parties.
A savoir lister automatiquement tous les fichiers présents dans le répertoire,
établir le lien pour chacun des fichiers afin que l'on puisse y accéder directement depuis la page web et surtout récupérer la chaîne de caractère pour chacun des fichiers afin de l'afficher en correspondance de chaque lien sur la page web.

J'espère avoir répondu à ta question.

Merci

javascript:emoticon(':P')
Razz

Posté : 02 mai 2005, 23:21
par Cyrano
Ok, alors pour la récupération de la liste, je te suggère une petite lecture du manuel sur la fonction readdir()

Quand tu as le nom du fichier et que tu disposes déjà du chemin d'accès, il te reste à construire le lien en faisant une concaténation :
$url_fichier = $chemin_repertoire."/".$nom_fichier;
Pour la chaine de caractère, je ne saisis pas bien de quoi tu parles : est-ce que c'est une partie du texte du fichier ?

Posté : 03 mai 2005, 00:39
par Matahi
Pour ce qui est de la chaîne de caractère,
j'entends par la récupérer une partie du texte du fichier qui commence toujours par le mot "OBJ/" et l'afficher à côté du lien sur la page web pour chaque fichier.

Merci pour le reste
Je vais essayer

:lol:

Posté : 03 mai 2005, 01:50
par Spetznaz
Tiens voici un code que j'ai fais pour la gallerie d'image qui fait parti du site que je conçois pour une amie
<html>
  <head>
    <link title="test" type="text/css" rel="stylesheet" href="style.css">
  </head>
  <body>
    <h1>Vos Window Color</h1>
    <?php
    // On déclare une variable de type tableau
    // qui contiendra le nom des fichiers
    $tableau = array();

    // Fonction qui séparent
    // le nom de fichier et son extension.
    function extfichier($fichier)
    {
      $parties = explode(".", $fichier);
      return array_pop($parties);
    }

    function nomfichier($fichier)
    {
      $parties = explode(".", $fichier);
      return $parties[0];
    }

    // Ouverture du dossier visé
    $rep ="mbwincol";
    $dossier = opendir($rep);
    $fichier = readdir($dossier);

    while ($fichier = readdir ($dossier))
    {
      $nom = nomfichier($fichier);
      $extention = extfichier($fichier);

      if ($extention=="gif" or $extention=="GIF"
       or $extention=="jpg" or $extention=="JPG"
       or $extention=="bmp" or $extention=="BMP"
       or $extention=="png" or $extention=="PNG" )
      {

        // on stocke le nom des fichiers
        $nomfichier[] = nomfichier($fichier);
        $extfichier[] = extfichier($fichier);
      }
    }

    closedir ($dossier);

    $nbcol=3; //--- détermine le nombre de colonnes de l'affichage

    echo '<table align="center">';
    for ($i=0; $i<count($nomfichier); $i++)
    {

    if ($extfichier[$i]!=="")
    {
      if ($i%$nbcol==0)
      echo '<tr>';
      echo "
      <td class=\"galerie\">
         <a href=\"$rep/$nomfichier[$i].$extfichier[$i]\">
             <img width=\"100\" height=\"100\" src=\"$rep/$nomfichier[$i].$extfichier[$i]\">
             <br> $nomfichier[$i]
           </a>
         </td>";

      if($i%$nbcol==($nbcol-1))
      echo '</tr>';

    }
    }
echo '</table>';
?>

  </body>
</html>
J'a plein de boulot a faire dessus mais ça recense tes noms de fichiers dans un tableau. En le modifiant un peu tu pourras surement faire des trucs sympa ;)

Il est un peu tard je te laisse débrouiller pour comprendre le code.
Voici un Lien utile

Posté : 03 mai 2005, 15:15
par sadeq
Reprise et développement du code de Spetznaz, et ça donne un véritable explorateur de fichiers qui fonctionne en mode local.
<?php
 //Ce programme est un explorateur de fichiers (mode local) 
    $tableau = array(); 

    // Fonctions 
	//Pour l'extension d'un fichier
    function getExtension($entrée) 
    { 
	  	$parties = explode(".", getNom($entrée)); 
      	return isset($parties[1])?".$parties[1]":null;
    } 
	//Pour le nom d'un fichier ou dossier
    function getNom($entrée) 
    { 
		$entrée = str_replace("\\","/",$entrée);
		$parties = explode("/",$entrée);
		if (count($parties)>0) return $parties[count($parties)-1]; else return $entrée;
    } 
	//Pour la liste des dossiers parents d'une entrée
    function getListeChemins($entrée) 
    { 
	  	$entrée = str_replace("\\","/",$entrée);
		$parties = explode("/",$entrée);
		for ($i=1; $i < count($parties); $i++)
			$parties[$i] = $parties[$i-1]."/".$parties[$i];
		return $parties;
    }
	//Pour le chemin complet d'une entrée
	function getChemin($entrée) 
    { 
	  	$nom = getNom($entrée);
		return str_replace($nom,"",$entrée);
    }
	//Pour classer le contenu (dossiers ou fichiers) par un ordre choisi
	function trier($entrée, $ordre="ASC", $ignore_casse=true) 
    { 
		//tri classique : Echange
		for ($i=0; $i < count($entrée)-1; $i++)
			for ($j=$i+1; $j < count($entrée); $j++)	{
				//comparer et classer les noms
				$nom1 = getNom($entrée[$i]);
				$nom2 = getNom($entrée[$j]);
				
				//Ignorer la casse
				if ($ignore_casse) {$nom1 = strtoupper($nom1);$nom2 = strtoupper($nom2);}
				
				//le tri (ordre croissant par défaut)
				if ((strtoupper($ordre) != "DESC" & $nom1 > $nom2)
				    ||(strtoupper($ordre) == "DESC" & $nom1 < $nom2)) 
					{$temp = $entrée[$i]; $entrée[$i]=$entrée[$j]; $entrée[$j] = $temp; }
			} 
 		return $entrée;
    } 

    //Récupérer des paramètres HTTP 
 	$rep =isset($_GET["rep"])?$_GET["rep"]:"A:"; 
 	$ordre =isset($_GET["ordre"])?$_GET["ordre"]:"ASC"; 
	
	//Le titre
	echo "<table width=100%><legend><h3>Contenu de $rep</h3><hr></legend>
		<tr><th align=left>Ordre: <A href='explorer.php?rep=$rep&ordre=ASC'>aA</A>  <A href='explorer.php?rep=$rep&ordre=DESC'>Aa</A>";
	
	//Historique des dossiers parcourus
	$chemin = getListeChemins($rep);
   	if (isset($chemin) && count($chemin)>1){
		echo "<th align=right>Dossiers parents :";
		for ($i=0; $i<count($chemin)-1; $i++){
		    if ($i==count($chemin)-2) $style ="b"; else $style="i";
			$index = $i+1;
			echo "<th> <$style><A href='explorer.php?rep=$chemin[$i]&ordre=$ordre'>$index </A></$style>";
		}
		echo "</table>";
	}
	
	//Affichage d'un fichier demandé par un lien hTTP
	if (is_file($rep) ) {
		echo "<iframe src='$rep' width=100% height=100%></iframe>";
	}
	else {
	  //Exploration d'un dossier et affichage de son contenu
		//Ouverture du dossier ou lecteur à explorer
		$dossier = @opendir($rep);
		if (isset($dossier) && $dossier != null) {
		    //Explorer le contenu du dossier ouvert
    		while ($entrée = readdir ($dossier)) 
    		{ 
				//Une entrée peut être un fichier ou sous-dossier (ignorer la branche générique du parent)
				if ($entrée != null && $entrée != "." && $entrée != ".."){
				 if (is_file("$rep/$entrée")){
				 	//mémoriser le fichier trouvé
        			$fichiers[] =  "$rep/$entrée"; 
				 }else 
				 	//mémoriser le dossier trouvé
					$dossiers[] = "$rep/$entrée";
				}
    		}
			//Fermer le chemin exploré 
    		closedir ($dossier);
			
			//Appliquer le classement des dossiers ou fichiers trouvés (selon le paramètre $ordre)
	    	if (isset($dossiers)) $dossiers = trier($dossiers,$ordre);
	    	if (isset($fichiers)) $fichiers = trier($fichiers,$ordre);
		}
		
    
		//Affichage de la liste des dossiers et fichiers trouvés
		$nbcol=3; //--- détermine le nombre de colonnes de l'affichage 
    	echo "<table align=center width=100%><legend></legend>";
	
		//Comptage des ressources
		$nbDossiers= isset($dossiers)?count($dossiers):0;
		$nbFichiers= isset($fichiers)?count($fichiers):0;
		echo "<tr><th colspan=$nbcol align=left><font size=1>$nbDossiers dossier(s) et $nbFichiers fichier(s) </font>";
    
		//Afficher les dossiers (icône dossier + le nom + un lien hTTP vers la ressource)
		if (isset($dossiers))
		for ($i=0; $i<count($dossiers); $i++) 
    	{ 
     	 if ($i%$nbcol==0)  echo "<tr>"; 
                           //Réduire la taille du texte d'un nom > à 20 caractères
	  	if (strlen(getNom($dossiers[$i]))>20) $taille= 1; $taille=2;
     	 echo "<td><font size=$taille><A href='explorer.php?rep=$dossiers[$i]&ordre=$ordre' style='text-decoration:none'>
			    <img src='dossier.gif' align=center border=0 alt='$dossiers[$i]'> ".strtoupper(getNom($dossiers[$i]))."</img></A></font>";
    	} 
	
		//Afficher les fichiers (icône fichier + le nom + un lien hTTP vers la ressource)
		if (isset($fichiers))	
		for ($i=0; $i<count($fichiers); $i++) 
    	{ 
      	if ($i%$nbcol==0)  echo "<tr>"; 
	 	 //Réduire la taille du texte d'un nom > à 20 caractères
	  	if (strlen(getNom($dossiers[$i]))>20) $taille= 1; $taille=2;

            echo "<td><font size=$taille><A href='explorer.php?rep=$fichiers[$i]&ordre=$ordre' style='text-decoration:none'>
			        <img src='fichier.gif' align=center border=0 alt='$fichiers[$i]'> ".getNom($fichiers[$i])."</img></A></font>";
    	}
		echo "</table>"; 
 	} //Fin de l'explorartion du dossier et de l'affichage de son contenu
?> 

Posté : 03 mai 2005, 20:03
par Spetznaz
Waou ! :shock:
Félicitations Sadeq !

C'est du beau boulot. J'ai pas testé mais la "complexité" du code m'inpressionne assez. déjà que j'ai eu un peu de mal pour le peu que j'ai fait alors là chapeau.

Pour Sadeq

Posté : 05 mai 2005, 02:49
par Matahi
Merci pour l'info.

Je ne suis que novice en la matière.

Quels sont les paramètres de code que je dois modifier pour l'adapter à une
arborescence particulière : "E:\DOSSIER\COURRIER".

Matahi

:P

Posté : 09 mai 2005, 08:34
par sadeq
Si tu écrit ce programme dans une page nommée "explorer.php" il suffit de démarrer cette page sous ton navigateur en tapant :
http://ton_serveur/explorer.php?rep=E:\DOSSIER\COURRIER

Le paramètre est rep