Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    5

    Leggere immagini da una directory

    Salve a tutti
    mi chiamo Elena il mio problema è questo:
    dopo tante peripezie sono riuscita a trovare ed adattare uno script che mi consente di leggere da una directory dei files immagini in essa contenute e a visualizzarle in ordine di data creazione
    ecco lo script:


    <?PHP
    $dir="directory_immagini";
    $d = dir($dir);
    $i=0;
    $z=0;
    while ($entry = $d->read()) {
    if($entry != "." && $entry != "..")
    {
    $i++;

    $nome[$i]=$entry;
    $data[$i]=date("YmdHis.", filectime($dir."/".$entry));

    $max=$i;
    }
    }
    array_multisort($data, SORT_DESC, SORT_NUMERIC, $nome);
    //array_multisort($nome, SORT_DESC, SORT_NUMERIC, $data);
    while ($z<$max )
    {
    echo $nome[$z]." ".$data[$z]."
    ";
    $z++;
    }
    ?>


    il problema e che vorrei che mi evidenziasse anche i link delle immagini, cosa che ero riuscita a fare con questo script:


    <?php
    $d = dir("directory_immagini");
    while ($entry = $d->read()) {
    if($entry != "." && $entry != "..")
    echo "<a href=\"$d->path/$entry\">".$entry."</a>
    \n";
    }
    $d->close();
    ?>


    solo che in quest'ultimo non li mette in ordine di data creazione, ma in modo casuale. Potete gentilmente aiutarmi grazie
    Elena

  2. #2
    Devi preparare i link in un array mentre leggi gli altri dati.
    Poi nel multisort indichi anche l'array dei link.
    Qualcosa di questo genere:

    Codice PHP:
    <?PHP
    $dir
    ="directory_immagini";
    $d dir($dir);
    $i=0;
    $z=0;
    while (
    $entry $d->read()) {
    if(
    $entry != "." && $entry != "..")
    {
    $i++;

    $nome[$i]=$entry;
    $data[$i]=date("YmdHis."filectime($dir."/".$entry));
    $url[$i]="<a href=\"$d->path/$entry\">".$entry."</a>
    \n"
    ;

    $max=$i;
    }
    }
    array_multisort($dataSORT_DESCSORT_NUMERIC$nome,$url);
    //array_multisort($nome, SORT_DESC, SORT_NUMERIC, $data);
    while ($z<$max )
    {
    echo 
    $nome[$z]." ".$data[$z]." ".$url[$z]."
    "
    ;
    $z++;
    }
    ?>
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    5
    Softhare
    funziona perfettamente!
    sei stato un tesoro
    grazie di cuore
    Elena

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    5
    un'altra cosina
    nello script la data viene visualizzata nel seguente formato:
    AAAAMMGGhhmmss

    ma se la volessi nel formato GG/MM/AAA hh:mm:ss ?

    Elena

  5. #5
    Dovrebbe bastare sostituire

    Codice PHP:
    $data[$i]=date("YmdHis."filectime($dir."/".$entry)); 
    con

    Codice PHP:
    $data[$i]=date("d/m/Y H:i:s."filectime($dir."/".$entry)); 
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    5
    no, non va , il formato è giusto ma salta tutto l'ordine cronologico, il cambio formato penso debba essere fatto dopo il multisort

  7. #7
    il cambio formato penso debba essere fatto dopo il multisort
    non credo proprio.
    Il multisort riordina gli array DOPO che sono stati popolati dei loro conteuti.
    E' necessario prima definire i contenuti, comprese le date, e poi queste vengono riordinate assieme agli altri campi.

    Ritengo più probabile che il problema sia altrove.

    Il fatto è che con le ultime modifiche l'ordine viene fatto in base all'array $data, che non è più quindi anno/mese/giorno ma bensì giorno/mese/anno: quindi vengono ordinati per giorno, poi per mese, poi per anno, cioè con un ordine che non è cronologico.

    La soluzione?

    Usare un array di appoggio:

    Codice PHP:
    <?PHP 
    $dir
    ="directory_immagini"
    $d dir($dir); 
    $i=0
    $z=0
    while (
    $entry $d->read()) { 
    if(
    $entry != "." && $entry != ".."

    $i++; 

    $nome[$i]=$entry
    $ordine[$i]=date("YmdHis."filectime($dir."/".$entry));
    $data[$i]=date("d/m/Y H:i:s."filectime($dir."/".$entry));
    $url[$i]="<a href=\"$d->path/$entry\">".$entry."</a>
    \n"


    $max=$i


    array_multisort($ordineSORT_DESCSORT_NUMERIC$data,$nome,$url); 
    //array_multisort($nome, SORT_DESC, SORT_NUMERIC, $data); 
    while ($z<$max 

    echo 
    $nome[$z]." ".$data[$z]." ".$url[$z]."
    "

    $z++; 

    ?>
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    5
    adesso è perfetto!
    come sempre, Softhare, sei stato Grande
    grazie

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.