Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
409 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  recherche par date de modif

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

recherche par date de modif

n°1059527
JustOne72
Posté le 25-04-2005 à 11:14:59  profilanswer
 

Alors voila,
 
Je voudrais réaliser un moteur de recherche par date de dernière modification
Aprés de longues recherches sur le net, je n'ai pas trouvé d'aide sur ce type de script.
 
J'ai écris une page du style :
Recherche à partir du : "l'utilisateur choisit la date"
 
Je voudrais savoir comment faire pour récupérer la date choisit par l'utilisateur et la "comparer" avec la date de dernière modofication de tous les fichiers présent dans un répertoire voulue et retourner uniquement les fichiers correspondant.
 
Merci pour vore aide

mood
Publicité
Posté le 25-04-2005 à 11:14:59  profilanswer
 

n°1059548
Berceker U​nited
PSN : berceker_united
Posté le 25-04-2005 à 11:32:50  profilanswer
 

Tu as une fonction qui permet de savoir la date de modification d'un fichier et derniere consultation de fichier. regarde dans les fonctions file system.

n°1059744
JustOne72
Posté le 25-04-2005 à 14:22:48  profilanswer
 

voila le script que j'ai écris :

Code :
  1. $dossier=opendir('mondossier/');
  2. while($fichier=readdir($dossier))
  3. {
  4.     if($fichier!=='.' AND $fichier !=='..' AND filemtime($fichier)>$date_derniere_modif) //la fonction is_file n'a pas l'air de fonctionner correctement...
  5.     {
  6.           echo $fichier;
  7.     }
  8. }
  9. closedir($dossier);


 
Le problème c'est que ca ne fonctionne toujours pas et je ne comprends pas pkoi!!!
Je pense que ca vient peut etre de la date que doit rentré l'utilisateur.
Sous quelle forme faut-il entrer la date voulue pour que celle ci soit "comparé"??
 
Merci...

n°1059762
KangOl
Profil : pointeur
Posté le 25-04-2005 à 14:29:43  profilanswer
 

baka !!
faut lui passer le chemin complet a filemtime :o


---------------
Nos estans firs di nosse pitite patreye...
n°1059787
JustOne72
Posté le 25-04-2005 à 14:40:38  profilanswer
 

Je pense en fait qu'il faut que je convertisse la date au format numérique (avec la fonction mktime)...

n°1059789
KangOl
Profil : pointeur
Posté le 25-04-2005 à 14:41:06  profilanswer
 

avec le timestamp :o


---------------
Nos estans firs di nosse pitite patreye...
n°1059837
JustOne72
Posté le 25-04-2005 à 15:01:38  profilanswer
 

ca fonctionne tjs pas?
 
qqn sait comment je dois faire pour convertir la date??
 
Merci d'avance

n°1059890
neonesc
OUPS !
Posté le 25-04-2005 à 15:19:19  profilanswer
 

Code :
  1. $dossier=opendir('mondossier/');
  2. while($fichier=readdir($dossier))
  3. {
  4.     if($fichier!=='.' AND $fichier !=='..' AND filemtime($fichier)>$date_derniere_modif) //la fonction is_file n'a pas l'air de fonctionner correctement...
  5.     {
  6.           echo $fichier;
  7.     }
  8. }
  9. closedir($dossier);


 
C'est pas un peu mieux comme ça  :wahoo:  
 
if($fichier!= '.' && $fichier != '..' && filemtime($fichier)>$date_derniere_modif)  
    {
          echo $fichier;
    }

n°1059904
JustOne72
Posté le 25-04-2005 à 15:27:14  profilanswer
 

oui merci, je l'avais deja corrigé
 
mon problème est que je rentre une date et je n'ai rien en retour
 
je voudrais savoir sous quelle format je dois rentrer la date et comment la convertir pour que mon script fonctionne??
 
merci pour votre aide...

n°1059942
JustOne72
Posté le 25-04-2005 à 15:48:21  profilanswer
 

Personne pour m'aider??

mood
Publicité
Posté le 25-04-2005 à 15:48:21  profilanswer
 

n°1059983
JustOne72
Posté le 25-04-2005 à 16:09:38  profilanswer
 

