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

    Immagine pescata da directory

    Ciao a tutti, ho un bisogno di un aiuto in PHP (conosco un po' l'HTML ma purtroppo niente di PHP).


    Il problema è questo: il mio sito fornisce informazioni in merito ad un'asta di francobolli. Io ho una cartella dove stanno le foto di questi francobolli (circa 5.000). Ogni file immagine ha come nome il numero del lotto a cui si riferisce.
    Io vorrei fare una finestrella "pubblicitaria" (un IFRAME andrebbe bene) nell'home page che ogni tot secondi o, al limite, ad ogni refresh di pagina mi mostra random una di queste foto per dare un'idea al navigatore dei lotti proposti in asta. Tra l'altro c'è il problema che non tutti i lotti sono fotografati e quindi lo script dovrebbe scegliere solo un file realmente esistente.

    Ho trovato questo script php di Dennis ma purtroppo mi carica solo file con nomi alfanumerici:


    <?

    / ****************************************
    ****************************************
    *
    *
    * Applicazione "Carica immagine a caso da una cartella"
    *
    * autore : Danilo "Dennis" Pederiva - pederiva_d@hotmail.com
    * data : 01/09/2003
    *
    / ****************************************
    ****************************************
    */
    //*************** Variabili da settare ***************//
    //Percorso relativo della cartella contenente le immagini
    $cartella="script/files/";
    //Array di tutte le estensioni valide che si vogliono caricare (bmp,gif,jpg,png)
    $estensioni=array('gif','jpg','bmp');
    // ****************************************
    ***********//
    $dir=opendir($cartella) or die("Attenzione, impossibile aprire la cartella ".$cartella);
    $immagini=array();
    $misure=array();
    while(false !== ($file=readdir($dir))) {
    for($i=0;$i<count($estensioni);$i++){
    $estensione=substr($file,(strlen($fil
    e)-3),strlen($file));
    if(in_array($estensione,$estensioni))
    {
    $immagini[]=$file;
    $misure[]=getimagesize($cartella.$file);
    }
    }
    }
    if(count($immagini)==0) die("Attenzione, la cartella indicata non contiene immagini compatibili con le estensioni inserite.
    Provare a controllare l'esattezza delle estensioni e della directory indicata nella variabile 'cartella'");
    $indice=rand(0,(count($immagini)-1));
    print "L'immagine ".$immagini[$indice]." è stata caricata a caso. Prova ad aggiornare la pagina.
    ";
    print '[img]'.$cartella.$immagini[$indice].'[/img]';
    ?>

    Mentre questo altro script php che ho trovato in giro mi carica files numerici ma non c'è il controllo che il file effettivamente esista e quindi ogni tanto compare l'odiosa x rossa di immagine mancante:


    <?

    $foto = "6000"; // numero di immagini che vuoi mostrare -> conta anche lo 0

    $ext = "jpg"; //estensione delle immagini

    //selezione un'immagine a caso
    mt_srand((double)microtime()*1000000);
    $FotoCasuale = mt_rand(0,$foto);
    if ($FotoCasuale == "0") {
    $FotoCasuale = "1";
    }

    echo "<center><img src=\"$FotoCasuale.$ext\" alt=\"#$FotoCasuale\">";
    ?>


    In più entrambi funzionano solo al refresh (ma al limite questo come già detto me lo faccio andare bene) della pagina e non ogni tot secondi come mi piacerebbe.

    Forza ragazzi, senza di voi non ce la posso proprio fare...

    Ciao Ciao

    JD
    "Nel mondo ci sono solo due tipi di persone: quelle che adorano Bruce Springsteen e quelle che non l'hanno mai visto in concerto."

  2. #2

    UP

    Dai ragazzi, un piccolo aiuto...

    Ciao

    JD
    "Nel mondo ci sono solo due tipi di persone: quelle che adorano Bruce Springsteen e quelle che non l'hanno mai visto in concerto."

  3. #3
    senza complicarti troppo la vita sposta tutte le foto relative ai lotti in un unica cartella magari chiamata lotti e mettici solo e soltanto immagini per non aver problemi
    ...poi copia questa funzione:

    Codice PHP:
    function dirtree($path){
        
    /**
        * author: kuarl<grivier@animeterminal.it>
    * date: 26-08-2002 
    */
        
    $fd opendir($path);
        while(
    $file readdir($fd)){
            if(
    $file != '.' && $file != '..'){
                
    $ris[count($ris)] = $path."/".$file;
                if(
    is_dir($ris[count($ris)-1])){
                    unset(
    $ris[count($ris)-1]);
                    
    $ris array_merge($risdirtree($path."/".$file));
                }                
            }
        }
            
    closedir($fd);
        return 
    $ris;

    la funzione legge il contenuto di una directory e restituisce un array contenente i nomi dei files (l'ho presa da una delle pillole del forum magari se vuoi più chiarimenti: http://forum.html.it/forum/showthrea...hreadid=301502 )

    richiami la funzione poi cosi
    Codice PHP:
    //metti tra le parentesi il path della cartella da leggere
    $immagini_lotti=dirtree("lotti");
    // print_r ti conviene usarlo solo qunado testi lo script
    // in modo che vedi cosa contiene il tuo array
    // se è tutto ok lo puoi anke eliminare
    print_r($immagini_lotti);
    // cosi ti estrai un file (nome immagine) a caso
    $immagine_casuale=array_rand($immagini_lotti);
    // e poi la metti in un tag
    echo "<img src=\"$immagine_casuale\" border=\"0\">"
    per il caricamentodell'iframe vedi tu...
    cmq ricordati che la cartella con le immagini dei lotti per non complicarti deve contenere solo le immagini dei lotti (niente sottodirectory o altri file)

    vedi se funge! ciao
    Planet Earth is blue and there's nothing I can do

  4. #4


    Belin !!!

    Sandro, sei proprio una leggenda... faccio qualche prova e ti faccio sapere.

    Grazie Mille.

    JD
    "Nel mondo ci sono solo due tipi di persone: quelle che adorano Bruce Springsteen e quelle che non l'hanno mai visto in concerto."

  5. #5

    [OT] io sono leggenda è il titolo di un bellissimo libro di richard matheson

    cmq attento ai problemi di percorso
    Planet Earth is blue and there's nothing I can do

  6. #6
    Caro Sandro, non riesco

    questo il file PHP seguendo i tuoi consigli:

    Codice PHP:
    <?
    function dirtree($path){
        
    /**
        * author: kuarl<grivier@animeterminal.it>
    * date: 26-08-2002 
    */
        
    $fd opendir($path);
        while(
    $file readdir($fd)){
            if(
    $file != '.' && $file != '..'){
                
    $ris[count($ris)] = $path."/".$file;
                if(
    is_dir($ris[count($ris)-1])){
                    unset(
    $ris[count($ris)-1]);
                    
    $ris array_merge($risdirtree($path."/".$file));
                }                
            }
        }
            
    closedir($fd);
        return 
    $ris;
    }

    ?>


    <?

    $immagini_lotti
    =dirtree("./Asta56/Foto");
    print_r($immagini_lotti);
    $immagine_casuale=array_rand($immagini_lotti);
    echo 
    "<img src=\"$immagine_casuale\" border=\"0\">";

    ?>
    questo il risultato HTML del mio file (l'array va avanti fino a 5000 ma qui non l'ho incollato):

    Array
    (
    [0] => ./Asta56/Foto/1.JPG
    [1] => ./Asta56/Foto/10.JPG
    [2] => ./Asta56/Foto/100.JPG
    [3] => ./Asta56/Foto/1000.JPG
    [4] => ./Asta56/Foto/1001.JPG
    [5] => ./Asta56/Foto/1002.JPG
    [6] => ./Asta56/Foto/1003.JPG
    [7] => ./Asta56/Foto/1004.JPG
    [8] => ./Asta56/Foto/1005.JPG
    [9] => ./Asta56/Foto/1006.JPG

    )
    [img]971[/img]


    Nessuna immagine visualizzata. Non capisco una cosa: dovrebbe aprire la foto 971.jpg o la 971nesima foto dell'array ? Un altro dubbio: come mai anche se aggiorno il file esce sempre 971 come risultato del random ???

    Grazie in anticipo.

    Ciao Ciao

    JD
    "Nel mondo ci sono solo due tipi di persone: quelle che adorano Bruce Springsteen e quelle che non l'hanno mai visto in concerto."

  7. #7
    array_rand riporta la chiave e non il valore

    codice:
    $immagini_lotti=dirtree("./Asta56/Foto");
    print_r($immagini_lotti);
    $immagine_casuale=array_rand($immagini_lotti);
    echo "<img src=\"{$immagini_lotti[$immagine_casuale]}\" border=\"0\">";
    E' la mia opinione ed io la condivido
    Non condivido la tua idea ma darei la vita perché tu la possa esprimere (Voltaire)
    Scrivi sul muro

  8. #8

    Il Random non funziona

    Grazie boomboom, adesso la foto si visualizza, ma c'è un piccolo problema: è sempre la stessa, non cambia mai. Qualche suggerimento ???

    Ciao

    JD



    Codice PHP:
    <?
    function dirtree($path){
        
    /**
        * author: kuarl<grivier@animeterminal.it>
    * date: 26-08-2002 
    */
        
    $fd opendir($path);
        while(
    $file readdir($fd)){
            if(
    $file != '.' && $file != '..'){
                
    $ris[count($ris)] = $path."/".$file;
                if(
    is_dir($ris[count($ris)-1])){
                    unset(
    $ris[count($ris)-1]);
                    
    $ris array_merge($risdirtree($path."/".$file));
                }                
            }
        }
            
    closedir($fd);
        return 
    $ris;
    }

    ?>



    <?

    $immagini_lotti
    =dirtree("./Asta56/Foto");
    //print_r($immagini_lotti);
    $immagine_casuale=array_rand($immagini_lotti);
    echo 
    "<img src=\"{$immagini_lotti[$immagine_casuale]}\" border=\"0\">";


    ?>
    "Nel mondo ci sono solo due tipi di persone: quelle che adorano Bruce Springsteen e quelle che non l'hanno mai visto in concerto."

  9. #9
    prova così
    codice:
     $immagini_lotti=dirtree("./Asta56/Foto");
    //print_r($immagini_lotti);
     srand ((float) microtime() * 10000000);
     $immagine_casuale=array_rand($immagini_lotti, 1);
    echo "<img src=\"{$immagini_lotti[$immagine_casuale]}\" border=\"0\">";
    E' la mia opinione ed io la condivido
    Non condivido la tua idea ma darei la vita perché tu la possa esprimere (Voltaire)
    Scrivi sul muro

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    3,259
    ciao, potresti descrivere il problema che hai utilizzando il mio scriptino? dando la cartella e le estensioni valide per le immagini dovrebbe caricare qualsiasi cosa che stia in quella cartella con le estensioni che dai... mi spieghi il prob?


    PS: per avere un immagine ogni tot secondi, devi usare un linguaggio lato client, come javascript

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 © 2024 vBulletin Solutions, Inc. All rights reserved.