Web4Web.IT - Community Forums
[wordpress] recuperare immagini casuali, non sempre funziona - Versione stampabile

+- Web4Web.IT - Community Forums (https://www.web4web.it/forum)
+-- Forum: Supporto Tecnico (/forum-21.html)
+--- Forum: Programmazione & Design (/forum-23.html)
+---- Forum: PHP (/forum-24.html)
+---- Discussione: [wordpress] recuperare immagini casuali, non sempre funziona (/thread-157.html)



[wordpress] recuperare immagini casuali, non sempre funziona - karim - 22-02-2010 10:53

Salve a tutti, non frequentando forum per il php ho pensato di scrivere qui.

Ho creato un template wordpress e per un'area della pagina carico un banner grafico casuale presente in una directory del template. Il sistema è random e sembra funzionare, ma ogni tanto non carica il banner e bisogna ricaricare la pagina.

I file sono tutti a posto, mi chiedevo se c'era qualche problema o qualcosa da settare con il php. Chiedo lumi.


RE: [wordpress] recuperare immagini casuali, non sempre funziona - Pirosauro - 22-02-2010 13:51

qualche frammento di codice sarebbe utile...


RE: [wordpress] recuperare immagini casuali, non sempre funziona - karim - 22-02-2010 18:47

In effetti..
Codice:
// Change to the location of the folder containing the images
$image_file_path = "/home/ etc... etc.."

/* $images is an array with all the name of files */

$d = dir($image_file_path) or die("Wrong path: $image_file_path");
while (false !== ($entry = $d->read())) {
    /* alcuni file non devono essere nell'array */
       if($entry != '.' && $entry != '..' && !is_dir($dir.$entry) && $entry != 'banner-services-room.jpg')
        $images[] = $entry;
    }
$d->close();

// The total number of images in the folder
$total = sizeof($images);

$start = "1";
$random = mt_rand($start, $total);
$image_name = $images[$random];
$out_banner = "<img src=\"" . $template_url . "/banner/" . $image_name ."\"/>";
echo $out_banner;



RE: [wordpress] recuperare immagini casuali, non sempre funziona - Pirosauro - 22-02-2010 20:11

che brutto codice... Dodgy

in ogni caso il bug è nel conteggio, mt_rand dovrebbe partire da 0 (e non da 1) e arrivare a $total - 1
le chiavi numeriche degli array partono da zero e sizeof ritorna il numero di elementi presenti, quindi se hai un array del tipo:
Codice PHP:
array(
  [
0] => img1,
  [
1] => img2,
  [
2] => img3
); 
il numero totale degli elementi sarà 3, ma la numerazione parte da 0, ergo il range sarà 0 - 2 (0, 1, 2)


RE: [wordpress] recuperare immagini casuali, non sempre funziona - karim - 23-02-2010 07:29

Sono d'accordo con te sul codice, è brutto, ma io non ho mai amato il php e quando ci devo fare qualcosa, sfoglio i manuali online.

Grazie per l'aiuto Pirosauro. Sei gentilissimo :-)