Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Selezionare in modo random una foto qualsiasi da una cartella

    Ho delle foto in una cartella e voglio fare in modo che tramite php riesco a selezionare ad ogni aggiornamento di pagina una foto diversa.
    E' possibile visualizzare queste foto senza fare nessuna query nel db?
    Nel senso, voglio che php capisca quali foto ci sono all'interno e di volta in volta ne tira una fuori.
    Mai dire Mai

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    All'apertura del sito leggi la cartella contenente le foto, metti in sessione una variabile numerica che parte da 0 più un array con i nomi dei file trovati.
    Ogni volta che vai sulla pagina dove mostrare le foto selezioni la foto nella posizione indicata dalla variabile numerica e aumenti questa di 1.
    Se la variabile numerica è pari al numero di foto-1 invece di incrementarla la resetti a 0.

  3. #3
    Originariamente inviato da Alhazred
    All'apertura del sito leggi la cartella contenente le foto, metti in sessione una variabile numerica che parte da 0 più un array con i nomi dei file trovati.
    Ogni volta che vai sulla pagina dove mostrare le foto selezioni la foto nella posizione indicata dalla variabile numerica e aumenti questa di 1.
    Se la variabile numerica è pari al numero di foto-1 invece di incrementarla la resetti a 0.
    no non dicevo questo, volevo un sistema che capiva quante foto e con quale nome erano nella cartella stessa.
    Una volta ricordo che feci qualcosa di simile ma non ricordo piu' come.
    Mai dire Mai

  4. #4
    Utente di HTML.it L'avatar di RiodaV
    Registrato dal
    Feb 2009
    Messaggi
    26
    Basta che usi scandir(); per selezionare i nomi dei file da una cartella e metterli in un array, poi usi rand per selezionare a caso tra l'array. Non è questo che ti serve?

  5. #5
    Originariamente inviato da RiodaV
    Basta che usi scandir(); per selezionare i nomi dei file e metterli in una cartella, poi usi rand per selezionare a caso tra l'array. Non è questo che ti serve?
    ora controllo come funziona questo scandir() che non conosco
    Mai dire Mai

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Ti dice i file contenuti in una cartella, così come ti ho detto di fare io.

  7. #7
    Utente di HTML.it L'avatar di RiodaV
    Registrato dal
    Feb 2009
    Messaggi
    26
    Originariamente inviato da trippacchiello
    ora controllo come funziona questo scandir() che non conosco
    Ho scritto una cosa senza senso comunque, scandir() mette i nomi dei file in un array
    Il consiglio di usarlo però è ancora valido.

  8. #8
    Originariamente inviato da Alhazred
    Ti dice i file contenuti in una cartella, così come ti ho detto di fare io.
    si ho provato solo che mi mostra anche le directory all'interno della directory

    ho provato cosi':
    Codice PHP:

    $dir    
    'immagini_hotel/hotel_continental/';
    $files1 scandir($dir);
    $files2 scandir($dir1);

    print_r($files1);
    print_r($files2); 
    pero' volevo fare in modo che uscissero tutti i nomi uno sotto l'altro mentre ora escono in questo modo:

    Array ( [0] => . [1] => .. [2] => albergo_continental_2.jpg [3] => bar.jpg [4] => beauty_center_hotel_continental_2.jpg

    come posso fare?
    Mai dire Mai

  9. #9
    Utente di HTML.it L'avatar di RiodaV
    Registrato dal
    Feb 2009
    Messaggi
    26
    O usi le funzioni di gestione degli array (tipo array_shift) oppure fai una funzioncina che legge l'estensione dei file ed elimina quelli non di immagine.

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Per selezionare solo i file si fa così
    Codice PHP:
    function selectfile($dirname){
        
    $arrayfiles = array(); //alla fine del while conterrà tutti i file contenuti nella cartella
        
    if(file_exists($dirname)){
            
    $handle opendir($dirname);
            while (
    false !== ($file readdir($handle))) { 
                if(
    is_file($dirname.$file)){
                    
    array_push($arrayfiles,$file);
                }
            }
            
    $handle closedir($handle);
        }
        
    sort($arrayfiles); //ordina in base al nome del file
        
    return $arrayfiles;

    Così nell'array saranno presenti i file contenuti nella cartella e ordinati in ordine alfabetico.
    Per stampare "uno sotto l'altro" i contenuti dell'array
    Codice PHP:
    $files selectfile("cartella_da_scansionare/"); //lo slash è necessario
    foreach($files as $value)
        echo 
    $value "
    "


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.