Affichage fichiers triés par date de modif dans tableau

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Affichage fichiers triés par date de modif dans tableau

Re: Affichage fichiers triés par date de modif dans tableau

par Seboochoo » 04 oct. 2010, 17:09

Bonjour et merci Stealth35 pour ta réponse

Mais j'obtiens toujours une phrase comme celle-ci :

Code : Tout sélectionner

Array ( [0] => sujets/sujet12.txt [1] => sujets/sujet11.txt [2] => sujets/sujet10.txt [3] => sujets/sujet9.txt [4] => sujets/sujet8.txt [5] => sujets/sujet7.txt [6] => sujets/sujet6.txt [7] => sujets/sujet5.txt [8] => sujets/sujet4.txt [9] => sujets/sujet1.txt [10] => sujets/sujet3.txt [11] => sujets/sujet2.txt )
Je ne veux pas ce "mode" d'affichage
Je souhaite mettre le résultat sous forme de tableau comme sur la photo 8-|

Pour être simple, je veux rajouter un bout de code comme tu m'as fournis à celui-ci qui marche ( affichage tableau comme sur la photo ) mais qui ne trie pas :
    <?php
    $page = 1;
    $dir2 = opendir("sujets/");
    
    $tableau = array();
    $i=0;
    while ($File = readdir($dir2)){
      if($File != "." && $File != ".." && $File != "") {
        $tableau[] =  "sujets/$File";
      }
            $i++;
        }
    closedir($dir2);          
    rsort($tableau);
    $Max = count($tableau);
    $pagemin = $page*$nbsujet-$nbsujet;
    $nbpage = $Max/$nbsujet;
    $nbpage = ceil($nbpage);
    if ($page == $nbpage) {$pagemax = $Max;}
    else {$pagemax = $page*$nbsujet;}
    if ($Max != 0){   
      for($i = $pagemin; $i != $pagemax; $i++){
        include "$tableau[$i]";
      }
        }
        ?>
Perso je n'ai toujours pas trouvé mais je persiste... :evil:

Re: Affichage fichiers triés par date de modif dans tableau

par stealth35 » 04 oct. 2010, 16:45

comme ca
$files = glob('sujets/*.txt');

function sorttime($a, $b)
{
    $timea = filemtime($a);
    $timeb = filemtime($b);
    
    if($timea == $timeb)
    {
        return 0;
    }
    
    return ($timea < $timeb) ? -1 : 1;
}

usort($files, 'sorttime');

$files = array_reverse($files);
print_r($files);

Re: Affichage fichiers triés par date de modif dans tableau

par Seboochoo » 04 oct. 2010, 16:25

Up !!! :agenouille:

Affichage fichiers triés par date de modif dans tableau

par Seboochoo » 04 oct. 2010, 12:54

Bonjour à tous

Voici mon problème : Je créé un forum en php, sans base de données, qui manipule des fichiers texte. Sur ma page d'accueil, la liste des posts s'affiche comme dans tous forums :
Image

Pour un exemple simple, sur mon serveur j'ai 4 fichiers nommés "1.txt", "2.txt", "3.txt" et "4.txt" dans un dossier "sujets".
Voici le code qu'il y a dans chaque fichier txt :

Code : Tout sélectionner

<table id='tablesujet'> <tr> <td class='tdsujet'><a href='sujet.php'>&nbsp;test</a><br> <td class='tdnbrep'>Rep : 0</td> <td class='tdrep'>Aucune réponse</td> </tr> </table>
Avec ce code, mes 4 fichiers s'affichent dans l'ordre = "1.txt", "2.txt", "3.txt" et "4.txt" ( de bas en haut ) :

Code : Tout sélectionner

<html> <body> <table width="900" cellpadding="0" cellspacing="0"> <?php $page = 1; $dir2 = opendir("sujets/"); $tableau = array(); $i=0; while ($File = readdir($dir2)){ if($File != "." && $File != ".." && $File != "") { $tableau[] = "sujets/$File"; } $i++; } closedir($dir2); rsort($tableau); $nbsujet = 30; $Max = count($tableau); $pagemin = $page*$nbsujet-$nbsujet; $nbpage = $Max/$nbsujet; $nbpage = ceil($nbpage); if ($page == $nbpage) {$pagemax = $Max;} else {$pagemax = $page*$nbsujet;} if ($Max != 0){ for($i = $pagemin; $i != $pagemax; $i++){ include "$tableau[$i]"; } } ?> </table> </body> </html>
Or mon problème est le suivant : Si je modifie par exemple le fichier "3.txt", je voudrais qu'il remonte en tête de liste sans changer de nom.
J'ai essayé ceci, ça fonctionne :

Code : Tout sélectionner

$files = glob( 'sujets/*.txt' ); array_multisort( array_map( 'filemtime', $files ), SORT_NUMERIC, SORT_DESC, $files); print_r( $files );
...mais je n'arrive qu'à avoir ce style de phrase dans ma page d'accueil :
Array ( [0] => sujets/sujet3.txt [1] => sujets/sujet1.txt [2] => sujets/sujet2.txt [3] => sujets/sujet4.txt )

et non des tableaux comme la première version qui ne trie pas par date de modification

Je galère à intégrer le code pour trier les fichiers au script qui est en début de ce message, si quelqu'un pouvait m'éclairer ou me conseiller, ceci m'aiderait grandement dans l'avancement de ce forum.
Je continue à effectuer des recherches dans le code pour trouver cette fichue solution ! :evil:

Merci à vous ne serait-ce que d'avoir lu ce post.