recherche par date de derniere modification

Eléphant du PHP | 335 Messages

27 avr. 2005, 15:36

Moi aussi je suis bien content de toi!! lol

Merci bcp, tu m'as bien dépaner! :pouce:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

27 avr. 2005, 15:37

Mais de rien !!!

J'éspère juste que si j'en ai besoin, tu me rendras la pareille !!!
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 335 Messages

27 avr. 2005, 15:45

Les liens marchent pas chez moi

j'ai mis :

Code : Tout sélectionner

echo "<a href='/".NomSurServeur( $_SERVER['DOCUMENT_ROOT'].'/edc/Documents/', $liste_fichier[$compt])."'>"
Ce qui est bizarre c'est qu'il ne prend pas /edc/documents/ ??

Eléphant du PHP | 335 Messages

27 avr. 2005, 15:51

Mais bon, c'est pas le probleme

J'viens de découvrir une erreur de taille

En fait le script ne liste les fichiers que d'un seul sous dossier, il n'y a que 6 fichiers et il affiche plusieurs fois (environ 100fois)!!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

27 avr. 2005, 16:00

En ce qui concerne les liens, tu n'as pas compris, le 1er paramètre, c'est le chemin du serveur, pas le point de départ de ton exploration !!!

Il faut que ton exploration se fasse sur le serveur, pas obligatoirement à la racine, ok.

Mais la fonction NomSurServeur sert juste à tranformer un "c:/EasyPHP/www/edc/blabla.php" en "edc/blabla.php", c'est à dire l'adresse du fichier depuis la racine du serveur !!! cette fonction à pour but de rendre interpretable l'adresse du fichier par le serveur !!!

JE ne sais pas si je suis très clair !!! Si tu comprend pas, dit le moi !!!
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 335 Messages

27 avr. 2005, 16:06

Pour les liens excuse moi j'ai repondu un peu vite

Mais c'est qu'un seul sous dossier est lister, ce dossier contient 6 fichiers, et a l'affichage j'ai au moins 10 fois chaque fichier avec des heures différentes.
De plus aucun autre dossier et donc fichier n'est listé

Je pense que ca vient de la boucle for...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

27 avr. 2005, 16:07

je comprend pas parce que avec cette arborescence :

Image

j'obtient le résultat suivant :

Image[/img]

Il explore bien mes 2 sous répertoires et tout les sous- repertoire de mes sous répertoires et ... (recursivité :lol: )
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 335 Messages

27 avr. 2005, 16:11

Ca fait pas ca chez moi!!

Ta mis quoi a la place des $_SERVER['DOCUMENT_ROOT']

Code : Tout sélectionner

$a_racine = explode("/", $_SERVER['DOCUMENT_ROOT']); $i_profondeur = count($a_racine); $liste_fichier = recurse_dir($_SERVER['DOCUMENT_ROOT']); for($compt = 0; $compt < count($liste_fichier); $compt++) { if($liste_fichier[$compt]!='.' && $liste_fichier[$compt] !='..' && filemtime($liste_fichier[$compt])>$timestamp) { $a_fichier = explode("/", $liste_fichier[$compt]); $i_index = count($a_fichier) - 1; echo "<a href='/".NomSurServeur($_SERVER['DOCUMENT_ROOT'], $liste_fichier[$compt])."'>".$a_fichier[$i_index]."</a> a été modifié le : " . date ("F d Y H:i:s.", filemtime($liste_fichier[$compt])); echo '<br>'; } } ?>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

27 avr. 2005, 16:15

Déjà, remplace le $a_fichier[$i_index] par $list_fichier[$count] pour voir si c'est vraiment les mêmes fichiers ou bien si c'est 2 fichiers du même noms à un endroit différent !!!

ensuite, voilà mon code (Je te redonne pas les fonctions, je les ai pas touchées) :
$a_racine = explode("/", $_SERVER['DOCUMENT_ROOT'].'/edc/Documents');
$i_profondeur = count($a_racine);

$liste_fichier =  recurse_dir($_SERVER['DOCUMENT_ROOT'].'/edc/Documents');
for($compt = 0; $compt < count($liste_fichier); $compt++)
{
	if($liste_fichier[$compt]!='.' && $liste_fichier[$compt] !='..' && filemtime($liste_fichier[$compt])>$timestamp)
	{
		$a_fichier = explode("/", $liste_fichier[$compt]);
		$i_index = count($a_fichier) - 1;
		//echo "<a href='/".NomSurServeur($_SERVER['DOCUMENT_ROOT'], $liste_fichier[$compt])."'>".$a_fichier[$i_index]."</a> a été modifié le : " . date ("F d Y H:i:s.", filemtime($liste_fichier[$compt]));
		echo "<a href='/".NomSurServeur($_SERVER['DOCUMENT_ROOT'], $liste_fichier[$compt])."'>".$liste_fichier[$compt]."</a> a été modifié le : " . date ("F d Y H:i:s.", filemtime($liste_fichier[$compt]));
		echo '<br>';
	}
}
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 335 Messages

27 avr. 2005, 16:16

Bon te prends pas la tete avec ca, ca doit venir de chez moi!
Je vais chercher!!!

J'ai une derniere question, si tu sais tant mieux sinon laisse tomber.

En fait dans le dossier /edc/documents/ j'ai 4 dossiers et 1fichier; je voudrais qu'il soit impossible de lister un dossier (qui s'appelle arborescence) ainsi que le fichier.

Sait tu comment faut il faire?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

27 avr. 2005, 16:23

C'est pas très jolie puisque c'est écrit en dur mais tu peut créer un tableau avec tout les noms des fichiers/dossiers que tu veut rendre invisible et dans ton test
if($liste_fichier[$compt]!='.' && $liste_fichier[$compt] !='..' && filemtime($liste_fichier[$compt])>$timestamp)
tu rajoute la condition
&& in_array(tonTableau, nomFichier))
en fait in_array(tab, fic) va tester l'existence de la valeur fic dans le tableau tab!!!

