Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617

    Leggere un determinato numero di file in una cartella!

    So di averlo fatto una volta ma non mi ricordo come e non riesco più a trovare la soluzione.
    Stò facendo leggere al mio script i file in una cartella in modo da creare per ogni file un checkbox per selezionarli.
    Ora mi sono reso conto che dopo un po' di tempo questi file saranno tantissimi e quindi sarebbe opportuno far leggere tipo solo gli ultimi 10 file inseriti nella cartella.

    Ma come?

    Vi sposto il codice per farvi capire meglio:

    <div>Seleziona il video Correlato:</div>";
    $percorso=opendir("../filmati/");
    while($file=readdir($percorso)){
    if ( $file == ".." || $file == "." || $file==".DS_Store" || $file==".com.apple.timemachine.supported" || $file=="miniature") {
    continue;
    }


    echo"<div style='float:left;width:150px;border:1px solid green;margin-left:10px;margin-top:10px;height:20px;text-align:center;font-size:14px;'>
    <input type='checkbox' value='$file' name='video'>$file

    </div>";

    }
    Così mi escono tutti i file con il checkbox accanto ma vorrei che tipo dei 20 file presenti nella cartella mi uscissero solo gli unltimi 5 o 10 inseriti.

    Mi ricordo una cosa del tipo infilare tutto in un'array ma non sono sicuro e non mi ricordo bene come crearlo.

    Grazie in anticipo!

  2. #2
    Ciao,
    una soluzione semplice al tuo problema potrebbe essere quella di inserire in un array associativo i file nel seguente modo:
    alla chiave fai corrispondere la data dell'ultima modifica (in formato timestamp quindi secondi), al valore fai corrispondere il file, alla fine ordini in modo decrescente per chiavi e stampi il numero di file che ti interessa.

    Segue un esempio di codice:
    arrayFile = array();
    while ( $file = readdir($percorso) ) {
    if ($file == ".." || $file == "." || $file == ".DS_Store" || $file == ".com.apple.timemachine.supported" || $file == "miniature") {
    continue;
    } else {
    $arrayFile[filemtime("file/".$file)]=$file; // aggiungiamo il file all'array
    }
    }
    krsort($arrayFile); // ordiniamo l'array per chiave in ordine decrescente

    $contatore = 0;
    $numFileDaStampare= 5;
    foreach ($arrayFile as $file) {
    if($contatore == 5){
    exit();
    }
    $contatore++;
    // istruzioni per stampare le informazioni dei file
    }

    N.B. questo script ha un problema, se due file sono stati creati nello stesso istante (cosa molto poco probabile, ma possibile, perchè parliamo di secondi) il primo file viene persò perchè il nel momento in cui andiamo ad aggiungere all'array il file, la chiave è la stessa e quindi il primo file viene sovrascritto.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

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 © 2024 vBulletin Solutions, Inc. All rights reserved.