recherche par date de derniere modification

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

27 avr. 2005, 16:56

Il faut que tu places is_dir($liste_fichier[$compt]) dans ton if($liste_fichier[$compt]!='.' && $liste_fichier[$compt] !='..' && filemtime($liste_fichier[$compt])>$timestamp)
if($liste_fichier[$compt]!='.' && $liste_fichier[$compt] !='..' && is_dir($liste_fichier[$compt]) && filemtime($liste_fichier[$compt])>$timestamp) 
Bon allez, je t'abandonne pour ce soir mais si tu as un pb, post et je te répondrais demain !!!
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

28 avr. 2005, 11:14

Ca ne marche pas j'ai toujours les dossiers qui s'affiche!

Sinon ce lien ne marche pas
 echo "<a href='/".NomSurServeur($_SERVER['DOCUMENT_ROOT'], $liste_fichier[$compt])."'>".$a_fichier[$compt]."</a> a été modifié le : " . date ("F d Y H:i:s.", filemtime($liste_fichier[$compt])); 
J'ai juste le premier fichier et ensuite les noms de fichiers ne s'affiche pas; il ya a juste "a été modifié le ......"

sais tu pourquoi??
Modifié en dernier par Justone le 28 avr. 2005, 12:28, modifié 1 fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 avr. 2005, 11:52

C'est pas $a_liste[$compt] mais $liste_fichier[$compt]
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

28 avr. 2005, 11:53

Post moi la fin de ton code (tout ce qui n'est pas fonction)
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

28 avr. 2005, 12:28

en fait ac ce code le lien affiche tous le chemin or je voudrais juste le nom du fichier

de plus je voudrais que les dossiers ne soit pas lister (et donc afficher)
$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])."'>".$liste_fichier[$compt]."</a> a été modifié le : " . date ("F d Y H:i:s.", filemtime($liste_fichier[$compt])); 
        echo '<br>'; 
    } 
} 
Merci...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 avr. 2005, 14:49

Excuse moi, je suis parti mangé et je me suis attaqué à un problème de serveur en revenant !!!!

Pour que ton script n'affiche que les fichiers, j'ai modifié la fonction recur_dir() pour qu'elle ne construise qu'une liste de fichiers !!! Donc l'affichage ne prendra que des fichiers et oubliera les dossiers !!!

Sinon, pour ton pb de dossiers que tu voulais pas afficher, c'est résolu ??

Voiçi la fonction que j'ai modifié :
// 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;

                if (is_dir($tmp))
                    recurse_dir($tmp, $file) ;
				if (is_file($tmp))
				{
					$file_list[$i] = $tmp;
                	$i++;
				}
					
            }
        }
        return $file_list;
    }
}
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

28 avr. 2005, 15:02

Sinon, ne te contente pas de recopier mon code !!!

Si tu avais lu mon dernier post d'hier, tu aurais pu voir qu'il fallait rajouter du code à celui que je postais !!!!

Le code qu eje t'ai donné, c'était juste pour te montrer là ou tu devais modifier ton code !!!
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

28 avr. 2005, 15:14

en fait le probleme que j'ai c'est ac ce lien :
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])); 
celui marche mais affiche en lien le chemin complet du fichier

