Visualizzazione risultati 1 fino 13 di 13

Discussione: immagine random non tra tutte

  1. #1
    Guest

    Predefinito immagine random non tra tutte

    Ciao a tutti,
    voevo sapere se qualcuno potesse scrivermi uno script per visualizzare una immagine a caso presa da una cartella del mio sito.
    La cosa non sembrerebbe dificile, ho trovato decine di script per l'uopo.. la differenza è che nella directory in questione ci sono circa 3000 immagini ed io vorrei mettere nella pagina solo una a caso tra quelle il cui nome comincia per thumb_
    ho trovato diversi script ma non sono i grado di inserire corretamente il parametro.
    Grazie mille a chi mi risponderà

  2. #2
    Guest

    Predefinito

    Cosi dovrebbe funzionare (anche se nn sono sicuro che sia molto veloce con le cartelle piene di immagini) :

    Codice PHP:
    <?
    // Definisco il percorso della mia directory immagini
    $img_dir = "./foto";
    $i = 0;

    // Utilizzo opendir per aprire la directory
    $handle = opendir($img_dir);

    // Creo un ciclo ed utilizzo readdir per esplorare il contenuto della directory
    while (false !== ($files = readdir($handle)))
    {
    // Indicizzo le immagini
    if ($files != "." && $files != "..")
    {
    $Indice[$i] = $files;
    $i++;
    }
    }

    // Stampo un'immagine random
    print "<img src=\"$img_dir/".$Indice[rand(0,$i-1)]."\" border=\"0\">";
    ?>

  3. #3
    Guest

    Predefinito

    Innanzitutto grazie mille per la risposta.
    Lo script funge bene ma il problema è che non sapendone io un'H di php non so dove mettere le mani per includere nella scelta solo le immagini che cominciano per thumb_
    Fondamentalmente così il mio problema rimane.

    Se me lo dici mi faiun ulteriore favore.
    Ciao
    Ultima modifica di dea : 30-12-2004 alle ore 16.43.11

  4. #4
    Guest

    Predefinito

    Bisognerebbe fare un controllo in questo ciclo :

    Codice PHP:
    while (false !== ($files = readdir($handle)))
    {
    // Indicizzo le immagini
    if ($files != "." && $files != "..")
    {
    $Indice[$i] = $files;
    $i++;
    }
    }
    L'unico problema è che sarebbe da fare con la funzione ereg() che io nn so usare :(

  5. #5
    Guest

    Predefinito

    se non ne sei capace tu, figurati io...
    Grazie comunque per avermi dedicatu un po' del tuo tempo.
    Ci sarà qualcuno che mi potrà aiutare qui!

  6. #6
    Guest

    Predefinito

    Anzi no, scusa a mente fresca mi è venuta una mezza idea prova cn questo codice :

    Codice PHP:
    <?
    // Definisco il percorso della mia directory immagini
    $img_dir = "./foto";
    $i = 0;

    // Utilizzo opendir per aprire la directory
    $handle = opendir($img_dir);

    // Creo un ciclo ed utilizzo readdir per esplorare il contenuto della directory
    while (false !== ($files = readdir($handle)))
    {
    $tmp = explode ("_" , $files);
    // Indicizzo le immagini
    if ($files != "." && $files != ".." && $tmp[0] == "thumb")
    {
    $Indice[$i] = $files;
    $i++;
    }
    }

    // Stampo un'immagine random
    print "<img src=\"$img_dir/".$Indice[rand(0,$i-1)]."\" border=\"0\">";
    ?>

  7. #7
    Guest

    Predefinito

    Perfetto, non ho parole!
    Grazie mille!
    Vista la difficoltà ce ho trovato nel cercare nei vari siti qualcosa del genere ti invito a pubblicare questo script da qualche parte, potrebbe servire a tanti altri che come me on sono in grado di crearselo.
    Ciao ed ancora grazie

  8. #8
    Guest

    Predefinito

    prendero in considerazione il tuo consiglio.

  9. #9
    incuso non è connesso Utente
    Data registrazione
    27-09-2003
    Messaggi
    173

    Predefinito

    Boh propongo anche io il mio che ha il vantyaggio di usare scandir() che nel PHP5 è già presente e quindi in questo caso basta cancellare la funzione.

    <?php
    $img_dir = "./foto";

    $files=scandir($img_dir);

    $nfiles=count($files);

    while(!ereg("^thumb", $a=$files[mt_rand(0,$nfiles-1)]));

    echo "<img src=\"$img_dir/$a\" border=\"0\">";

    function scandir($dir){
    $h = opendir($dir);
    while(false!==($files[]=readdir($h)));
    return $files;
    }
    ?>

  10. #10
    Guest

    Predefinito

    Avrei una richiesta per implementare lo script:

    usando questo ultimo script appare una immagine presa a caso: es thumb_001
    se nella stessa cartella c'è anche una immagine big_001 come si può fare per far si che cliccando sopra a thumb_001 si vada a big_001?

    mi spiego meglio: una volta che appare l'immagine (thumb) a caso, cliccandoci sopra si vada all'immagine vera e propria?

    Grassie mille a chi mi aiuta

  11. #11
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Mi sembra molto valido e ottimizzato (tranne l'ereg che avrei evitato usando uno strpos, cmq.. fisse mie )
    lo script proposto da incuso,
    quindi lo consiglierei, e appunto nel caso volessi usarlo per avere anche la tua ultima richiesta dovresti sostituire SOLO la riga:

    echo "<img src=\"$img_dir/$a\" border=\"0\">";

    con

    Codice PHP:
    $imgtag = '<img src="'.$img_dir.'/'.$a.'" border="0">';
    $abig = str_replace('thumb_','big_',$a);
    if (
    file_exists($img_dir.'/'.$abig))
    echo
    '<a href="'.$img_dir.'/'.$abig.'" target="_blank">'.$imgtag.'</a>';
    else
    echo
    $imgtag;
    Se non funge per qualche errore di sinstassi dimmi, l'ho scritto al volo non ho provato..
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  12. #12
    Guest

    Predefinito

    Va che è una meraviglia!
    Ti ringrazio molto

  13. #13
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Che c.. ehmm
    che fortuna.. avrei scommesso che con una buona percentuale (tipo 80%) dei casi che ti avesse dato un errore di sintassi, visto sprattutto che il codice era pieno di doppievirgolette, apici e apicetti vari
    ok

    ilpcportal:
    perdona lo "scavalcamento" di script, non vorrei che tu rimanessi un po' infastidito dal fatto che avevi proposto un codice, anche funzionante, e all'ultimo è stato "scavalcato" da un altro..
    Però puoi prendere il secondo script come un buon spunto per ottimizzare i tuoi script futuri
    per esempio fare un explode (che ritorna un oggetto array) soltanto per controllare l'elemento [0] se equivale a "thumb" non è il massimo dell'ottimizzazione, spero non te la sia presa

    Ciao!
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •