Visualizzazione risultati 1 fino 13 di 13

Discussione: immagine random non tra tutte

  1. #1
    L'avatar di dea
    dea
    dea non è connesso Utente giovane
    Data registrazione
    27-11-2003
    Messaggi
    62

    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à

    www.riviera.altervista.org --> Più di 2500 foto dei tifosi BLUCERCHIATI, sempre aggiornate
    www.dea.altervista.org --> Il sito di Dea

  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
    L'avatar di dea
    dea
    dea non è connesso Utente giovane
    Data registrazione
    27-11-2003
    Messaggi
    62

    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

    www.riviera.altervista.org --> Più di 2500 foto dei tifosi BLUCERCHIATI, sempre aggiornate
    www.dea.altervista.org --> Il sito di Dea

  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
    L'avatar di dea
    dea
    dea non è connesso Utente giovane
    Data registrazione
    27-11-2003
    Messaggi
    62

    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!

    www.riviera.altervista.org --> Più di 2500 foto dei tifosi BLUCERCHIATI, sempre aggiornate
    www.dea.altervista.org --> Il sito di Dea

  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
    L'avatar di dea
    dea
    dea non è connesso Utente giovane
    Data registrazione
    27-11-2003
    Messaggi
    62

    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

    www.riviera.altervista.org --> Più di 2500 foto dei tifosi BLUCERCHIATI, sempre aggiornate
    www.dea.altervista.org --> Il sito di Dea

  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
    L'avatar di dea
    dea
    dea non è connesso Utente giovane
    Data registrazione
    27-11-2003
    Messaggi
    62

    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

    www.riviera.altervista.org --> Più di 2500 foto dei tifosi BLUCERCHIATI, sempre aggiornate
    www.dea.altervista.org --> Il sito di Dea

  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
    L'avatar di dea
    dea
    dea non è connesso Utente giovane
    Data registrazione
    27-11-2003
    Messaggi
    62

    Predefinito

    Va che è una meraviglia!
    Ti ringrazio molto

    www.riviera.altervista.org --> Più di 2500 foto dei tifosi BLUCERCHIATI, sempre aggiornate
    www.dea.altervista.org --> Il sito di Dea

  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
  •