Page 1 sur 5
recherche par date de derniere modification
Posté : 27 avr. 2005, 12:14
par Justone
Alors je m'explique
J'ai fait un script de recherche par date de derniere modif qui fonctionne bien.
Au début de mon script je donne le dossier ou effectuer la recherche et je voudrais que cette recherche s'effectue dans les fichiers du dossier et des sous dossiers.
Donc j'ai écris une fonction recurse_dir qui liste tous les fichiers du dossier et des sous dossiers.
Mais je pense que ca merde a l'affichage.
A L'AIDE!
pour info : je peux envoyer mon code...
Posté : 27 avr. 2005, 12:17
par Cyrano
pour info : je peux envoyer mon code...
Ce serait une excellente idée, on est pas voyants extra-lucides, enfin pour ma part, ça ne rentre pas dans la liste de mes caractéristiques

Posté : 27 avr. 2005, 12:18
par Justone
Code : Tout sélectionner
<?php
$dossier=opendir($_SERVER['DOCUMENT_ROOT'].'/EDC/Documents/');
// 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) ;
}
else {
$file_list[$i] = $tmp;
$i++;
}
}
}
}
}
recurse_dir($dossier);
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);
while($fichier=readdir($dossier))
{
if (file_exists($fichier))
{
if($fichier!='.' && $fichier !='..' && filemtime($fichier)>$timestamp)
{
echo "<a href='/EDC/".$fichier."'>".$fichier."</a> a été modifié le : " . date ("F d Y H:i:s.", filemtime($fichier));
echo '<br>';
}
}
}
closedir($dossier);
?>
Posté : 27 avr. 2005, 12:21
par Cyrano
$timestamp = taDateToTimestamp($date_derniere_modif);
Ta variable $date_derniere_modif n'est initialisée nulle part...
Posté : 27 avr. 2005, 12:23
par Justone
Avant j'ai un formulaire ou l'utilisateur choisit une date (du type 2005-04-25).
C'est ca date_derniere_modif.
Dsl j'avais oublier de le signaler!
Posté : 27 avr. 2005, 12:40
par Cyrano
Ok, alors soit il manque encore des bouts de code, soit le problème est le suivant:
Tu fais bien exécuter la fonction de recherche récursive, mais dans ta boucle d'affichage, je ne vois aucun appel au résultat. Ton appel recurse_dir($dossier); devrait peut-être bien être effectué à l'intérieur de cette boucle, non ?
Posté : 27 avr. 2005, 13:58
par Invité
Ok, alors soit il manque encore des bouts de code, soit le problème est le suivant:
Tu fais bien exécuter la fonction de recherche récursive, mais dans ta boucle d'affichage, je ne vois aucun appel au résultat. Ton appel recurse_dir($dossier); devrait peut-être bien être effectué à l'intérieur de cette boucle, non ?
Je pense que c'est plutot ta deuxieme pensée qui est exacte car cette je m'en sert autre part et elle fonctionne trés bien.
Le problème c'est que je ne vois pas trop ou l'appeler et comment en faire un affichage??
T'aurais pas une idée?
Posté : 27 avr. 2005, 14:03
par iclo
Tu récupères la valeur du formulaire pour $date_derniere_modif par Get ou POST ??
Posté : 27 avr. 2005, 14:04
par seayoung
Ce serait une excellente idée, on est pas voyants extra-lucides, enfin pour ma part, ça ne rentre pas dans la liste de mes caractéristiques
et ta petite boule de crystale ???

Posté : 27 avr. 2005, 14:06
par zeus
Je voudrais pas dire de bétise, mais tu affiche le résultat de ton parcours recursif OU

Posté : 27 avr. 2005, 14:09
par Justone
Ok, alors soit il manque encore des bouts de code, soit le problème est le suivant:
Tu fais bien exécuter la fonction de recherche récursive, mais dans ta boucle d'affichage, je ne vois aucun appel au résultat. Ton appel recurse_dir($dossier); devrait peut-être bien être effectué à l'intérieur de cette boucle, non ?
Je pense que c'est plutot ta deuxieme pensée qui est exacte car cette je m'en sert autre part et elle fonctionne trés bien.
Le problème c'est que je ne vois pas trop ou l'appeler et comment en faire un affichage??
T'aurais pas une idée?
C'est justement ce que je demande!!!
Pour info : c'est une methode post
Posté : 27 avr. 2005, 14:14
par zeus
Si j'ai bien compris, tu cherche où afficher ou bien où utiliser le résultat de ta recherche récursive, c'est ça ?
Si c'est ça, utilise cette fonction :
function recurse_dir($dir)
{
global $i, $file_list;
if ($dp = opendir($dir))
{
while ($file = readdir($dp))
{
if (($file != ".") && ($file != ".."))
{
$tmp = $dir."/".$file;
echo $tmp."<br>";
if (is_dir($tmp))
{
recurse_dir($tmp, $file) ;
}
}
}
}
}
Posté : 27 avr. 2005, 14:18
par Justone
Merci mais ca revient a mon 3eme post.
Cette fonction permet de lister tous les fichiers du dossier (et des sous dossier).
Moi je voudrais savoir comment faire pour afficher tous ces fichiers car j'ai essayé mais je n'y arrive pas.
Merci...
Posté : 27 avr. 2005, 14:20
par zeus
function recurse_dir($dir)
{
global $i, $file_list;
if ($dp = opendir($dir))
{
while ($file = readdir($dp))
{
if (($file != ".") && ($file != ".."))
{
$tmp = $dir."/".$file;
echo $tmp."<br>";
if (is_dir($tmp))
{
recurse_dir($tmp, $file) ;
}
}
}
}
}
J'ai enlevé le stockage du fichier dans le tableau et j'ai rajouté l'affichage du fichier actuel !!!! C'est plus ta fonction de départ
Posté : 27 avr. 2005, 14:23
par Justone
oups!!
ba ca marche pas, ca change rien (au niveau affichage) par rapport a l'autre fonction)...