Page 1 sur 1

repertoire sous repertoire la suite snif

Posté : 03 juin 2010, 09:50
par davidb
voici le debut de l histoire j'ai un existant qui a partir d un dossier qui contient seulement des fichiers prends les fichiers et en fais un sommaire
php-avance/repertoire-sous-repertoire-f ... 53662.html
à partir de là mon boulot à été de pouvoir voir les dossiers et sous dossiers et nous y sommes arrivés

sauf que nous avons perdu quelque chose de capital en cours de route
avant le sommaire etait relatif , si l on bouge les repertoire et le sommaire il marche c est portable et c est obligatoire que ça le reste hors actuellement ça ne l'est plus...
est ce que c est possible de le rendre portable c est a dire de relativiser les chemins en l etat actuel des choses?

Re: repertoire sous repertoire la suite snif

Posté : 03 juin 2010, 10:09
par stealth35
tu peux utiliser realpath, et le supprimer celui ci du realpath du fichier :wink:

Re: repertoire sous repertoire la suite snif

Posté : 03 juin 2010, 10:49
par davidb
est ce que je peux avoir un peu plus de detail je ne comprends pas ce que fais realpath en lisant

j etais parti sur autre chose mais la recursivité echoue au deuxieme niveau avec les sous fichier a cause de la fonction qui ne compare par la chaine mais les caractere de la chaine sinon ça marcherais
function PrepareTOCData ($source, $types){

	global $docsTOC;
	
	$debutchemin='^';
$iterator     = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);
foreach ($iterator as $file) {
if ($file->isFile())
{
/* Comme $file n'est pas  forcément un fichier on a  besoin de le tester
si s'en est un on se contente de tester si l'extension de ce fichier est dans le tableau des extensions autorisées. 
*/
    if (in_array ( pathinfo($file, PATHINFO_EXTENSION), $types) ) {
	if (strpbrk($file->getPathname(), $debutchemin))
	{
// On construit $docsTOC "normalement"
        $docsTOC[] = array(
            'Label' => $file->getBasename(),
            'ObjectType' => 'Document',
            'LIBELLE' => $file->getBasename(),
            'FILENAME' => $debutchemin.'\\'.$file->getBasename(),
            'REF' => '-',
            'INDMAJ' => '',
            'INDMIN' => '',
            'DATEVERSION' => date("d/m/Y", $file->getMTime() )
        );
		}
    }
	}
	else
	{
	if (strpbrk($file->getPathname(),$debutchemin)) 
	{
	echo "a	";
	$debutchemin=$debutchemin.'\\'.$file->getBasename();
	echo $debutchemin."      																	      ";
	}
	else
	{
	echo"b	";
	$debutchemin=$file->getBasename();
	echo $debutchemin."         																	   ";
	}
	//on rentre le dossier dans le tableau aussi en enlevant quelques infos
	$docsTOC[] = array(
            'Label' => $file->getBasename(),
            'ObjectType' => 'Dossier',
            'LIBELLE' => $file->getBasename(),
            'FILENAME' => '',
            'REF' => '-',
            'INDMAJ' => '',
            'INDMIN' => '',
            'DATEVERSION' => '');
	
	}
}   
	
return true;	
}
je manque de remplacant qui marche de strpbrk

Re: repertoire sous repertoire la suite snif

Posté : 03 juin 2010, 10:57
par stealth35
imagine mon dossier web se trouve dans : D:\www avec dedans mo nfichier avec ta fonction
j'ai un dossier "test" avec 3 fichier f1.php, f2.php , f3.php et un sous dossier "soustest" avec subf1.php, subf2.php

je veux aller chercher tout dans "test"

donc avec ta fonction je ferais,
PrepareTOCData ('test', array('php'))
j'affiche tout en realpath

D:\www\test\f1.php
D:\www\test\f2.php
D:\www\test\f3.php
D:\www\test\soustest\subf1.php
D:\www\test\soustest\subf2.php


le realpath de "test" etant "D:\www\test", il suffis de le suprimer du realpath des fichiers (+ un separator)

ducoup t'aurais

f1.php
f2.php
f3.php
soustest\subf1.php
soustest\subf2.php



c'est que tu veux ?

Re: repertoire sous repertoire la suite snif

Posté : 03 juin 2010, 11:03
par davidb
le resultat c est ce que je veux mais les fichiers ne sont pas dans www mais là ou l utilisateur le veux du coup je penses pas pouvoir mettre test est ce que je peux remplacer test par toute ma chaine $source ici ?

Re: repertoire sous repertoire la suite snif

Posté : 03 juin 2010, 11:05
par stealth35
le resultat c est ce que je veux mais les fichiers ne sont pas dans www mais là ou l utilisateur le veux du coup je penses pas pouvoir mettre test est ce que je peux remplacer test par toute ma chaine $source ici ?
ouai mais c'est suivant ce que tu met dans ta fonction le www c'est un exmple

essaye ca
    function PrepareTOCData ($source, $types){

        global $docsTOC;
       
       
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);
foreach ($iterator as $file) {
if ($file->isFile())
{
/* Comme $file n'est pas  forcément un fichier on a  besoin de le tester
si s'en est un on se contente de tester si l'extension de ce fichier est dans le tableau des extensions autorisées.
*/
    if (in_array ( pathinfo($file, PATHINFO_EXTENSION), $types) ) {
// On construit $docsTOC "normalement"
        $docsTOC[] = array(
            'Label' => $file->getFilename(),
            'ObjectType' => 'Document',
            'LIBELLE' => $file->getBasename(),
            'FILENAME' => str_replace($source . DIRECTORY_SEPARATOR, '', $file->getRealPath()),
            'REF' => '-',
            'INDMAJ' => '',
            'INDMIN' => '',
            'DATEVERSION' => date("d/m/Y", $file->getMTime() )
        );
    }
        }
        else
        {
        //on rentre le dossier dans le tableau aussi en enlevant quelques infos
        $docsTOC[] = array(
            'Label' => $file->getFilename(),
            'ObjectType' => 'Dossier',
            'LIBELLE' => $file->getBasename(),
            'FILENAME' => '',
            'REF' => '-',
            'INDMAJ' => '',
            'INDMIN' => '',
            'DATEVERSION' => date("d/m/Y", $file->getMTime() )
        );
        }
}  
       
return true;   
}

Re: repertoire sous repertoire la suite snif

Posté : 03 juin 2010, 11:19
par davidb
ça fais deux fois en deux jours que je suis impressioné là tu as combien d experiences dans le php et la prog?

au passage tu as reglé mon histoire de sous repertoire je l ai utilisé dans les dossiers :agenouille: :afraid:


merciiiiiiii

Re: repertoire sous repertoire la suite snif

Posté : 03 juin 2010, 11:22
par stealth35
ça fais deux fois en deux jours que je suis impressionné là tu as combien d expériences dans le php et la prog?
surement moins que tu ne pense :wink:

j'espère que ta compris le code avec le coup du str_replace ?

Re: repertoire sous repertoire la suite snif

Posté : 03 juin 2010, 11:24
par davidb
oui j ai saisi le truc je l ai meme reutilisé comme dis plus haut