Mostrare immagini da una cartella, ma solo un numero definito

Cosina

Utente Attivo
27 Dic 2016
101
0
16
Buongiorno a tutti. Ho trovato un codice che mi permette di visualizzare le immagini contenute in una cartella. Vorrei aggiungere la regola per stabilire il numero di immagini da visualizzare, per esempio 4 (più recenti). Come posso fare? Il codice è quello che segue. Grazie mille per l'aiuto.

PHP:
<?php

header('Content-Type: text/javascript; charset=UTF-8');

$imageFolder = 'folder/';

$imageTypes = '{*.jpg,*.JPG,*.jpeg,*.JPEG,*.png,*.PNG,*.gif,*.GIF}';

$sortByImageName = false;

$newestImagesFirst = true;

$images = glob($imageFolder . $imageTypes, GLOB_BRACE);

if ($sortByImageName) {

    $sortedImages = $images;

    natsort($sortedImages);

} else {

    $sortedImages = array();

    $count = count($images);

    for ($i = 0; $i < $count; $i++) {

        $sortedImages[date('YmdHis', filemtime($images[$i])) . $i] = $images[$i];

    }

    if ($newestImagesFirst) {

        krsort($sortedImages);

    } else {

        ksort($sortedImages);

    }

}

foreach ($sortedImages as $image) {

    $name = 'Image name: ' . substr($image, strlen($imageFolder), strpos($image, '.') - strlen($imageFolder));

    $lastModified = '(last modified: ' . date('F d Y H:i:s', filemtime($image)) . ')';

    writeHtml('<div class="ins-imgs-li">');

    writeHtml('<img src="' . $image . '" alt="' . $name . '" title="' . $name . '">');

    writeHtml('<p class="ins-imgs-label">' . $name . ' ' . $lastModified . '</p>');

    writeHtml('</div>');

}

function writeHtml($html) {

    echo "document.write('" . $html . "');\n";

}

?>
 

Hormus

Utente Attivo
26 Giu 2020
83
10
8
krsort inverte la chiave associativa spostando la sequenza dell'ultima alla prima.
se non vuoi iterare tutti gli array ti devi fermare a minore di 4 o 4.
prima del foreach.
PHP:
$y=0;
foreach ($sortedImages as $image) {
$name = 'Image name: ' . substr($image, strlen($imageFolder), strpos($image, '.') - strlen($imageFolder));

$lastModified = '(last modified: ' . date('F d Y H:i:s', filemtime($image)) . ')';

writeHtml('<div class="ins-imgs-li">');

writeHtml('<img src="' . $image . '" alt="' . $name . '" title="' . $name . '">');

writeHtml('<p class="ins-imgs-label">' . $name . ' ' . $lastModified . '</p>');

writeHtml('</div>');
if($y == 3) {
break;
}
$y++;

}
In questo esempio con al massimo 4 iterazioni è sia per le più recenti o l'atro tipo.
 
Ultima modifica:

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
Per ottimizzare ancora di più sarebbe più consono ciclare solo gli N elementi necessari in quanto "IF" viene valutato ad ogni iterazione aumentando la complessità....
PHP:
foreach(array_slice($sortedImages,0,4) as $el){}


Ciao prima il codice era lento adesso piu veloce.
In questo modo sarà ancora più veloce (livello macchina)!
 

Cosina

Utente Attivo
27 Dic 2016
101
0
16
Grazie anche a te macus_adi. Ho provato la tua modifica, ma non funziona. Ciao
 
Ultima modifica:

Hormus

Utente Attivo
26 Giu 2020
83
10
8
Ciao Macus_adi grazie per il tuo contributo.
Cosina prova prima del foreach a limitare un array a massimo di 4 elementi.
$sortedImages = array_slice($sortedImages, 0, 4);
 

Cosina

Utente Attivo
27 Dic 2016
101
0
16
Ciao Macus_adi grazie per il tuo contributo.
Cosina prova prima del foreach a limitare un array a massimo di 4 elementi.
$sortedImages = array_slice($sortedImages, 0, 4);

L'ho fatto e funziona (nel senso che vedo le 4 immagini), però dimmi se ho interpretato bene le istruzioni e se il codice così è corretto:
PHP:
$y=0;

$sortedImages = array_slice($sortedImages, 0, 4);

foreach ($sortedImages as $image) {
    
$name = 'Image name: ' . substr($image, strlen($imageFolder), strpos($image, '.') - strlen($imageFolder));

$lastModified = '(last modified: ' . date('F d Y H:i:s', filemtime($image)) . ')';

writeHtml('<div class="ins-imgs-li">');

writeHtml('<img src="' . $image . '" alt="' . $name . '" title="' . $name . '">');

writeHtml('<p class="ins-imgs-label">' . $name . ' ' . $lastModified . '</p>');

writeHtml('</div>');
if($y == 4) {
break;
}
$y++;

}
 

Hormus

