Formation Google AnalyticsSavez-vous bien utiliser les outils de mesure d'audience ?
Effectuez-vous un calcul de ROI (Retour sur investissement) pour savoir comment améliorer vos campagnes emarketing ?
Savez-vous utiliser les bons outils pour booster votre taux de transformation ?
La formation Web Analytics de Ranking Metrics, présentée par un expert reconnu officiellement par Google Analytics, vous apportera les réponses à toutes vos questions !
===> Informations et inscriptions.

Lister dossier par ordre de modification

Poster un nouveau sujet Imprimer cette discussion    Forum -> Administration d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
darkjukka
WRInaute impliqué
WRInaute impliqué

Inscrit le: 28 Avr 2007
Messages: 281

URL permanente de ce messagePosté le : Lun Juin 16, 2008 14:07    Sujet du message: Lister dossier par ordre de modification

Bonjour,

Voila, dans la partie admin de mon site je peu uploader des images dans un répertoire et en lister le contenu avec cette fonction :

Code:
function list_files() {
    global $the_path;

        $handle = dir($the_path);
        print "\n      <b>Fichiers uploadés :</b><br />\n      <ul>";
        while ($file = $handle->read()) {
                if (($file != ".") && ($file != "..")) {
                        print "\n       <li><a href=\"http://www.blind-guardian.fr/pics/news/" . $file ."\" target=\"_blank\">http://www.blind-guardian.fr/pics/news/" . $file ."</a> <em>(" . dd(filemtime($the_path.$file)) . ")</em></li>";
           }
        }
        print "\n      </ul>\n      <br /><hr /><br />";
}


Seulement l'affichage se fait par ordre alphabétique et je voudrais le modifier un peu pour le faire apparaitre par ordre de modification seulement je n'ai pas trouvé comment faire.

Si quelqu'un pouvait m'aider cela me simplifierai grandement les choses Smile
 
darkjukka Visiter le site web du posteur
2dm
WRInaute occasionnel
WRInaute occasionnel

Inscrit le: 03 Sep 2002
Messages: 202
Localisation: Irlande - Dublin

URL permanente de ce messagePosté le : Lun Juin 16, 2008 14:34    Sujet du message: Lister dossier par ordre de modification

Et bien, voilà Smile
Code:
<?php
function dir_sort_by_update_date($dir_path, $order=true){
  $dir_cont = scandir($dir_path);
  $dir_tempo = array();
  foreach($dir_cont as $file){
    if($file != '.' && $file != '..'){
      $dir_tempo[$file] = filemtime($dir_path . $file);
    }
  }
  if($order){
    asort($dir_tempo);
  }else{
    arsort($dir_tempo);
  }
  return $dir_tempo;
}
$dir_path = '/home/user/dir/';
$dir_sorted = dir_sort_by_update_date($dir_path);
print_r($dir_sorted);
?>


Le code me parait assez simple et clair. Tu appelles la fonction dir_sort_by_update_date en lui donnant le chemin et éventuellement un boolean pour classer les fichier par ordre croissant/décroissant.

Il me semble facile de le modifier pour pouvoir gérer une arborescence (des sous-dossiers).
Il n'y a pas non plus de gestion de vérification des droits.
 
2dm Visiter le site web du posteur
darkjukka
WRInaute impliqué
WRInaute impliqué

Inscrit le: 28 Avr 2007
Messages: 281

URL permanente de ce messagePosté le : Lun Juin 16, 2008 15:22    Sujet du message: Lister dossier par ordre de modification

Merci mais je dois être très mauvais car je n'arrive pas à le faire fonctionner Confused

J'ai testé directement sur une page brut, en copiant tel quel le code et cela ne marche pas.
 
darkjukka Visiter le site web du posteur
2dm
WRInaute occasionnel
WRInaute occasionnel

Inscrit le: 03 Sep 2002
Messages: 202
Localisation: Irlande - Dublin

URL permanente de ce messagePosté le : Lun Juin 16, 2008 15:46    Sujet du message: Lister dossier par ordre de modification

Tu as bien changé le chemin (variable $dir_path) ?

Si c'est le cas, as-tu un message d'erreur ? Es-tu sur que ton répertoire existe et qu'il y a quelque chose dedans ?
 
2dm Visiter le site web du posteur
darkjukka
WRInaute impliqué
WRInaute impliqué

Inscrit le: 28 Avr 2007
Messages: 281

URL permanente de ce messagePosté le : Lun Juin 16, 2008 15:57    Sujet du message: Lister dossier par ordre de modification

Oui oui, j'ai bien changé le chemin, le dossier existe avec des images dedans et je n'ai aucun message d'erreur, juste une page blanche.
 
darkjukka Visiter le site web du posteur
2dm
WRInaute occasionnel
WRInaute occasionnel

Inscrit le: 03 Sep 2002
Messages: 202
Localisation: Irlande - Dublin