JE te conseille de stocker le path plutot que le nom, ça t'évitera de cacher des fichiers du même nom mais à un endroit différent !!!

Si tu post avant 17h je peut te répondre, sinon ça sera demain !!!![/php]
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 335 Messages

27 avr. 2005, 16:44

Je suis en train de m'arracher les cheveux!!

J'obtiens uniquement les dossiers a l'affichage mais pas les fichiers! grrr

Voici mon code :
<?php 

// recurse_dir($dir) liste tous les fichiers du dossier (et des sous-dossiers) $dir 
function recurse_dir($dir) 
{ 
    global $i, $file_list; 
    if ($dp = opendir($dir)) 
    { 
        while ($file = readdir($dp)) 
        { 
            if (($file != ".") && ($file != "..")) 
            { 
                $tmp = $dir."/".$file; 
                $file_list[$i] = $tmp; 
                $i++; 
                if (is_dir($tmp)) 
                { 
                    recurse_dir($tmp, $file) ; 
                } 
            } 
        } 
        return $file_list; 
    } 
} 

//Cette fonction extrait le chemin du serveur du chemin du fichier 
// PRE : le fichier est dans l'arborescence du serveur 
// POST : retourn une chaine du type "dossier/dossier/fichier.ext" 
function NomSurServeur($cheminServeur, $cheminFichier) 
{ 
    $a_racine = explode("/", $cheminServeur); 
    $i_profServeur = count($a_racine); 
     
    $a_fichier = explode("/", $cheminFichier); 
    $i_profFichier = count($a_fichier); 
     
    $index = 0; 
    for($i = $i_profServeur; $i < $i_profFichier; $i++) 
    { 
        $a_result[$index] = $a_fichier[$i]; 
        $index++; 
    } 
     
    return (implode($a_result, "/")); 
} 

function taDateToTimestamp($date) 
{ 
    $timestamp = -1; 
    list($annee, $mois, $jour) = sscanf($date, "%d-%d-%d"); // exemple : 2004-12-23 
    // un petit test pour verifier que la date est bonne 
    if (checkdate($mois,$jour,$annee)) 
    { 
        // la date est bonne 
        // creation de la date avec mktime 
        $timestamp = mktime(0,0,0,$mois, $jour, $annee); 
    } 
    else 
    { 
        $timestamp=-1; 
    } 
    return $timestamp; 
} 

$timestamp = taDateToTimestamp("2005-04-20"); 

$a_racine = explode("/", $_SERVER['DOCUMENT_ROOT'].'/edc/Documents'); 
$i_profondeur = count($a_racine); 

$liste_fichier =  recurse_dir($_SERVER['DOCUMENT_ROOT'].'/edc/Documents'); 
for($compt = 0; $compt < count($liste_fichier); $compt++) 
{ 
    if($liste_fichier[$compt]!='.' && $liste_fichier[$compt] !='..' && filemtime($liste_fichier[$compt])>$timestamp) 
    { 
        $a_fichier = explode("/", $liste_fichier[$compt]); 
        $i_index = count($a_fichier) - 1; 
        //echo "<a href='/".NomSurServeur($_SERVER['DOCUMENT_ROOT'], $liste_fichier[$compt])."'>".$a_fichier[$i_index]."</a> a été modifié le : " . date ("F d Y H:i:s.", filemtime($liste_fichier[$compt])); 
        echo "<a href='/".NomSurServeur($_SERVER['DOCUMENT_ROOT'], $liste_fichier[$compt])."'>".$liste_fichier[$compt]."</a> a été modifié le : " . date ("F d Y H:i:s.", filemtime($liste_fichier[$compt])); 
        echo '<br>'; 
    } 
} 

?>
Ta une idée d'ou ca peux venir?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

27 avr. 2005, 16:47

Déjà, est-ce que tu es sûr que tes fichiers ont été modifié après la date que tu donne ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

27 avr. 2005, 16:50

Je pense que je vais pas avoir le temps de m'en occuper avant de partie, mais fait moi une capture d'écran de ton répertoire (+ tt les fichiers qui se trouvent dans les répertoires) et du résultat obtenu et j'essayerai !!!
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 335 Messages

27 avr. 2005, 16:52

excuse moi, jsui en train de péter les plombs!
il est temps que j'arrete jefais n'importe quoi!!

bon en fait ca marche trés bien.

je voudrais savoir si c'est possible de ne lister que les fichiers mais pas les dossiers

ex :
d:/wwwsiteintranet/edc/Documents/070-Procedure/BKP - Backup Administration a été modifié le : April 20 2005 16:13:53.
d:/wwwsiteintranet/edc/Documents/070-Procedure/BKP - Backup Administration/old a été modifié le : April 20 2005 16:13:53.
d:/wwwsiteintranet/edc/Documents/070-Procedure/BKP - Backup Administration/PR - EDC - BKP - 006 Checking Daily Backup Procedure.doc a été modifié le : November 08 2004 18:40:24.
d:/wwwsiteintranet/edc/Documents/070-Procedure/BKP - Backup Administration/PR - EDC - BKP - 073 Backup incident Escalation Process.doc a été modifié le : November 08 2004 19:15:26.

les deux premiers sont des dossiers et je voudrais que ca ne s'affiche pas

est ce possible?