Code :
  1. <?php
  2. function MyDateToUnixDate($date_derniere_modif)
  3. {
  4.  $Year = substr($date_derniere_modif, 0, 4);
  5.  $UnixStart=1970;
  6.  while($Year!=$UnixStart)
  7. {
  8.   if(date("L", strtotime("$UnixStart"."0101" ))=1)
  9.   {
  10.    $NbDays=31622400;
  11.  }
  12.   else
  13.  {
  14.   $NbDays=31536000;
  15.  }
  16.   $YearInSec = $YearInSec+$NbDays;
  17.   $UnixStart++;
  18.  }
  19.  $Month = substr($date_derniere_modif, 5, 2);
  20.  $MonthDiff = $Month-1;
  21.  $MonthInSec = $MonthDiff*86400*30.5;
  22.  $Day = substr($date_derniere_modif, -2);
  23.  $DayInSecond = $Day*86400;
  24.  $UnixTime = $YearInSec+$MonthInSec+$DayInSecond ;
  25.  return $UnixTime;
  26. }
  27. ?>
  28. <?php
  29. MyDateToUnixDate();
  30. $dossier=opendir('/wwwSiteIntranet/EDC/Documents/Documentations/');
  31. while($fichier=readdir($dossier))
  32. {
  33.     if($fichier!= '.' && $fichier != '..' && filemtime($fichier)>$UnixTime) 
  34. //la fonction is_file n'a pas l'air de fonctionner correctement...
  35.     {
  36.           echo $fichier;
  37.     }
  38. }
  39. closedir($dossier);
  40. ?>


 
C'est mon script php
 
Qqn voit d'ou vient mon erreur???
 
Aidez moi... Merci

n°1060378
Berceker U​nited
PSN : berceker_united
Posté le 25-04-2005 à 20:34:03  profilanswer
 

Je crois que tu connais pas trop la fonction date man :/
exemple :

Code :
  1. $Year = substr($date_derniere_modif, 0, 4);


par :

Code :
  1. $Year = date('Y',$date_derniere_modif);


Topic utile


Message édité par Berceker United le 25-04-2005 à 20:36:05
n°1060851
JustOne72
Posté le 26-04-2005 à 09:36:25  profilanswer
 

Bon alors j'ai passé ma soirée à m'arracher les cheveux et j'ai besoin de votre aide (c'est pour un moteur de recherche par date de derniere modification!!)
 
Voici l'HTML :

Code :
  1. <body>
  2. <form action="1.php" method="post">
  3. <div align="center">
  4.   <table>
  5.    <tr>
  6.     Enter a date :
  7.     <input type="text" name="date_derniere_modif">
  8.     <input type="submit" value="Search !" />
  9.    </tr>
  10.   </table>
  11. </div>
  12. </form>
  13. </body>


 
Et voici le PHP :

Code :
  1. <?php
  2. $dossier=opendir('/wwwSiteIntranet/EDC/');
  3. while($fichier=readdir($dossier))
  4. {
  5.     if($fichier!='.' && $fichier !='..' && filemtime('/wwwSiteIntranet/EDC/'.$fichier)>$date_derniere_modif) //la fonction is_file n'a pas l'air de fonctionner correctement...
  6.     {
  7.           echo $fichier;
  8.    echo'<br>';
  9.     }
  10. }
  11. closedir($dossier);
  12. ?>


 
Or lorsque je clique sur Search que j'ai rempli le champ ou non j'obtiens toujours le meme affichage
Voyez-vous mon erreur?
 
De plus sous quelle forme faut-il rentrer la date dans le champ du formulaire?
 
Merci d'avance...

n°1060914
JustOne72
Posté le 26-04-2005 à 10:29:29  profilanswer
 

up

n°1061044
nORKy
Grmmph...
Posté le 26-04-2005 à 12:04:49  profilanswer
 

tu rentres la date comment dans ton formulaire ???
car filemtime renvoi un timestamp et donc, ne sera jamais égal à ce que tu rentre dans ton formulaire !
utilise date pour formater ce que te renvoi filemtime
http://fr.php.net/manual/fr/function.date.php
ou alors utilise mktime pour convertir ton formulaire en timestamp
http://fr.php.net/manual/fr/function.mktime.php

