qualcuno conosce qualche script per inserire in una pagina un tot immagini prese in modo random da una cartella?
qualcuno conosce qualche script per inserire in una pagina un tot immagini prese in modo random da una cartella?
no ma non è troppo complesso...
1 - leggi tutti i file della cartella (ad esempio con la funzione glob() ) e li metti in un array
2 - prendi l'elemento dell'array con indice "random"
Nessun ideale assoluto farà sì che il leone giaccia con l’agnello a meno che l’agnello non sia dentro di lui.
Piscine Fuori Terra
mmm... in effetti hai ragione... faccio prima a scrivere qualcosa io che a cercarla![]()
grazie comunque per la dritta...
Tramite la funzione glob() recuperi le immagini all'interno di una cartella, con lo shuffle() le mischi, ne estrai un tot a tua scelta con array_slice(), cicli l'array e le mostri.
Codice PHP:
$immagini = glob("./img/*.*");
shuffle($immagini);
$prime5 = array_slice($immagini,0,5);
foreach($prime5 as $img) {
echo "<img src=\"$img\" />
";
}
meglio ancora... è perfetto così... grazie 1000![]()
si, te l'ha gia scritto![]()
![]()
Nessun ideale assoluto farà sì che il leone giaccia con l’agnello a meno che l’agnello non sia dentro di lui.
Piscine Fuori Terra
il codice postato da nicola, potrebbe funzionare ugualmente se nella cartella ci sono 1000-2000 immagini? o ci vorrà molto tempo mentre che le "indicizzerà" tutte per randomizzarle? e se ci vorrà molto tempo, quale altra strada mi suggerite?
beh puoi sempre salvare l'elenco delle img in un file e creare da quello l'array, molto piu veloce..
naturalmente se cambiano le img nella cartella devi ricrearlo
l'elenco delle immagini dovrei salvarlo manualmente o posso farlo in qualche modo direttamente in php? le immagini non cambieranno quindi questo è tranquillo... però voglio provarlo perchè voglio capire bene di cosa parliamo quando dici che è "più veloce"... nell'ordine di una frazione di secondo o nell'ordine di secondi? perchè il secondo caso sarebbe inaccettabile...
altrimenti per 1000 immagini potrei fare 100 cartelle ognuna con 100 immagini e prima gli faccio prendere una cartella a caso e poi in quella gli faccio prendere tot. immagini a caso... così dovrebbe essere più veloce rispetto a leggere 1000 immagini, perchè leggerebbe 100 cartelle e poi 100 immagini, quindi 200 letture anzichè 1000... no?
beh la lista te la crei con php, mi vengono in mente 2 soluzioni, non sono sicuro di quale sia quella più veloce .. forse quella con l'explode
comunque sicuramente non secondi, frazione di secondoCodice PHP:
#1
$immagini = glob("./imgs/*.*");
file_put_contents("lista.txt", implode($immagini,"|"));
//per recuperare l'array di img sarà
$array_immagini = explode("|", file_get_contents("lista.txt"));
#2
$immagini = glob("./imgs/*.*");
file_put_contents("lista.txt", serialize($immagini));
//per recuperare l'array di img sarà
$array_immagini = unserialize(file_get_contents("lista.txt"));
naturalmente il file lista.txt va creato una sola volta