Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: function

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929

    function

    ciao a tutti,

    utilizzo questa funzione per caricare un'immagine a caso dentro una cartella, ma non capisco perchè a volte non viene fuori nulla anche se nella cartella almeno un file di immagine c'è!
    Codice PHP:
    function leggi_cartella($path){

    $immagine=array();

    if (
    is_dir("$path"))
    {
    $handle=opendir($path);
    $i 0;
    while (
    false!==($file readdir($handle)))
    {
    if (
    $file != "." && $file != ".." && $file != "Thumbs.db" && $file != "big")
    {
    $immagine[$i] = "$file";
    $i++;
    }
    }
    closedir($handle);
    }
    return 
    $immagine[rand(0$i)];

    grazie!

  2. #2
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    perchè questa funzione restituisce un valore casuale... $immagine[rand(0, $i)];
    e alcune vuolte restituiusce NULL

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    grazie mille, come posso evitare questo inconveniente?

  4. #4
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    dipende da quello che vuoi fare... ad esempio:
    Codice PHP:
    <?php
    function leggi_cartella($path){ 
        
        
    $immagine=array(); 
        
        if (
    is_dir("$path")) { 
            
    $handle=opendir($path); 
            
    $i 0
                while (
    false!==($file readdir($handle))) { 
                    if (
    $file != "." && $file != ".." && $file != "Thumbs.db" && $file != "big") { 
                    
    $immagine[$i] = "$file"
                    
    $i++; 
                } 
            } 
            
    closedir($handle); 
        } 
        
        return 
    $immagine
    }

    print_rleggi_cartella("img"));
    cosi restituisce l'array intero... ( con print_r vedi il risultato)

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    io voglio un'immagine a caso... pescata dalla cartella... :master:

  6. #6
    Codice PHP:
    <?php
    function random_image($path)
    {
        
    $allowed = array('jpg''gif''png');
        
    $files = array();
        
        if(!
    is_dir($path)) die("Cartella non valida.");
        
        foreach(
    glob($path "/*") AS $file)
        {
            if(
    in_array(end(explode('.'$file)), $allowed)) 
                
    $files[] = $file;
        }
        
        return 
    $files[rand(0count($files)-1)];
    }

    echo 
    random_image('immagini'); // Path senza slash finale
    ?>
    perchè questa funzione restituisce un valore casuale... $immagine[rand(0, $i)];
    e alcune vuolte restituiusce NULL
    Che idea fantasiosa
    La tua funzione non va perchè incrementi $i dopo aver riempito l'array, quindi se ad esempio nella cartella hai 4 file ($files[3] come indice massimo) avrai il secondo parametro della funzione rand() settato a 4 e se esce 4 come numero casuale non lo trova nell'array

  7. #7
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    le due frasi "restituuisce NULL" e " come numero casuale non lo trova nell'array"

    alla fine della giostra non sono cosi diverse... o no?!?

  8. #8
    Il filtro per estensione si può fare direttamente con glob()
    Codice PHP:
    <?php
    function random_image($path)
    {
        
    $files = array();
        
        if(!
    is_dir($path)) die("Cartella non valida.");
        
        foreach(
    glob($path "/*.{jpg,gif,png}"GLOB_BRACE) AS $file)   $files[] = $file;
        
        return 
    $files[rand(0count($files)-1)];
    }

    echo 
    random_image('immagini'); // Path senza slash finale
    ?>

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    grazie mille, cosi è perfetto, solo un piccolo problema

    io poi la richiamo cosi
    Codice PHP:
    $immagine random_image("img/immibili/$id"); 
    e stampo in questo modo
    codice:
    <tr><td align="center" style="padding-top:11px; padding-bottom:11px"><a href="'.$immagine.'" rel="clearbox[gal1]">[img]'.$immagine.'[/img]</td></tr>
    come vedi
    codice:
    <a href="'.$immagine.'" rel="clearbox[gal1]">
    l'hafer serve per aprire l'ingrandimento ma dovrebbe puntare ad una sotto cartella (big) per pescare l'immagine ingrandita...

    ma cosi non riesco a dargli il percorso...

  10. #10
    Originariamente inviato da kodode
    le due frasi "restituuisce NULL" e " come numero casuale non lo trova nell'array"

    alla fine della giostra non sono cosi diverse... o no?!?
    Insomma, NULL è diverso da 4 (nel caso di 3 file), la funzione è giusta, è il contatore che è di troppo, sarebbe stato sufficiente un $files[].
    Non restituisce mai NULL comunque

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.