n°1061048
JustOne72
Posté le 26-04-2005 à 12:07:27  profilanswer
 

Pour toi mon formulaire et mon script php sont bon?
 
C'est juste un probleme du format de la date qu'on rentre??

n°1061067
nORKy
Grmmph...
Posté le 26-04-2005 à 12:17:54  profilanswer
 

beh, test avec :
echo "$date_derniere_modif ".filemtime('/wwwSiteIntranet/EDC/'.$fichier);
 
tu verras pas toi meme que les formats sont complètements différents. Lis le man de filemtime ! (je l'ai poster au dessus)

n°1061079
JustOne72
Posté le 26-04-2005 à 12:26:50  profilanswer
 

OK!
Merci pour ton aide...

n°1061107
cerel
Posté le 26-04-2005 à 13:05:54  profilanswer
 

C'est quoi la valeur de ton "register_global" ?
Car si c'est a off, tu dois utiliser $_POST['date_derniere_modif'] au lieu de $date_derniere_modif.
 
Je te recommande vivement de metre register_global a off si c'est n'est pas sa valeur.

n°1061151
JustOne72
Posté le 26-04-2005 à 13:32:42  profilanswer
 

Dsl pour la question
mais ou change t on la valeur de register_global??

n°1061176
nORKy
Grmmph...
Posté le 26-04-2005 à 13:41:01  profilanswer
 

php.ini

n°1061314
JustOne72
Posté le 26-04-2005 à 14:54:55  profilanswer
 

Que pensez vous de cette fonction pour convertir une date du type "2004-05-09" en timestamp unix.  
 

Code :
  1. function MyDateToUnixDate($DateMysql){
  2. $Year = substr($DateMysql, 0, 4);
  3. $UnixStart=1970;
  4. while($Year!=$UnixStart){
  5. if(date("L", strtotime("$UnixStart"."0101" ))==1)
  6. {$NbDays=31622400;}
  7. else {$NbDays=31536000;}
  8. $YearInSec = $YearInSec+$NbDays;
  9. $UnixStart++;
  10. }
  11. $Month = substr($DateMysql, 5, 2);
  12. $MonthDiff = $Month-1;
  13. $MonthInSec = $MonthDiff*86400*30.5;
  14. $Day = substr($DateMysql, -2);
  15. $DayInSecond = $Day*86400;
  16. $UnixTime = $YearInSec+$MonthInSec+$DayInSecond ;
  17. return $UnixTime;
  18. }


n°1061420
JustOne72
Posté le 26-04-2005 à 15:33:51  profilanswer
 

up

n°1061446
KangOl
Profil : pointeur
Posté le 26-04-2005 à 15:48:32  profilanswer
 

utilise plutot strtotime
 

strtotime("05/14/82" );


 
mais le probleme c'est que la date doit etre au format américain : mm/dd/yy(yy)


---------------
Nos estans firs di nosse pitite patreye...
n°1061447
cerel
Posté le 26-04-2005 à 15:48:48  profilanswer
 

Regarde ca : http://forum.hardware.fr/forum2.ph [...] 3#t1052122
 
Tu te compliques la vie :

Code :
  1. function taDateToTimestamp($date) {
  2.   $timestamp = -1;
  3.   list($annee, $mois, $jour) = sscanf($date, "%d-%d-%d" ); // exemple : 2004-12-23
  4.   // un petit test pour verifier que la date est bonne
  5.   if (checkdate($mois,$jour,$annee)) {
  6.     // la date est bonne
  7.     // creation de la date avec mktime
  8.     $timestamp = mktime(0,0,0,$mois, $jour, $annee);
  9.   } else {
  10.     $timestamp=-1;
  11.   }
  12.   return $timestamp;
  13. }


Message édité par cerel le 26-04-2005 à 16:41:12
n°1061511
JustOne72
Posté le 26-04-2005 à 16:31:48  profilanswer
 

Excusez moi d'insister
Mais mon code PHP doit correspondre a ca non??

Code :
  1. <?php
  2. function taDateToTimestamp($date_derniere_modif) {
  3.   $timestamp = -1;
  4.   list($annee, $mois, $jour) = sscanf($date_derniere_modif, "%d-%d-%d" ); // exemple : 2004-12-23  
  5.   // un petit test pour verifier que la date est bonne  
  6.   if (checkdate($mois,$jour,$annee)) {
  7.     // la date est bonne  
  8.     // creation de la date avec mktime  
  9.     $timestamp = mktime(0,0,0,$mois, $jour, $annee);
  10.   } else {
  11.     timestamp=-1;
  12.   }
  13.   return timestamp;
  14. }
  15. $dossier=opendir('/wwwSiteIntranet/EDC/');
  16. while($fichier=readdir($dossier))
  17. {
  18. if($fichier!='.' && $fichier !='..' && filemtime('/wwwSiteIntranet/EDC/'.$fichier)>$timestamp)
  19.     {
  20.  if (file_exists($fichier))
  21.  {
  22.       echo "$fichier  a été modifié le : " . date ("F d Y H:i:s.", filemtime($fichier));
  23.   echo '<br>';
  24.  }
  25.     }
  26. }
  27. closedir($dossier);
  28. ?>


 
Dans le formulaire j'écris par ex 2005-04-22
 
Et j'obtiens une page blanche!!
 
Je ne vois pas ou j'ai commis une erreur!
 
Et vous??
 
Merci

n°1061521
cesarr89
Posté le 26-04-2005 à 16:35:46  profilanswer
 

Ta essayé un echo de la date transformée?
Ta vérifié que y'avais des fichiers avec comme date de modification la date entrée?

n°1061532
cerel
Posté le 26-04-2005 à 16:39:44  profilanswer
 

Comment fais-tu appel a "taDateToTimestamp" ?
 
D'ou viens ta variable "$timestamp" ?
 
Tu devrais inverser le "if (file_exists($fichier))" et le "filemtime('/wwwSiteIntranet/EDC/'.$fichier)>$timestamp)".
Faut d'abord verifier que le fichier exsite, avant de vouloir savoir quand il a ete modifie pour la derniere fois.
 
Il y avait des pieges dans le code que je t'ai donne (vi c'etait des pieges et non des erreurs :p).
J'ai edite mon msg.


