Rechercher les 15 dernières images du site

dth_2003 Messages postés 23 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 19 septembre 2010 - 8 sept. 2006 à 19:18
dth_2003 Messages postés 23 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 19 septembre 2010 - 27 sept. 2006 à 18:46
Bonjour a tous,

Voila je débute toujours en php, j'ai déja réaliser quelque petit truc plus ou moins complexe grace a votre aide direct ou indirect via vos sources. Là en ce moment je me familiarise avec la manipulation de dossier et de fichier en php, enfin j'essai :)

Ma question est la suivante, j'aimerais retrouver les 15 dernières images ajouter sur le site (pas de mysql) afin de placer le chemin permettant de les afficher dans un fichiers a part prévus a cet effet !!!!! J'espère que vous avez compris.

Si quelqu'un a une idée, ou connaitrait une source qui m'aurais échapper, merci d'avance.

Dth_2003[?]

9 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
9 sept. 2006 à 01:38
hello,

quand tu parcours ton répertoire d'upload, t peux utiliser la fonction filemtime () qui te donnera la date de modification d'un fichier.
Si tu stockes tout les fichiers et cette date dans un tableau, tu peux ensuite le trier, et ressortir les 15 images les plus récentes.
0
dth_2003 Messages postés 23 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 19 septembre 2010
24 sept. 2006 à 16:47
Bonjour,

Bon j'ai un peu laissé tomber jusqu'a maintenant par manque de temps, on en est tous là. Mais j'vais 5 minutes aujourd'hui et je regardais un pour voir comment procéder a ma recherche des 15 dernières images.

Je suis tomber sur se scripts sur le site http://www.phpcs.com/codes/COMPTAGE-FICHIERS_24068.aspx et je pense pouvoir repartir de là pour faire mon bonheur. Plutôt que de compter les fichiers ayant la bonne extension, je placerais le chemin d'accès et la date avec filemtime (). Pour faire comme dit malalam.

Je suppose que je vais y arriver. Je dois encore un peu bosser mes array. Tiens une question tout de même, il n'existe pas de fonction que permette le tri par date ? ou si ?

Si vous avez des conseils vis a vis de mon point de départ, je suis tout ouie.

Dth_2003[?]
0
dth_2003 Messages postés 23 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 19 septembre 2010
24 sept. 2006 à 20:55
Bon pour le Tri c'était une bête question puisque les date reprise via cette fonction nous donne le nombre de seconde depuis je sais plus quand en 1970. Donc c'est une valeur chiffrer, il suffira de regarder qui sont les 15 plus grandes.

Mon vrai problème se sont les array(). Dans l'exemple que j'ai pris comme point de départ il ne fait qu'afficher le chemin des fichiers ce qui est relativement simple (je dis bien relativement, j'y aurais pas penser tout seul). Mais le problème ce que moi je dois mettre a chaque fois le chemin et la date (donc un array) dans un autre array reprenant l'ensemble des fichiers. Là ou j'en perd mon latin c'est ou on appelle la fonction elle-même en elle (si je peux dire) et la je retourne un array contenant mes arrays dans un arrays, si vous voyer ce que je veux dire ??? non? cela tombe bien moi non plus, je crois que je vais aller dormir j'y verrais peut être plus clair un autre jour.

Si vous avez des pistes, please help me !!

Dth_2003[?]
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 sept. 2006 à 08:10
tu concatènes, par exemple, le timestamp obtenu avec filemtime, et le nom du fichier (obtenu avec basename($sFichier)). Ainsi, tu peux tout mettre dans un tableau simple, et trier facilement puisque les valeurs du tableau commencent par un entier (le timestamp).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dth_2003 Messages postés 23 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 19 septembre 2010
25 sept. 2006 à 17:16
Pas bête je vais regarder cela .....

Dth_2003[?]
0
dth_2003 Messages postés 23 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 19 septembre 2010
26 sept. 2006 à 18:49
Bon pour faire mes testes je suis passer par le système avec la concatenation, mais une fois le système ok, je suis repasser avec le tableau multi. Donc voici le résultat, c'est surement pas top pour un gars qui s'y connais mais bon pour moi, en l'état actuel c'est fonctionnel :)


Voici mon code :


