recherche par date de derniere modification

Eléphant du PHP | 335 Messages

27 avr. 2005, 12:14

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...

Mammouth du PHP | 19672 Messages

27 avr. 2005, 12:17

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 :langue:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 335 Messages

27 avr. 2005, 12:18

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

Mammouth du PHP | 19672 Messages

27 avr. 2005, 12:21

$timestamp = taDateToTimestamp($date_derniere_modif);
Ta variable $date_derniere_modif n'est initialisée nulle part...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 335 Messages

27 avr. 2005, 12:23

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!

Mammouth du PHP | 19672 Messages

27 avr. 2005, 12:40

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 ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

27 avr. 2005, 13:58

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?

ViPHP
ViPHP | 2144 Messages

27 avr. 2005, 14:03

Tu récupères la valeur du formulaire pour $date_derniere_modif par Get ou POST ??

Eléphant du PHP | 357 Messages

27 avr. 2005, 14:04

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 ??? :P
Modifié en dernier par seayoung le 27 avr. 2005, 14:09, modifié 1 fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

27 avr. 2005, 14:06

Je voudrais pas dire de bétise, mais tu affiche le résultat de ton parcours recursif OU :?: :?:
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, 14:09

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

27 avr. 2005, 14:14

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) ;
				}
			}
		}
	}
} 
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, 14:18

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...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

27 avr. 2005, 14:20

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
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, 14:23

oups!!

ba ca marche pas, ca change rien (au niveau affichage) par rapport a l'autre fonction)...