Message édité par cerel le 26-04-2005 à 16:40:58
n°1061542
JustOne72
Posté le 26-04-2005 à 16:44:18  profilanswer
 

J'ai fait ca mais ca marche tjs pas!!  :cry:  

Code :
  1. <?php
  2. function taDateToTimestamp($date_derniere_modif) {
  3.   $timestamp = -1;
  4.   list($annee, $mois, $jour) = sscanf($date_derniere_modif, "%d-%d-%d" ); // exemple : 2004-12-23  
  5.   // un petit test pour verifier que la date est bonne  
  6.   if (checkdate($mois,$jour,$annee)) {
  7.     // la date est bonne  
  8.     // creation de la date avec mktime  
  9.     $timestamp = mktime(0,0,0,$mois, $jour, $annee);
  10.   } else {
  11.     timestamp=-1;
  12.   }
  13.   return timestamp;
  14. }
  15. taDateToTimestamp();
  16. $dossier=opendir('/wwwSiteIntranet/EDC/');
  17. while($fichier=readdir($dossier))
  18. {
  19. if (file_exists($fichier))
  20.     {
  21.  if($fichier!='.' && $fichier !='..' && filemtime('/wwwSiteIntranet/EDC/'.$fichier)>$date_derniere_modif)
  22.  {
  23.       echo "$fichier  a été modifié le : " . date ("F d Y H:i:s.", filemtime($fichier));
  24.   echo '<br>';
  25.  }
  26.     }
  27. }
  28. closedir($dossier);
  29. ?>

n°1061551
cesarr89
Posté le 26-04-2005 à 16:49:09  profilanswer
 

Juste une question, ca sert à quoi la ligne 17 sans paramètre?
C'est pas une question con, c'est juste pour savoir.

n°1061627
Berceker U​nited
PSN : berceker_united
Posté le 26-04-2005 à 17:30:14  profilanswer
 