Utente Attivo
26 Giu 2020
83
10
8
Si sei sulla giusta strada.
Comunque dovresti usare semplicemente $sortedImages = array_slice($sortedImages, 0, 4, true);
Questo aggiorna la variabile $sortedImages nel contenere massimo 4 elementi preservando la chiave originale.
 
Ultima modifica:

Cosina

Utente Attivo
27 Dic 2016
101
0
16
Si sei sulla giusta strada.
Comunque dovresti usare semplicemente array_splice($sortedImages, 4);
Questo aggiorna la variabile $sotedImages nel contenere massimo 4 elementi con la loro chiave originale.

Abbi pazienza....non ho capito cosa devo togliere, me lo specifichi meglio. Grazie
 

Cosina

Utente Attivo
27 Dic 2016
101
0
16
Abbi pazienza....non ho capito cosa devo togliere, me lo specifichi meglio. Grazie

Ora credo di aver capito. Giusto così:

PHP:
$sortedImages = array_slice($sortedImages, 0, 4);

foreach ($sortedImages as $image) {
    
$name = 'Image name: ' . substr($image, strlen($imageFolder), strpos($image, '.') - strlen($imageFolder));

$lastModified = '(last modified: ' . date('F d Y H:i:s', filemtime($image)) . ')';

writeHtml('<div class="ins-imgs-li">');

writeHtml('<img src="' . $image . '" alt="' . $name . '" title="' . $name . '">');

writeHtml('<p class="ins-imgs-label">' . $name . ' ' . $lastModified . '</p>');

writeHtml('</div>');

}
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Mostrare immagini dal database in una propria pagina PHP 2
S [Javascript] Slider html: Mostrare immagini su 4 colonne Javascript 20
M Mostrare testo (o parte di esso) in base a utente PHP 0
Cosina mostrare contenuto da file txt PHP 2
Tommy03 Mostrare feed senza internet Sviluppo app per Android 4
A Mostrare dati database per pagine PHP 2
J php, scegliere autista da select e mostrare se ha fatto un incidente PHP 8
M [PHP] Logica esatta sul mostrare contenuto se inattivo con Codeigniter PHP 2
M [PHP] Mostrare risultati di una tabella ma solo se ID è attivo PHP 0
A [Javascript] Mostrare un marker se è vicino al risultato di ricerca con google maps Javascript 3
T mostrare il riultato di uno script php Ajax 2
C [Javascript] Mostrare un div cliccando una checkbox Javascript 0
T mostrare solo una volta il risulato doppio Database 10
E [PHP] GUMP: mostrare gli errori tramite array PHP 1
Bryan [PHP] Far mostrare tutte le tabelle contenenti in un database PHP 2
N invia.php solo alcuni dati da mostrare PHP 4
K Mostrare tabella PHP e MySQL PHP 0
G non mostrare un determinato campo se PHP 1
J Mostrare mese intero (come cambio il codice?!) Java 1
M Mostrare il contenuto del database e convertire la data da timestamp PHP 2
D mostrare contenuto caricato dinamicamente da database PHP 12
M problema mostrare data di registrazione formattata in italiano PHP 8
R Mostrare articoli correlati in php PHP 2
M Mostrare o meno banner pubblicitari a seconda la risoluzione del device Javascript 10
N Mostrare campi form se ho selezionato un determinato campo PHP 0
A consiglio uso jquery php per mostrare parte di un form PHP 6
A consiglio uso jquery per mostrare parte di un form jQuery 0
A Mostrare tutti i record di una tabella prendendo un valore da un altra tabella MySQL 1
N Mostrare valori databse in un modal pop up con PHP e MySQL PHP 5
D mostrare nascondere sottomenu Javascript 1
C Mostrare i campi vuoti al caricamento di una maschera MS Access 0
N [RISOLTO] Mostrare a video le checkbox selezionate con PHP e MySQL PHP 4
gandalf1959 [risolto] Mostrare a video il risultato di una query con stesso anno e mesi diversi PHP 13
D Mostrare su una pagina web dati provenienti da un Database PHP 0
P Mostrare punti interesse du una mappa di google maps Javascript 1
giancadeejay Mostrare immagine solo per 2 secondi Javascript 2
A Mostrare video style facebook Javascript 0
H Funzione onmouseover per mostrare un box con un link da cliccare? Javascript 3
P Mostrare nome utente (era: ciao) PHP 1
U Mostrare una pagina html esterna PHP 8
D mostrare contenuto tabella database dopo la selezione PHP 3
F mostrare una sola volta un record che si ripete PHP 2
M pulsante per mostrare filmato swf HTML e CSS 12
M mostrare un feed rss con PHP PHP 2
S mostrare variabili da un js esterno Javascript 2
S [VB.NET]: Coordinate immagini dentro una PictureBox Visual Basic 0
G Perché il mio sito su Google news fa vedere le immagini degli articoli la mia foto profilo? WordPress 1
M Immagini non usate WordPress 0
elmonarca77 Utilizzo e licenze immagini Webdesign e Grafica 4
S Risoluzione Immagini e Connessione Joomla 0

Discussioni simili