Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    303

    Anteprima immagini di una directory

    Ciao a tutti,
    sto cercando senza successo uno script semplicissimo che mi "apra" una directory e mi faccia vedere le miniature delle immagini contenute, magari con la possibilità di ordinarle per data.
    Sto provando di tutto ma non c'è nulla che va bene, o sono troppo complessi con database ecc o troppo semplici che non consentono di ordinarli.
    Avevo trovato qualcosa anche su questo forum e va benissimo ma me le ordina a caso, invece vorrei poter scegliere io il modo in cui devono essere ordinate.

    Grazie, buon lavoro a tutti

  2. #2

    Re: Anteprima immagini di una directory

    fai troppe domande tutte insieme.

    1) Lo script per generare le miniature che hai linkato serve per generarle "al volo". Se si tratta di poche immagini è ok ma se sono molte credo che si appesantisce molto l'esecuzione dello script (perlomeno penso). E' molto meglio generare le miniature in fase di uplaod dell'img.

    2) per vedere le immagini presenti in una cartella devi utilizzare la funzione glob(). Si possono usare anche altre funzione (opendir-scandir... etc etc) ma sono più "vecchie".

    3) Per ordinare le immagini in base alla data devi anzitutto conoscere la data di un file. Per verificare la data (anche se nn del tutto affidabile) devi utilizzare filemtime().

    4) una volta ottenuta la data per ciascun file devi costruirti un array multidimensionale con il timestamp del file ed ordinare l'array in base a tale elemento.
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    303
    Quello che ho linkato della pillola funziona benissimo, era solo per fare un esempio di quello che mi serve esattamente, le immagini sono circa 20 quindi gira velocemente.
    In pratica mi serve la stessa identica cosa, ma che me le ordini per data, in quello non sono ancora riuscito a capire con che criterio le ordina

  4. #4
    Ciao di quello script che hai linkato modifica il file "galleria.class.php" in questo modo
    codice:
    <?php
    // file galleria.class.php
    //
    // Marco Barcaro
    // 15/12/2004
    //
    // questa classe richiede le librerie grafiche GD
    //
    // Testato con Apache 1.3.29, PHP 4.3.10, GD 2.0.28 su winXP
    // Testato con Apache 1.3.26, PHP 4.1.2, GD 2.0 (no supporto x GIF) su Debian
    // Testato con Apache 1.3.33, PHP 4.3.9, GD 2.0 su Linux
    // Testato con Apache 1.3.31, PHP 4.3.3, GD 2.0 su Linux
    
    class galleria{
    	function galleria($ext_permesse){
    		$this->ext_permesse=$ext_permesse;
    		$this->immagini=array();
    	}
    
    	function leggi_dir($path){		
    		// LETTURA DELLA DIRECTORY
    		if (!is_dir($path))
    			echo "$path NON E' UNA DIRECTORY VALIDA!";
    		else {
    			$d = dir($path);
    			$i=0;
    			while ($immagine = $d->read()) {
    				if ($immagine != "." && $immagine != ".." && in_array(array_pop(explode(".",$immagine)),$this->ext_permesse)){
    					$appo[$i]['nome']=$path.$immagine;
    					$appo[$i]['data']=date ("F d Y ",filemtime($path.$immagine));
    					$i++;
    //					$this->immagini[]=$path.$immagine;
    				}
    			}
    			$d->close();
    		}
    	$data_mod = array();
    	$nomi = array();
    		foreach($appo as $k=>$v){
    			$data_mod[$k] = strtotime($v['data']);
    			$nomi[$k] = $v['nome'];
    		}
    	array_multisort($data_mod,SORT_DESC,SORT_STRING, $nomi,SORT_ASC,SORT_STRING, $appo);
    	$ct=0;
    		while($ct<count($appo)){
    //			echo "Nome: ".$appo[$ct]['nome']." Data: ".$appo[$ct]['data']."
    ";
    			$this->immagini[]=$appo[$ct]['nome'];
    			$ct++;
    			}
    		}
    
    	function stampa(){
    		// PREPARAZIONE DELL'OUTPUT COME TABELLA HTML
    		$output="<table>\n";
    		$output.="<tr>\n";
    		$cont=1;
    		foreach($this->immagini as $immagine){
    			$output.="<td><img src=\"".FILE_RIDIMENSIONA."?immagine=$immagine\" alt=\"$immagine\" /></td>\n";
    			if ($cont % NUMEROCOLONNE == 0)
    				$output.="</tr><tr>\n";
    			$cont++;
    		}
    		if (($cont-1) % NUMEROCOLONNE == 0)
    			$output=substr($output,0,-5)."\n";
    		$numero_immagini=count($this->immagini);
    		$temp=ceil($numero_immagini/NUMEROCOLONNE)*NUMEROCOLONNE-$numero_immagini;
    		for ($i=0;$i<$temp;$i++)
    			$output.="<td> </td>\n";
    		if ($temp != 0)
    			$output.="</tr>\n";
    		$output.="<table>\n";
    		// OUTPUT DELLA TABELLA
    		echo $output;
    	}
    }
    ?>
    Cosi' facendo le immagini saranno ordinate per data di ultima modifica. In caso alcune abbiano la stessa data saranno ordinate per il nome che hanno.

    Saluti
    P.s. Il codice l'ho modificato al volo potrebbero anche esserci degli errori. Inoltre ho aggiunto 2 cicli che indubbiamente non sono il top per l'efficenza ma se devi lavorarci solo 20 immagini non dovresti aver problemi.
    Davide Granata
    Web Developer
    www.davidepc.com

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.