Oui parce que là il se balade tous seul là :/

n°1061635
cesarr89
Posté le 26-04-2005 à 17:35:08  profilanswer
 

Je pense que déjà faut qu'il s'occupe de ca, parce que du coup $date_derniere_modif vaut rien du tout

n°1061646
JustOne72
Posté le 26-04-2005 à 17:41:42  profilanswer
 

Code :
  1. <?php
  2. function taDateToTimestamp($date) { 
  3.   $timestamp = -1; 
  4.   list($annee, $mois, $jour) = sscanf($date, "%d-%d-%d" ); // exemple : 2004-12-23   
  5.   // un petit test pour verifier que la date est bonne   
  6.   if (checkdate($mois,$jour,$annee)) { 
  7.     // la date est bonne   
  8.     // creation de la date avec mktime   
  9.     $timestamp = mktime(0,0,0,$mois, $jour, $annee); 
  10.     } else
  11.       $timestamp=-1; 
  12.     } 
  13.   return $timestamp; 
  14. }
  15. //$date_derniere_modif = $_GET['date_derniere_modif'];  
  16. //$fichier = $_GET['fichier'];  
  17. $timestamp = taDateToTimestamp($date_derniere_modif);
  18. $dossier=opendir('/wwwSiteIntranet/EDC/');
  19. while($fichier=readdir($dossier))
  20. {
  21.     if (file_exists($fichier)) 
  22.     {
  23.       if($fichier!='.' && $fichier !='..' && filemtime('/wwwSiteIntranet/EDC/'.$fichier)>$date_derniere_modif)
  24.         {
  25.            echo "$fichier  a été modifié le : " . date ("F d Y H:i:s.", filemtime($fichier));
  26.            echo '<br>';
  27.         }
  28.      }
  29. }
  30. closedir($dossier);
  31. ?>


Je tape la date sous la forme 2005-04-24 et il me ressort tous les fichiers!!
C'est bien sous cette forme qu'il faut l'entrer non?

n°1061648
cesarr89
Posté le 26-04-2005 à 17:44:37  profilanswer
 

non, c'est sous la forme 04/26/2005, enfin je croie mais je suis pas sur de moi.

n°1061651
JustOne72
Posté le 26-04-2005 à 17:49:20  profilanswer
 

Il me retourne tous les fichiers a chaque fois!!
Personne ne sait??

n°1061653
KangOl
Profil : pointeur
Posté le 26-04-2005 à 17:51:05  profilanswer
 

faudrait peut etre voir comment fonctionne une fonction !
tu récuperes une valeur que tu n'utilises meme pas...
et pour info, la format est indiqué dans le code lui meme.


---------------
Nos estans firs di nosse pitite patreye...
n°1061654
cesarr89
Posté le 26-04-2005 à 17:51:24  profilanswer
 

mais tu fais le echo filetime($fichier), il t'ecrit quoi ?

n°1061657
cesarr89
Posté le 26-04-2005 à 17:52:29  profilanswer
 

oui c'est vrai, tu as raison KangOl, faudrait peut être qu'il soit un peu plus attentif à ce qu'il fait.

n°1061662
JustOne72
Posté le 26-04-2005 à 18:01:43  profilanswer
 

Ba c'est ce que je disais il faut taper la date sous la forme 2005-04-24 !!!

n°1061665
cesarr89
Posté le 26-04-2005 à 18:03:53  profilanswer
 

Ta lu ce qui est ecris?
Tu stocke le resultat de ta fonction dans une variable que tu utilises pas, y'a pas comme un problème?

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  recherche par date de modif

 

Sujets relatifs
Date() , formatter une dateprobleme : concatenation + ftp + date
ADDITION ET SOUSTRACTION DE DATE EN SQLPb de format de date d'une TextBox vers une cellule excel
recherche images des pieces de l'echiquierrecherche dans tableau
Saleté de ' pour rechercheRecherche développeur pour réaliser des fonds d'écrans animé
Recherche de dictionnaire d'ouverture du bridgeRecherche !
Plus de sujets relatifs à : recherche par date de modif


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR