Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    scandir() - ordinarli per data?

    Salve a tutti e buon pomeriggio.
    Sono alle prese con uno script che "scansiona" i file di una cartella e controlla se ce ne sono di nuovi (tramite db). Stavo studiando la funzione scandir

    array scandir ( string $directory [, int $sorting_order = SCANDIR_SORT_ASCENDING [, resource $context ]] )

    e mi chiedevo se era in qualche modo possibile dire alla funzione di ordinarmi i file per data di ultima modifica.. Così facendo i primi risultati dell'array sarebbero gli eventuali file inseriti per ultimi.

    C'è un modo per fare ciò oppure gli si può dire soltanto ascending o descending?

    Spero di essermi spiegato in un italiano decente

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    la funzione che citi non ha un'opzione come quella desiderata... puoi però semplicemente fare un loop sulle varie entrate e riordinarle tu successivamente

  3. #3
    come faccio a "riordinarle successivamente"? spiegati meglio per favore

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Codice PHP:
    <?php
    $files 
    = array();
    if (
    $handle opendir('.')) {
        while (
    false !== ($entry readdir($handle))) {
            if (
    $entry != "." && $entry != "..") {
                
    $files[filemtime($entry)][] = $entry;
            };
        };
        
    closedir($handle);
    };
    ksort ($files);
    ?>
    ...da verificare... inoltre se c'è una cartella base bisogna usare quella in apertura e "aggiungerla" al nome del file ($entry).

  5. #5
    ho risolto così:

    Codice PHP:
    $dir='../musica/'
    $files = array(); 
    $open=opendir($dir); 
    $handle scandir('../musica/'); f

    foreach ($handle as $current

        if (
    $current != "." && $current != ".."
            { 
    $time=filemtime($dir.$current); 
               
    $files[$time]=$current
             } 


    closedir($open); 
    asort ($files); 
    Grazie mille per l'aiuto

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    la $dir aggiuntiva è quella di cui parlavo, mentre per l'ordinamento dovresti usare ksort perchè se si usa come indice il timestamp bisogna riordinare secondo tale parametro... prova un po', cmq

  7. #7
    usando ksort me li ordinava da quello modificato meno di recente in poi.. io volevo l'ordine inverso e l'ho ottenuto così !

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    376
    ho provato ad usare questo codice con la funzione glob ma non ordina per data:

    Codice PHP:
    foreach(glob("$directory/*.*") as $filename) {
       if (
    $filename == '.' || $filename == '..') continue;
            
    $nome basename($filename);
        
    $data filemtime($filename); 
           echo 
    "nome: " $nome " data: " $data ";

    Dove dovrei fare l'ordinamento per data usando ksort o asort?

  9. #9
    prova il mio e poi mi dici, è già pronto devi solo cambiare $dir

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    376
    ma come fai a farti stampare l'elenco dei file (nome e data)?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.