alors je l'ai remplacé par celui ci :
echo "<a href='/".NomSurServeur($_SERVER['DOCUMENT_ROOT'], $liste_fichier[$compt])."'>".$a_fichier[$compt]."</a> a été modifié le : " . date ("F d Y H:i:s.", filemtime($liste_fichier[$compt])); 
et la seul le premier fichier est affiché en lien et tous les autres ne le sont pas (il n'y aucun affichage).
a l'affichage j'ai plein de lignes "a été modifié le ........." a la suite les unes des autres!!

sait tu d'ou ca viens??

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 avr. 2005, 15:26

Oui
        $a_fichier = explode("/", $liste_fichier[$compt]);
        $i_index = count($a_fichier) - 1;
La première ligne sert à décomposer le path en directory et en fichier:

c:/dir1/dir2/fich.ext

va donner

+---+-----+-----+--------+
| c: | dir1 | dir2 | fic.ext |
+---+-----+-----+--------+

La seconde ligne sert à récupérer la dernière case de ce tableau. Celle qui contient le nom du fichier !!!!

$compt sert à parcourir le tableau de path et $a_fichier est reconstruit pour chaque fichier dont $compt et $a_fichier n'ont aucun lien !!!!

Il faut que tu remplace $a_result[$compt] par $a_result[$i_index]

J'éspère que tu as compris !!!! Je pense que tu n'avais pas compris mon code avant, sinon tu n'aurais pas posé cette question !!!

C'est pas pour t'embeter que je dit ça, mais si tu doit reprendre ce code, il vaut mieux que tu comprenne comment il tourne !!!!
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

12 mai 2005, 14:36

Salut Zeus

Dsl de -encore- revenir pour te demander un coup de main.

Je m'explique :
le script de recherche par date de dernière modif fonctionne bien, MAIS j'ai remarqué en faisant des tests qu'un fichier ne s'affichait pas.

en effet, en regardant bien j'ai vu que le premier fichier a afficher ne s'affichait pas mais que tous les fichiers suivant s'affichaient!!

par exemple s'il n'y a qu'un seul fichier, et bien il n'y aura rien à l'affichage etant donnée que le premier fichier a afficher ne s'affiche pas!!

peut etre que cela vient de la fonction recurse_dir

as-tu une idée? d'ou ca vient à ton avis?

merci encore pour ton aide, je t"en suis très reconnaissant.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

12 mai 2005, 14:46

Juste après avoir appellé la fonction recurs_dir insert la ligne

print_r $liste_fichier

et post le résultat, on verra si la tableau ets bien rempli ou pas !!!
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

12 mai 2005, 14:56

Oui le tableau est bien rempli (il y les 4 documents) mais comme tu peux le voir je n'ai que 3 liens a l'affichage!!

Array (
[] => ../EDC/01 - Procedures/00 - GEN - General/ANew Document Microsoft Word.doc
[1] => ../EDC/01 - Procedures/00 - GEN - General/DC -EDC xxx - PC -Template Rollback Document.doc
[2] => ../EDC/01 - Procedures/03 - PC (CC) - Program Change/ANew Document Microsoft Word.doc
[3] => ../EDC/01 - Procedures/03 - PC (CC) - Program Change/DC -EDC xxx - PC -Template Rollback Document.doc )

DC -EDC xxx - PC -Template Rollback Document.doc a été modifié le : May 03 2005 12:29:12.

ANew Document Microsoft Word.doc a été modifié le : May 12 2005 14:09:34.

DC -EDC xxx - PC -Template Rollback Document.doc a été modifié le : May 03 2005 12:29:12.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

12 mai 2005, 15:01

Redonne moi la boucle d'affichage que tu utilise stp
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

12 mai 2005, 15:07

je te renvoi tout le code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<?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; 

                if (is_dir($tmp)) 
                    recurse_dir($tmp, $file) ; 
                if (is_file($tmp)) 
                { 
                    $file_list[$i] = $tmp; 
                    $i++; 
                } 
                     
            } 
        } 
        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('$date_derniere_modif'); 

$a_racine = explode("/", $_POST['folder']); 
$i_profondeur = count($a_racine); 

$liste_fichier =  recurse_dir($_POST['folder']); 
print_r ($liste_fichier);
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='/EDC/".NomSurServeur($_SERVER['DOCUMENT_ROOT'], $liste_fichier[$compt])."'target=\"_blank\">".$a_fichier[$i_index]."</a> a été modifié le : " . date ("F d Y H:i:s.", filemtime($liste_fichier[$compt]));         echo '<br>'; 
    } 
} 

?> 
</div>
</body>
</html>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

12 mai 2005, 15:21

Essaye avec ça et donne moi le résultat
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 $compt."\n<br>";
        echo "<a href='/EDC/".NomSurServeur($_SERVER['DOCUMENT_ROOT'], $liste_fichier[$compt])."'target=\"_blank\">".$a_fichier[$i_index]."</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