URL permanente de ce messagePosté le : Lun Juin 16, 2008 16:09    Sujet du message: Lister dossier par ordre de modification

T'utilises php5 ?

rajoutes :
Code:

$dirtest = scandir($dir_path);
foreach($dirtest as $dir){
  echo $dir . '<br />';
}
echo is_callable('scandir').'<br />';
echo is_callable('asort').'<br />';
echo is_callable('arsort').'<br />';


à la fin du code et dis moi ce qui s'affiche.
 
2dm Visiter le site web du posteur
darkjukka
WRInaute impliqué
WRInaute impliqué

Inscrit le: 28 Avr 2007
Messages: 281

URL permanente de ce messagePosté le : Lun Juin 16, 2008 16:23    Sujet du message: Lister dossier par ordre de modification

Non je suis sur php4 et j'ai toujours une page blanche.
 
darkjukka Visiter le site web du posteur
darkjukka
WRInaute impliqué
WRInaute impliqué

Inscrit le: 28 Avr 2007
Messages: 281

URL permanente de ce messagePosté le : Lun Juin 16, 2008 17:37    Sujet du message: Lister dossier par ordre de modification

Au final j'ai réussi en fouinant beaucoup plus profond sur google.

Je le met donc pour ceux intéressés, ont ne sait jamais :

Code:
function list_files() {
    global $the_path;
    $rep = $the_path;
    $dir = opendir($rep);
    $toplk = array();
        print "\n      <b>Fichiers uploadés :</b><br />\n      <ul>";
        while ($f = readdir($dir)) {
        if(is_file($rep.$f)) {
        $toplk[$f] = filectime($rep.$f);
        }
    }
    arsort($toplk);
    foreach($toplk as $fichier => $date) {
    print "\n       <li><a href=\"http://www.blind-guardian.fr/pics/news/" .$fichier ."\" target=\"_blank\">http://www.blind-guardian.fr/pics/news/" . $fichier ."</a> <em>(" . dd(filemtime($the_path.$fichier)) . ")</em></li>";
    }
    print "\n      </ul>\n      <br /><hr /><br />";
}
 
darkjukka Visiter le site web du posteur
2dm
WRInaute occasionnel
WRInaute occasionnel

Inscrit le: 03 Sep 2002
Messages: 202
Localisation: Irlande - Dublin

URL permanente de ce messagePosté le : Lun Juin 16, 2008 17:51    Sujet du message: Lister dossier par ordre de modification

une deuxième version qui gère la récursion et qui devrait marcher en php4 :

Code:

<?php
/**
 * $dir should not contain '.' or '..'
 */
function dir_orderby_update_date($dir, $order=true){
  $dir_tempo = array();
  foreach($dir as $file){
    if($file != '.' && $file != '..'){
      $timestamp = filemtime($file);
      if(!$timestamp){
        $timestamp = 0;
      }
      $dir_tempo[$file] = $timestamp;
    }
  }
  if($order){
    asort($dir_tempo);
  }else{
    arsort($dir_tempo);
  }
  return $dir_tempo;
}
function dir_list_stack_call($dir_path, $recursif = true){
  $list_path = array();
  $dir_cont = array();
  $list_path[] = $dir_path;
  $size = 1;
  for($i=0; $i<$size; $i++){
    if (($handle = opendir($list_path[$i])) != false) {
      while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
          if(is_file($list_path[$i] . $file)){
            $dir_cont[] = $list_path[$i] . $file;
          }else if($recursif){
            $list_path[] = $list_path[$i] . $file . '/';
            $size++;
          }
        }
      }
      closedir($handle);
    }
  }
  return $dir_cont;
}
function dir_list_rec_call($dir_path, $recursif = true){
  $dir_cont = array();
  if (($handle = opendir($dir_path)) != false) {
    while (false !== ($file = readdir($handle))) {
      if ($file != "." && $file != "..") {
        if(is_file($dir_path.$file)){
          $dir_cont[] = $dir_path . $file;
        }else if($recursif){
          $dir_cont = array_merge($dir_cont, dir_list($dir_path . $file . '/'));
        }
      }
    }
    closedir($handle);
  }
  return $dir_cont;
}
/**
 * Wrapper used to select how we access recursive directories.
 * $dir_path needs to end with a forward slash '/'.
 **/
function dir_list($dir_path, $recursif = true){
  return dir_list_stack_call($dir_path, $recursif); // we use a stack
  //return dir_list_rec_call($dir_path, $recursif); // we use recursion
}


$dir_path = '/home/xxx/public_html/snippet/';
$dir_unsorted = dir_list($dir_path);

$dir_ordered = dir_orderby_update_date($dir_unsorted);
print_r($dir_ordered);
$dir_ordered_dec = dir_orderby_update_date($dir_unsorted, false);
print_r($dir_ordered_dec);
?>
 
2dm Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Administration d'un site Web Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1 - 
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort