- Home
- Categorie
- Coding e Sistemistica
- PHP
- Ordinare elenco file per nome
-
Ciao,
prova cosi:
[php]
<?php$directory = 'agenzia-moda-milano-modelle-casting';
$allowed_types=array('jpg','jpeg','gif','png');
$file_parts=array();
$ext='';
$title='';
$i=0;$dir_handle = @opendir($directory) or die("There is an error with your image directory!");
$array_file = array();
while ($file = readdir($dir_handle))
{
if($file=='.' || $file == '..') continue;
$array_file[] = $file;}
closedir($dir_handle);sort($array_file);
foreach($array_file AS $file)
{
$file_parts = explode('.',$file);
$ext = strtolower(array_pop($file_parts));$title = implode('.',$file_parts); $title = htmlspecialchars($title); $nomargin=''; if(in_array($ext,$allowed_types)) { if(($i+1)%4==0) $nomargin='nomargin'; echo ' <div class="pic '.$nomargin.'" style="background:url('.$directory.'/'.$file.') no-repeat 50% 50%;"> <a href="'.$directory.'/'.$file.'" title="'.$title.'" target="_blank">'.$title.'</a> </div>'; $i++; }
}
?>
[/php]
-
Eau la madonna, perfetto, funziona alla grande! Grazie per la soluzion e per la risposta thdarkita. Se non è chiedere troppo, come funziona e cosa "dice" la parte aggiunta da te?
Inoltre avevo provato ad inserire la stringa per sostituire i "-" del titolo a spazi vuoti ma non funziona...sapresti aiutarmi anche per quest'iltima cosa?
[CODE]
$title = str_replace("_"," ",$title);
[CODE]Ciao grazie mille
-
E' molto semplice:
- Ciclando la cartella inserisce il nome del file in un array
- Ordina l'array in ordine crescente
- Cicla l'array per fare le tue operazioni
Per quanto riguarda il title il codice è corretto, tranne che hai scritto l'underscore invece del trattino, ovviamente assicurati di sovrascrivere $title prima di fare l'echo della stessa.
-
L'underscore, vero!
E' molto semplice davvero. Mi piace capire un po'come funziona perchè una volta capito il meccanismo, poi la sintassi la si apprende e ci si può inventare qualcosina di bello e via via sempre più complicato.
Io per ora vado forte solo con la funzione date, però,è già qualcosa!
Grazie mille, ciao!
-
A mio avviso c'è possibile fastidioso bug qui:
@simo10piu said:
[PHP]
while ($file = readdir($dir_handle))
[/PHP]Dovrebbe essere corretto così:
[PHP]
while (false !== ($file = readdir($dir_handle)) )
[/PHP]Perché se nel corso del ciclo trovasse un file con nome 0 verrebbe interpretato come falso ed quindi verrebbe subito interrotto.
Per approfondimenti rimando alla documentazione ufficiale ed al primo esempio in esso contenuto: php.net/manual/en/function.readdir.phpBuon lavoro.
-
Ciao mentelibera, grazie per la risposta, ho modificato il codice ed è tutto ok. Tu qua in pratica gli dici che è falso solo !== se il filesystem è vuoto? (...pardon per l'ignoranza)
-
La funzione readdir() riporta false quando non ci sono più altri elementi.
Fai attenzione che la cifra zero corrisponde a false...
-
grande, ottima info grazie.
-
Per stabilire un ordine personalizzato invece, l'unica secondo me è salvare tutti i nomi delle immagini su un database ( o anche un file, dipende dai casi ), così poi sarai sicuro che tutto apparirá esattamente secondo l'ordine stabilito!
-
@Akeeron said:
Per stabilire un ordine personalizzato invece, l'unica secondo me è salvare tutti i nomi delle immagini su un database ( o anche un file, dipende dai casi ), così poi sarai sicuro che tutto apparirá esattamente secondo l'ordine stabilito!
Sì, vero, magari basta anche un txt.....ho fatto miracoli con dei semplici txt
Mmmmm ma credo che per ora mi andrà benissimo l'intramontabile ordine alfabetico
Grazie mille a tutti!