<?php
function search_files($folder, $ext, $subfolders)
{
   $tab = array(); $i=0;
  
   // on rajoute le / à la fin du nom du dossier s'il ne l'est pas
   if(substr($folder, -1) != '/') $folder .= '/';
   
   // $ext est un tableau?
   $array = false;
   if(is_array($ext)) $array = true;
 
   // ouverture du répertoire
   $rep = @opendir($folder);
   if($rep)
   {      
     // tant qu'il y a des fichiers
     while($file = readdir($rep))
     {
      // répertoires . et ..       if($file '.' || $file '..')
  continue;
 
   // si c'est un répertoire et qu'on peut le lister
   if(is_dir($folder.$file) && $subfolders)
   {
  // on appelle la fonction
  $res = search_files($folder.$file, $ext, 1);
  $u=0;
  if($res)
  {
   $nbr = count($res);
   for($u=0;$u<$nbr;$u++)
   {
     $tab[$i] = $res[$u]; $i++;
   }
  }
      }
   // vérification de l'extension avec $array = 0
      else if(!$array && substr($file, -strlen($ext)) == $ext)
   {
   $tab[$i] = array(filemtime($folder.$file), $folder.$file);
   $i++;
      }
   // vérification de l'extension avec $array = true
      else if($array && in_array(substr($file, strrpos($file, '.') + 1), $ext))
   {
   $tab[$i] = array(filemtime($folder.$file), $folder.$file);
   $i++;
      }
     }
   }else echo 'Impossible d\'ouvrir le répertoire';
   // fermeture du rep
   closedir($rep);
   return $tab;
}


$dossier = ".";
$ext= array("gif","jpg","png","bmp");
$tab = search_files($dossier,$ext,1);
print_r($tab);
?>


Bon maintenant j'ai mon array avec tout les liens et tout les date de modif, je vais pouvoir me lancer dans le reste du problème !!

Dth_2003[?]
0
dth_2003 Messages postés 23 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 19 septembre 2010
26 sept. 2006 à 21:33
Bon voila je suis parvenu a récuperer mes 15 dernières photos du site (en tout cas leur chemin) maintenant ne me restera plus qu'a arriver a ce que mon animation flash puisse venir les chercher si je puis dire.

<?php
function search_files($folder, $ext, $subfolders)
{
   $tab = array(); $i=0;
  
   // on rajoute le / à la fin du nom du dossier s'il ne l'est pas
   if(substr($folder, -1) != '/') $folder .= '/';
   
   // $ext est un tableau?
   $array = false;
   if(is_array($ext)) $array = true;
 
   // ouverture du répertoire
   $rep = @opendir($folder);
   if($rep)
   {      
     // tant qu'il y a des fichiers
     while($file = readdir($rep))
     {
      // répertoires . et ..       if($file '.' || $file '..')
  continue;
 
   // si c'est un répertoire et qu'on peut le lister
   if(is_dir($folder.$file) && $subfolders)
   {
  // on appelle la fonction
  $res = search_files($folder.$file, $ext, 1);
  $u=0;
  if($res)
  {
   $nbr = count($res);
   for($u=0;$u<$nbr;$u++)
   {
     $tab[$i] = $res[$u]; $i++;
   }
  }
      }
   // vérification de l'extension avec $array = 0
      else if(!$array && substr($file, -strlen($ext)) == $ext)
   {
   $tab[$i] = array(filemtime($folder.$file), $folder.$file);
   $i++;
      }
   // vérification de l'extension avec $array = true
      else if($array && in_array(substr($file, strrpos($file, '.') + 1), $ext))
   {
   $tab[$i] = array(filemtime($folder.$file), $folder.$file);
   $i++;
      }
     }
   }else echo 'Impossible d\'ouvrir le répertoire';
   // fermeture du rep
   closedir($rep);
   return $tab;
}


function compare ($ch1, $ch2)
{
  if($ch1[0] == $ch2[0]) return 0;
  else if ($ch1[0] < $ch2[0]) return 1;
  else return -1;
}


$dossier = ".";
$ext= array("gif","jpg","jpeg","png","bmp","GIF","JPG","JPEG","PNG","BMP");
$tab = search_files($dossier,$ext,1);
usort($tab, 'compare');
for($x=0;$x<16;$x++) {echo $tab[$x][1];echo '
';}

Dth_2003[?]
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
27 sept. 2006 à 08:07
Tu peux fonctionner comme avec CURL : tu fais un simple echo de tes images, séparées par des ; par exemple, et flash récupère la chaîne et la parse.
0
dth_2003 Messages postés 23 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 19 septembre 2010
27 sept. 2006 à 18:46
Heu ...... attend là, je te suis plus !!! CURL c'est bien de libcurl que tu parle ou d'autre chose ? je connais pas trop le principe de s'te bazard. Je pensais appeller mon script PHP via mon animation via un loadvar, ou un truc comme ça.

Sinon, tu pourrais détailler un peu ton idée, j suis friand ds nouvelle choses !

Dth_2003
0
Rejoignez-nous